mysql主从数据一致性校验,常用的方法是Percona-Toolkit的组件pt-table-checksum,这东西怎么用网上一大堆,就不啰嗦了。主要说一下通过dsns方式发现从库的一种方式。
pt工具连接到主库后,默认是是通过show processlist,通过主从复制线程获取从库的信息,进而连接从库的。默认方式连接从库是有他的局限性的,以下场景没法使用:
场景:
1.非标准端口3306,或主从端口不一致;
2.多源复制搭建的主从;
3.阿里云、腾讯云上的主从关系,无法直接获取从库的信息;
通过dsns方式连接从库,只需要关注两点:
1.dsns表;
2.recursion-method参数项;
先说dsns表,表结构如下:
这个表可以建在任何服务器上,只要能被访问到就行,我习惯于将这样的工具放在总控服务器上,然后通过这台服务器管理所有mysql数据库。
+----+-----------+-----------------------------------------+
| id | parent_id | dsn |
+----+-----------+-----------------------------------------+
| 1 | 1 | h=192.168.11.73,u=chen,p=asd.123,P=3307 |
+----+-----------+-----------------------------------------+
pt-table-checksum --host='192.168.11.73' --user='check' --password='asd.123' --port=3306
--create-replicate-table --databases="jxbbs" --tables="im_group_msg"
--no-check-binlog-format --recursion-method "dsn=D=pt,t=dsns,h=192.168.11.92,u=op_dba,p=vqR9cGbEwKNuvy4Z"
--recurse=1 --nocheck-replication-filters --replicate-check