mysql主从恢复数据一致性(pt工具-pt-table-checksum和pt-table-sync)
### 安装pt工具(安装主库)
yum localinstall percona-toolkit-3.2.1-1.el7.x86_64.rpm
安装依赖
yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes perl -y
查看相关命令
pt-table-checksum --help
192.168.8.112(主)
192.168.8.110(从)新增加一条数据
192.168.8.111(从)
目前主从不一致
[root@localhost data]# pt-table-checksum --nocheck-replication-filters --replicate=check_data.checksums --no-check-binlog-format --databases=mysqtest --tables=runoob_tbl --user=qiao --password=root --port=3306
Checking if all tables can be checksummed ...
Starting checksum ...
TS ERRORS DIFFS ROWS DIFF_ROWS CHUNKS SKIPPED TIME TABLE
12-06T15:46:35 0 1 8 7 1 0 0.108 mysqtest.runoob_tbl
DIFFS 0 表示一致 1表示不一致
打印 --print
pt-table-sync --sync-to-master h=192.168.8.110,u=qiao,p=root,P=3306 --databases=mysqtest --tables=runoob_tbl --print
执行 --execute
pt-table-sync --sync-to-master h=192.168.8.110,u=qiao,p=root,P=3306 --databases=mysqtest --tables=runoob_tbl --execute
[root@localhost data]# pt-table-sync --sync-to-master h=192.168.8.110,u=qiao,p=root,P=3306 --databases=mysqtest --tables=runoob_tbl --print
DELETE FROM `mysqtest`.`runoob_tbl` WHERE `runoob_id`='9' LIMIT 1 /*percona-toolkit src_db:mysqtest src_tbl:runoob_tbl src_dsn:P=3306,h=192.168.8.112,p=...,u=qiao dst_db:mysqtest dst_tbl:runoob_tbl dst_dsn:P=3306,h=192.168.8.110,p=...,u=qiao lock:1 transaction:1 changing_src:1 replicate:0 bidirectional:0 pid:59730 user:root host:localhost.localdomain*/;
Wide character in print at /usr/bin/pt-table-sync line 10965. while doing mysqtest.runoob_tbl on 192.168.8.110
创建恢复数据不一致shell脚本
## vi pt-check-sync.sh
# chmod 777 pt-check-sync.sh
#!/usr/bin/env bash
NUM=`pt-table-checksum --nocheck-replication-filters --replicate=check_data.checksums --no-check-binlog-format --databases=mysqtest --tables=runoob_tbl --user=qiao --password=root |
awk 'NR>1{sum+=$3}END{print sum}'`
if [ $NUM -eq 0 ] ; then
echo "Data is ok!"
else
echo "Data is error!"
pt-table-sync --sync-to-master h=192.168.8.110,u=qiao,p=root,P=3306 --databases=mysqtest --print
pt-table-sync --sync-to-master h=192.168.8.110,u=qiao,p=root,P=3306 --databases=mysqtest --execute
pt-table-sync --sync-to-master h=192.168.8.111,u=qiao,p=root,P=3306 --databases=mysqtest --print
pt-table-sync --sync-to-master h=192.168.8.111,u=qiao,p=root,P=3306 --databases=mysqtest --execute
fi
创建定时任务
* * * * * /home/pt-check-sync.sh
测试OK
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: