利用pt-table-checksum检查主从数据是否一致

pt-table-checksum

首先这个工具是percona-toolkit里的
使用场景
当主从复制碰到数据不一致而报错时(error 1062,1032等),我们通过一些方法去解决了这个报错,让主从重新正常同步,这时我们最好在当天业务低峰期去检查一下主从数据是否一致,这时我们就得用到这个pt-table-checksum工具。

测试环境:
主:192.168.181.200 3306
从:192.168.181.201 3307

使用步骤:
下载percona-toolkit的安装包
我们可以去官网下载:https://www.percona.com/downloads/percona-toolkit/LATEST/
在这里插入图片描述
直接rpm -ivh这个rpm包就可以了
在这里插入图片描述
这边发现我缺少一个依赖包,我们可以去rpmfind.net这个网站去下载
在这里插入图片描述
搜索自己需要的包,然后下载就可以了
在这里插入图片描述
这样就安装成功了

使用命令:
pt-table-checksum --recursion-method=“processlist” --replicate=“test.checksums” --host=‘192.168.181.200’ --port=3306 --user=‘root’ --password=‘123456’ --databases=test --no-check-binlog-format

recursion-method="processlist"表示用 processlist的方式去发现从库
replicate="test.checksums"表示存储校验数据的表用test库下的checksums表,这个表会自动创建
no-check-binlog-format表示不检查日志
其他端口号一些主机用户信息就不用解释了吧

在这里插入图片描述
使用该命令发现无法连接从库,原因是因为recursion-method="processlist"方法的使用场景仅限主从端口号一样的情况,我这边主库用的是3306端口,从库用的是3307端口

解决方案:
在主库上新建一张表:
CREATE TABLE dsns ( id int(11) NOT NULL AUTO_INCREMENT, parent_id int(11) DEFAULT NULL, dsn varchar(255) NOT NULL, PRIMARY KEY (id) );

插入从库的信息:
INSERT INTO dsns (parent_id,dsn) values(1,‘h=192.168.181.201,u=root,p=123456,P=3307’);

recursion-method参数使用dsn方式,通过dsns表来发现从库
pt-table-checksum --recursion-method=dsn=h=192.168.181.200,D=test,t=dsns --replicate=“test.checksums” --host=‘192.168.181.200’ --port=3306 --user=‘root’ --password=‘123456’ --databases=test --no-check-binlog-format

在这里插入图片描述
这样就可以检查主从数据是否一致了,我这边是手动在从库的sbtest1表是插入了一些数据,所以diffs那边会显示为1,就表示这张里有数据不一致。

至于如何去恢复,我们可以用pt-table-sync工具去恢复,博主下次有时间的话会写一篇关于pt-table-sync工具的使用文章。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值