首页 > 其他 > 详细

利用pt-table-sync进行数据不一致修复

时间:2015-03-12 02:15:56      阅读:381      评论:0      收藏:0      [点我收藏+]

【前言】mysql由于软件本身的灵活性导致了可能主从数据库已经不一致了,但是数据库的主从监控却是正常的,前面已经介绍过pt-table-checksum工具可以检验出主从表中不一致的数据。

解决问题的能力比发现问题的能力更重要。本文档将介绍通过pt-table-sync处理主从数据库不一致的问题;

 

【说明】实验的环境和上次进行校验的环境和测试关联,测试之前请部署好环境;

bubuko.com,布布扣

 

【注意事项】pt-table-sync需要在从数据库上面进行执行

 

【使用说明】使用print参数,他会在屏幕显示修复的SQL语句。然后可以手工确认并执行。

脚本【1】  基于checksums信息对Slave 192.168.47.165同步testdb.john表数据

pt-table-sync --print --replicate=test.checksums --databases=test --tables=john --sync-to-master h=192.168.47.165,u=root,p=123456

percona-toolkit src_db:test src_tbl:john src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:john dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28054 user:root host:mysql02*/;

 

脚本【2】 全量同步修复Slave的testdb.john表数据

[root@mysql02 bin]# pt-table-sync --print  --sync-to-master h=192.168.47.165,P=3306,u=root,p=123456 --database test --tables=john

REPLACE INTO `test`.`john`(`id`) VALUES (‘5‘) /*

percona-toolkit src_db:test src_tbl:john src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:john dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28054 user:root host:mysql02*/;

 

脚本【3】直接同步主从数据库test

[root@mysql02 bin]# pt-table-sync --print  --sync-to-master h=192.168.47.165,P=3306,u=root,p=123456 --database test


REPLACE INTO `test`.`checksums`(`db`, `tbl`, `chunk`, `chunk_time`, `chunk_index`, `lower_boundary`, `upper_boundary`, `this_crc`, `this_cnt`, `master_crc`, `master_cnt`, `ts`) VALUES (‘test‘, ‘john‘, ‘1‘, 0.004643, NULL, NULL, NULL, ‘42981178‘, ‘5‘, ‘42981178‘, ‘5‘, ‘2015-03-10 17:57:56‘) /*percona-toolkit src_db:test src_tbl:checksums src_dsn:P=3306,h=192.168.47.167,p=...,u=root dst_db:test dst_tbl:checksums dst_dsn:P=3306,h=192.168.47.165,p=...,u=root lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:28166 user:root host:mysql02*/;

 

以上的脚本中可以把--print替换成—execute,直接进行主从的数据库修复;

 

【注】用pt-table-sync修复的时候,必须保证被replace的表上有主键或唯一键,否则就会报以下的错误

Can‘t make changes on the master because no unique index exists at /usr/bin/pt-table-sync line 10655.  while doing test.john on 192.168.47.165

 

总结:pt-table-checksum 和 pt-table-sync 一起构成了mysql主从数据一致监控的两把利器,pt-table-sync在进行--execute的时候需要小心,一般情况都是进行print相应的sql语句,然后再到从数据库执行。

........................................................................................................................................................................

本文作者:JOHN,某上市公司DBA,业余时间专注于数据库的技术管理,从管理的角度去运用技术。

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 ) 

........................................................................................................................................................................

利用pt-table-sync进行数据不一致修复

原文:http://blog.itpub.net/12679300/viewspace-1455303/

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