验证MySQL主从一致性(pt-table-checksum&pt-table-sync)
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,percona-toolkit-2.2.8-1.noarch.rpm有两个工具可以验证MySQL主从数据的一致性安装tookkit需要一些依赖包yum install perl perl-DBI pe
千家信息网最后更新 2025年11月08日验证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安全错误
数据库的锁怎样保障安全
数据源静态数据库
阿里云2t流量服务器
广西蓝牙软件开发
网络安全主题黑板报.
不自动建数据库
服务器共享硬盘.
邯郸软件开发锦诚
网络安全教育要求
深圳 互联网 未来科技城
网络安全917手抄报
数据库建设新消息
国外有什么网络安全软件
电脑网络安全科技馆设计
福建售后备件管理软件开发
5g和6g箭网络技术之简的笑系
福建pdu服务器电源厂商有哪些
国家网络安全学院基地地址
程序员服务器代码安全
软件开发学习多久
科技部互联网政策
湖州管理系统软件开发
前海潮人互联网科技有限公司
千锋网络安全教程
数据库查询用户出现的次数
常规网络安全基线
残疾人数据库安全管理系统
阿里云图片服务器价格
网络安全行业的协会
哈姆雷特笔记软件开发
榆林市第四届网络安全周启动