【前言】mysql由于软件本身的灵活性导致了可能主从数据库已经不一致了,但是数据库的主从监控却是正常的,前面已经介绍过pt-table-checksum工具可以检验出主从表中不一致的数据。
解决问题的能力比发现问题的能力更重要。本文档将介绍通过pt-table-sync处理主从数据库不一致的问题;
【说明】实验的环境和上次进行校验的环境和测试关联,测试之前请部署好环境;
【注意事项】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
|
以上的脚本中可以把--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管理 )
........................................................................................................................................................................