在网上查看解决办法 先stop slave,然后从新change master到报错位置。然后start slave

=============================================== stop slave ; CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000521', MASTER_LOG_POS=869528465; start slave; show slave status;

=============================================== 出现这种问题,判断是主从同步不一致问题。建议使用 percona-toolkit。 下面是实验步骤。

实验环境: master:192.168.162.168 slave:192.168.162.167

  1. 操作 master: MariaDB [test]> create table test (id int(10),name varchar(20),city varchar(30)); MariaDB [test]> insert into test (id,name,city) values (1,'aaa','aaa'),(2,'bbb','bbb'),(3,'ccc','ccc'); slave: MariaDB [test]> select * from test; +------+------+------+ | id | name | city | +------+------+------+ | 1 | aaa | aaa | | 2 | bbb | bbb | | 3 | ccc | ccc | +------+------+------+

MariaDB [test]> delete from test where id =1;

master: update test set name='abb' where id=1; slave: 报错如下图:

** 方法1:**

 MariaDB [test]> stop slave ;
MariaDB [test]> CHANGE MASTER TO MASTER_HOST='192.168.162.168',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000646',MASTER_LOG_POS=1801;
MariaDB [test]> start slave;

但是查询数据,表面主从一致,实际还是差数据。 master: slave:

方法2: 环境准备:

解决:使用强悍的瑞士×××percona-toolkit 工具 'pt-table-checksum','pt-table-sync' 注:这两个工具都是在Master上执行。 master:

pt-table-checksum --nocheck-replication-filters --databases=test --replicate=test.checksums --create-replicate-table --no-check-binlog-format --host=192.168.162.168 --port 3306 -uyang -p123456

--host=master_ip
--port mysql端口 --databases=test 问题数据库 --replicate= 在Master的test库上创建记录主从同步出现问题的表 --create-replicate-table
--no-check-binlog-format 不检查复制的binlog模式,要是binlog模式是ROW,则会报错。 --nocheck-replication-filters 不检查复制过滤器,建议启用。后面可以用--databases来指定需要检查的数据库。

出现主从不同步后,直接使用工具 'pt-table-checksum': 提示主从同步停了,等待主从同步开启。 使用'pt-table-sync' 工具:

依然提示主从同步已关闭。 那我们开启,借鉴方法1开启主从同步。 slave:

嗯主从依然不一致。 现在使用pt工具解决。

Master: 目标出来了,发现主从同步不一致,并且记录到表中。 Master:

pt-table-sync --replicate=test.checksums --databases=test h=192.168.162.168,u=yang,p=123456 h=192.168.162.167,u=yang,p=123456 --print
pt-table-sync --replicate=test.checksums --databases=test h=192.168.162.168,u=yang,p=123456 h=192.168.162.167,u=yang,p=123456 --execute

问题解决!

该问题是经典的1032问题。从网上搜索多中方法,最后结合经验处理问题。过程痛苦,结果完美。