使用pt-table-checksum 3.6.0避坑指南

3.6.0在使用dsn的情况下存在bug,最后回退3.4.0版本

创建ptuser用户
#使用验证算法,否则默认会报错
#创建用户
 create user 'ptuser'@'%' identified with  sha256_password  by "你的密码";
#发现用dsn还是会报对应错误
#授权

GRANT CREATE,INSERT,SELECT,DELETE,UPDATE,LOCK TABLES,PROCESS,SUPER,REPLICATION SLAVE ON *.* TO 'ptuser'@'%';

#执行如下命令  校验nacos主从是否一致
pt-table-checksum --explain --nocheck-replication-filters --no-check-binlog-format  --replicate=test.checksums --recursion-method=hosts --databases=nacos --host=localhost --user=ptuser --port=13306 --ask-pass
加了explain不写入checksums表。
去除explain选项
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format  --replicate=test.checksums --recursion-method=hosts --databases=nacos --host=localhost --user=ptuser --port=13306 --ask-pass
提示无法发现slave,查询得知:
recursion-method 如果使用hosts 需要更改从库参数,并重新启动。
因此使用dsn方式。
主库创建percona相关库及表
create database percona_schema;
CREATE TABLE percona_schema.dsns ( id int(11) NOT NULL AUTO_INCREMENT, parent_id int(11) DEFAULT NULL, dsn varchar(255) NOT NULL, PRIMARY KEY (id));
#插入从库记录
INSERT INTO percona_schema.dsns(dsn) VALUES ('h=10.255.216.78,P=13306,u=ptuser,p=你的密码'); #将从库的DSN信息写入DSN表
退出数据库,使用如下命令  
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format  --replicate=test.checksums --recursion-method dsn=t=percona_schema.dsns --databases=nacos --host=localhost --user=ptuser --port=13306 --ask-pass
报错
7-05T16:13:00 Error checksumming table nacos.permissions: DBI connect(';;mysql_read_default_group=client','',...) failed: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory at /bin/pt-table-checksum line 1639.
更改用户认证方式为native试一下:
ALTER USER  'ptuser'@'%'  IDENTIFIED WITH 'mysql_native_password' BY '你的密码';
flush privileges;
还是报错。查看插件都已经改过来了
查看perl-DBD版本
[root@CQ2-LM9601028 ~]# rpm -qa|grep perl-DBD perl-DBD-MySQL-4.023-6.el7.x86_64
查看链接:https://perconadev.atlassian.net/browse/PT-1724
似乎要升级一下插件
http://repo.percona.com/tools/yum/experimental/7/RPMS/x86_64/perl-DBD-MySQL-4.050-4.el7.x86_64.rpm

 主从库升级后,还是报错
Error checksumming table nacos.config_info: DBI connect(';;mysql_read_default_group=client','',...) failed: Access denied for user 'root'@'localhost' (using password: NO) at /bin/pt-table-checksum line 1639.
根本不管连接的用户,发现海外用户有类似报告https://perconadev.atlassian.net/browse/PT-2250
 
退回 3.4.0版本。

回退一个rpm包

rpm -Uvh --oldpackage percona-toolkit-3.4.0-3.el7.x86_64.rpm


 执行如上命令
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format  --replicate=test.checksums --recursion-method dsn=t=percona_schema.dsns --databases=nacos --host=localhost --user=ptuser --port=13306 --ask-pass

成功,发现记录不一样。使用同步工具

pt-table-sync修复

由于是生产库,数据量很小,直接重搭。
通过重新导入,再次校验,成功。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值