首页 > 其他 > 详细

pt-table-checksum和pt-table-sync的用法总结

时间:2015-10-30 15:28:55      阅读:215      评论:0      收藏:0      [点我收藏+]

在网上有好多关于pt-table-checksum和pt-table-sync的文章,详细介绍了工作原理和各个常用参数的详细信息,但是根据别人的贴的命令做测试的时候问题会遇到各种报错,由于公司线上环境经常会出现主从不一致的情况,所以把这些命令整理出来,以方便查阅。(这些命令在测试库上测试过,在线上跑过,目前没有发现问题,如果大家发现有问题的地方请留言,谢谢!)


写在前面:测试的时候主从统一用默认的3306端口,避免从库发现不了的问题

    授权一定要到位,从库一定要记得授权

    认真看错误提示,弄不清楚状况的时候打开debugPTDEBUG=1

    192.168.6.85为主,其它ip为从

    h=192.168.6.85,u=checksums,p=checksums 中间一定不能有空格,不然会报错,本人排查这个错误花了很长时间

    

一:sakila库的film_actor表的数据检测与同步

1,在主库和从库上面添加用户:

GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE ON *.* TO ‘checksums‘@‘192.168.6.85‘ IDENTIFIED BY ‘checksums‘;


2.检测sakila库的film_actor表的数据主从是否一致

PTDEBUG=1 pt-table-checksum --no-check-binlog-format --no-check-replication-filters --recursion-method=processlist --replicate=test.checksums --databases=sakila --tables=film_actor -h 192.168.6.85 -P3306 -u checksums -p checksums


3,根据checksum的结果恢复所有从库的film_actor数据

PTDEBUG=1 pt-table-sync --replicate=test.checksums --recursion-method=processlist --database=sakila   --tables=film_actor --port=3306 h=192.168.6.85,u=checksums,p=checksums --print --execute



------------------------------------------------------------------------------------------------------------------------------

二:检测tmp库数据是否一致

pt-table-checksum --no-check-binlog-format --no-check-replication-filters --recursion-method=processlist --replicate=test.checksums --databases=tmp  -h 192.168.6.85 -P3306 -u checksums -p checksums


1,根据checksum的结果恢复所有从库的数据

PTDEBUG=1 pt-table-sync --replicate=test.checksums --recursion-method=processlist --no-check-triggers --no-check-child-tables --no-foreign-key-checks --port=3306 h=192.168.6.85,u=checksums,p=checksums --print --execute

(有外键约束要加参数 --no-check-child-tables --no-foreign-key-checks,不然可能把子表所有的数据都删除掉)

(--no-check-triggers,不检测触发器)

2,根据checksum的结果只恢复192.168.6.91的数据

pt-table-sync --print  --execute --replicate=test.checksums --sync-to-master 192.168.6.91,u=checksums,p=checksums



3,恢复从库192.168.6.91的数据(这个从库所有的数据都和主保持一致,除了系统表和checksums表)

pt-table-sync --execute --print --sync-to-master 192.168.6.91,u=checksums,p=checksums



----------------------------------------------------------------------------------------------------------------------------

执行完pt-table-sync后可再执行一次pt-table-checksum检测主从数据是否一致,可以执行下面的sql语句,如果结果为空则说明主从数据一致

select  from test.checksums where master_cnt  this_cnt OR master_crc  this_crc OR ISNULL(master_crc)  ISNULL(this_crc);


pt-table-checksum和pt-table-sync的用法总结

原文:http://chenql.blog.51cto.com/8732050/1708079

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!