- yum -y install perl-DBI perl-DBI-MySQL
- wget http://www.percona.com/redir/downloads/percona-toolkit/2.1.7/percona-toolkit-2.1.7.tar.gz
- tar zxf percona-toolkit-2.1.7.tar.gz
- perl Makefile.PL
- make
- make install
主从数据一致性检测工具:
pt-table-checksum
pt-table-checksum是一个在线验证主从数据一致性的工具,主要用于以下场景:
1. 数据迁移前后,进行数据一致性检查
2. 当主从复制出现问题,待修复完成后,对主从数据进行一致性检查
3. 把从库当成主库,进行数据更新,产生了"脏数据"
4. 定期校验
- 用法介绍:
- pt-table-checksum [OPTION...] [DSN]
- 参数解释
- DSN h='192.168.250.249',u='checksums',p='xxxx',P=3306
- -d
- 指定校验的库,多个库用逗号(,)分隔
- --nocheck-replication-filters
- 忽略replication-do-db规则
- --replicate=test.checksums
- 在test库下创建checksums表,并将数据写入
- --recursion-method=none
- 指定复制检查的方式,默认情况下使用SHOW PROCESSLIST,如果非标准的3306端口,就使用SHOW SLAVE HOSTS的方式,推荐使用dsn方式,手动指定
为了测试效果,将主从表的数据改的不一致:
- 主上:
- select * from a;
- +------+
- | b |
- +------+
- | 3 |
- +------+
- 从上:
- select * from a;
- +------+
- | b |
- +------+
- | 2 |
- +------+
然后使用pt-table-checksum测试效果:
- pt-table-checksum --nocheck-replication-filters --databases=wang --replicate=test.checksums --host=10.1.1.191 --port 3306 -utest -p123456 --no-check-binlog-format
- TS ERRORS DIFFS ROWS CHUNKS SKIPPED TIME TABLE
- 11-22T18:09:43 0 1 1 1 0 0.264 wang.a
- 11-22T18:09:43 0 0 1 1 0 0.012 wang.b
从结果可以看出diffs值为1。说明wang库的a表数据不一致。
暂时先到这里,下次再测试使主从数据一致的工具:
pt-table-sync