在主(master)上通过执行校验的查询对复制的一致性进行检查,对比主从的校验值,从而产生结果。
下面通过实际的例子来解释该工具如何使用:
主库(10.8.23.209)数据:
从库(10.8.23.208)数据:
从库(10.8.23.210)数据:
很明显主备数据不一致,我们使用工具来检测下:
校验命令参数解释:
校验结果字段解释:
好了,命令以及常用参数都介绍了,一起解释下上面执行的效果,通过DIFFS 是1 就可以看出主从的表数据不一致。怎么不一致呢? 通过指定—replicate=test.checksums 参数,就说明把检查信息都写到了checksums表中。
进入备库(10.8.23.208)中查看checksums表的信息:
进入备库(10.8.23.210)中查看checksums表的信息:
通过上面找到了这些不一致的数据,如何修复呢?利用另外一个工具 pt-table-sync。
高效的同步MySQL表之间的数据,他可以做单向和双向同步的表数据。他可以同步单个表,也可以同步整个库。它不同步表结构、索引、或任何其他模式对象。所以在修复一致性之前需要保证他们表存在。接着上面的复制情况,主库和从库的aaa表数据不一致,需要修复。
参数解释:
命令介绍完了,一起解释下执行的效果:通过(--print)打印出来了修复数据的sql语句,可以手动的去从行执行,让他们数据保持一致性。那能否直接执行?当然可以,通过(--execute)
没发现任何异常,然后检查主从数据的一致性:
主库(10.8.23.209)数据:
从库(10.8.23.208)数据:
从库(10.8.23.210)数据:
OK,数据已经保持一致了。
不过建议还是--print 打印出来的好,这样就可以知道那些数据有问题,可以人为的干预下。
不然直接执行了,出现问题之后不好处理。总之还是在处理之前做好数据的备份工作。
主从需要安装相同的mysql8版本。
在主机上创建用户
修改配置
vim /etc/my.cnf
重启
systemctl restart mysqld
查看主机的节点信息
show master status\G
修改配置
vim /etc/my.cnf
重启
systemctl restart mysqld
根据主机的节点信息修改以下指令
change master to master_host='192.168.1.81',master_user='lucien',master_password='123456',master_port=3306,master_log_file='lucien_logbin.000001',master_log_pos=34484,master_connect_retry=30
启动
start slave
定时脚本,每1小时执行一次
vim /etc/cron.hourly/lucien_hour.sh
chmod +x lucien_hour.sh
自恢复脚本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)