MySQL数据一致性校验与修复工具pttablechecksum&pttablesync
MySQL主从复制是基于Binlog的逻辑复制,主从数据一致性会因为MySQL的Bug或者人为误操作等原因产生不一致,而这种不一致又因为逻辑复制的原因,可能隐藏了很久都不会被发现,只有在更新不一致的数据,导致主从复制中断,或者读写分离,业务读从库,发现数据不对时,才能被发现。
针对MySQL可能产生的数据不一致问题,Percona公司提供了两个工具,用于MySQL数据一致性的校验与修复。
- pt-table-checksum
- pt-table-sync
官方地址: https://www.percona.com/downloads/percona-toolkit/LATEST/
1. pt-table-checksum
用法:
pt-table-checksum --recursion-method="processlist" --nocheck-binlog-format --nocheck-replication-filters --databases=db h=127.0.0.1,u=admin,p=123456
- --databases 指定校验的数据库名称
- --tables=tb,tb1,也可以指定校验某个表或某几个表,
- h,u,p分别为主库ip,mysql用户名和密码
[root@localhost opt]# pt-table-checksum --recursion-method="processlist" --nocheck-binlog-format --nocheck-replication-filters --databases=db h=127.0.0.1,u=admin,p=123456
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE
02-27T10:09:36 0 1 16 0 1 0 0.351 db.tb
02-27T10:09:37 0 0 3 0 1 0 0.312 db.tb1
02-27T10:09:37 0 0 0 0 1 0 0.312 db.tb10
02-27T10:09:37 0 0 1 0 1 0 0.309 db.tb3
02-27T10:09:38 0 0 1 0 1 0 0.310 db.tb4
02-27T10:09:38 0 0 1 0 1 0 0.310 db.tb5
02-27T10:09:38 0 0 1 0 1 0 0.326 db.tb6
02-27T10:09:38 0 0 1 0 1 0 0.310 db.tb7
02-27T10:09:39 0 0 0 0 1 0 0.310 db.tb8
02-27T10:09:39 0 0 0 0 1 0 0.310 db.tb9