解决MySql主从同步不一致问题
Posted 17学习网
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决MySql主从同步不一致问题相关的知识,希望对你有一定的参考价值。
前言
由于误操作,master库其中一个binlog文件被删除,导致主从同步出问题,尝试通过Change master更新同步位置,但是报找不到binlog文件问题,在网上找到percona-toolkit,该工具主要用来检测主从一致性和修复不一致行,不过该工具必须是主从同步正常的状态下才能使用,这就和初衷不符。只能先解决同步问题。将主库的备份文件还原到从库,因为主库服务没有停,期间有一些数据变动需要再同步,这时候再用到percona-toolkit。来源参考:https://www.cnblogs.com/kevingrace/p/6261091.html
主要用到的两个功能是:pt-table-checksum和pt-table-sync。
步骤
percona-toolkit安装,安装到master
# wget https://www.percona.com/downloads/percona-toolkit/2.2.7/RPM/percona-toolkit-2.2.7-1.noarch.rpm
# rpm -ivh percona-toolkit-2.2.7-1.noarch.rpm
安装依赖的软件包
# yum install perl-IO-Socket-SSL perl-DBD-mysql perl-Time-HiRes perl perl-DBI -y
在主库执行授权
mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'sql_holder'@'3.9.8.13' identified by '123456';
mysql> flush privileges;在从库上执行授权
mysql> GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'sql_holder'@'3.9.8.13' identified by '123456';
mysql> flush privileges;在主库上对复制一致性进行检查:
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=gxb.checksums --create-replicate-table --databases=gxb --tables=t_com_main h=3.9.8.13,u=sql_holder,p=123456,P=3306
6. 在主库上执行修复:
pt-table-sync --replicate=gxb.checksums --databases=gxb --tables=t_com_main --charset=utf8 h=3.9.8.13,u=sql_holder,p=123456 h=3.9.8.12,u=sql_holder,p=123456 --print
--execute: 执行命令
--print: 打印,但不执行命令
第一个h是主库的IP,用户,密码,第二个是slave的IP,用户,密码
7. 再次检查一致性
pt-table-checksum --nocheck-replication-filters --no-check-binlog-format --replicate=gxb.checksums --create-replicate-table --databases=gxb --tables=t_com_main h=3.9.8.13,u=sql_holder,p=123456,P=3306
【注意】
Waiting for the --replicate table to replicate to XXX
问题出在 percona.checksums 表在从库不存在,根本原因是没有从主库同步过来,所以看一下从库是否延迟严重修复一致性后出现中文变成?的问题
执行第6步是需要加上关键参数--charset=utf8
以上是关于解决MySql主从同步不一致问题的主要内容,如果未能解决你的问题,请参考以下文章