验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性安装tookkit需要一些依赖包yum install perl perl-DBI pe
千家信息网最后更新 2026年11月03日验证MySQL主从一致性(pt-table-checksum&pt-table-sync)percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性
安装tookkit需要一些依赖包
在Master上初始化实验数据
在Slave从库添加一个数据,模拟主从数据不一致的场景。
它会使用concat_ws函数将数据合并为一行,然后使用crc32函数生成校验码,最后将其插入percona库的checksums表中。

因为主从环境,这个数据会复制到Slave
也就是说Slave的percona.checksums表,存放的是主库数据的校验码。
所以在Slave对数据执行同样的校验,然后比对checksums表中的数据,就可以验证主从是否一致。
所以执行pt-table-checksum命令的帐号,至少需要有全库的只读权限和percona库的读写权限。
查看主从一致的情况

如果发生不一致,可以使用pt-table-sync命令修复。
需要注意的是这个命令需要在Slave从库执行。
使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。
也可以通过这个命令自动执行,不过这样会修改从库的数据,感觉不是太安全。
需要特别注意的是这两个命令执行的过程中,会对表上共享锁,所以生产环境要慎重选择执行时间。
参考:
http://nettedfish.sinaapp.com/blog/2013/06/04/check-replication-consistency-by-pt-table-checksum/
http://www.cnblogs.com/zhoujinyi/archive/2013/05/09/3067045.html
http://blog.chinaunix.net/uid-16844903-id-3360228.html
安装tookkit需要一些依赖包
- yum install perl perl-DBI perl-DBD-MySQL perl-IO-Socket-SSL perl-Time-HiRes -y
在Master上初始化实验数据
- create database mvbox;
- use mvbox;
- create table test(id int primary key,name varchar(20));
- insert into test values(1,'a'),(2,'b'),(3,'c'),(4,'d');
在Slave从库添加一个数据,模拟主从数据不一致的场景。
- insert into test values(5,'e');
它会使用concat_ws函数将数据合并为一行,然后使用crc32函数生成校验码,最后将其插入percona库的checksums表中。

因为主从环境,这个数据会复制到Slave
也就是说Slave的percona.checksums表,存放的是主库数据的校验码。
所以在Slave对数据执行同样的校验,然后比对checksums表中的数据,就可以验证主从是否一致。
所以执行pt-table-checksum命令的帐号,至少需要有全库的只读权限和percona库的读写权限。
- create user xx;
- GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO'xx'@'%' IDENTIFIED BY 'xx';
- grant all privileges on percona.* TO'xx'@'%' IDENTIFIED BY 'xx';
查看主从一致的情况

- TS :完成检查的时间。
- ERRORS :检查时候发生错误和警告的数量。
- DIFFS :0表示一致,1表示不一致。当指定--no-replicate-check时,会一直为0,当指定--replicate-check-only会显示不同的信息。
- ROWS :表的行数。
- CHUNKS :被划分到表中的块的数目。
- SKIPPED :由于错误或警告或过大,则跳过块的数目。
- TIME :执行的时间。
- TABLE :被检查的表名。
- --nocheck-replication-filters :不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。
- --no-check-binlog-format : 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。
- --replicate-check-only :只显示不同步的信息。
- --replicate= :把checksum的信息写入到指定表中,建议直接写到被检查的数据库当中。
- --databases= :指定需要被检查的数据库,多个则用逗号隔开。
- --tables= :指定需要被检查的表,多个用逗号隔开
- h=127.0.0.1 :Master的地址
- u=root :用户名
- p=123456:密码
- P=3306 :端口
如果发生不一致,可以使用pt-table-sync命令修复。
需要注意的是这个命令需要在Slave从库执行。
使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。
也可以通过这个命令自动执行,不过这样会修改从库的数据,感觉不是太安全。
需要特别注意的是这两个命令执行的过程中,会对表上共享锁,所以生产环境要慎重选择执行时间。
参考:
http://nettedfish.sinaapp.com/blog/2013/06/04/check-replication-consistency-by-pt-table-checksum/
http://www.cnblogs.com/zhoujinyi/archive/2013/05/09/3067045.html
http://blog.chinaunix.net/uid-16844903-id-3360228.html
数据
检查
一致
主从
命令
环境
信息
数据库
时间
验证
两个
函数
参数
多个
工具
建议
情况
数目
权限
模式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
互联网加科技
西安互联网科技
智慧科技互联网
互联网科技类展会
互联网科技生活的内容
上海电发互联网科技有限公司
阿里巴巴算科技企业还是互联网
银川新华互联网科技职业技术培训学校图片
浙江互联网科技研学营
消费医药和互联网科技
2021互联网科技公司排名
雨阳互联网卡科技有限公司
张召忠谈中国互联网科技
山东大美朱楼互联网科技有限公司
中国新注册互联网科技
上海万顺科技互联网有限公司招聘
北京品多多互联网科技有限公司
重庆科技产业互联网有哪些
广东猫王互联网科技有限公司电话
重庆互联网络科技
互联网科技小贷
互联网科技logo
黑科技闪耀互联网之光
坤平互联网科技
互联网科技大奖都有哪些公司
保险科技服务互联网营销体系
安徽九吞吴互联网科技有限公司
网互联网络科技
互联网大会出现的黑科技