!!!Linux下基于GTID的Mysql主从复制时,数据不一致的处理办法(mysql版本:mysql-5.7.24)——SQL线程异常

续我的上篇博文:https://mp.csdn.net/postedit/87896993

1.在主库和从库上准备数据

从库上操作:

[root@server2 mysql]# mysql -pXinjiaojiao+623
mysql> use westos;
mysql> update usertb set password='456' where username='user1';

查看主库usetb表上数据:

查看从库usertb表数据:

2.模拟数据不一致报错

删除主库上id=3的数据:

[root@server1 mysql]# mysql -pXinjiaojiao+523
mysql> use westos;
mysql> delete from usertb where username='user1';

  

查看主库usetb表上数据:

查看从库usertb表数据:

从库usertb表上数据没有发生变化,这是什么原因?

查看从库状态:

可以看到,从库上的slave_io线程还在工作,但是执行从库更新的slave_sql已经罢工了。从Last_error:可以看到因为主库执行delete操作,而从库找不到要删除的内容。

3.问题分析:

上面发现问题如下:

a.从库数据没有同步
b.从库SQL线程状态为no
c.从库SQL线程报错

4.问题处理:

从库上执行如下操作:

[root@server2 mysql]# mysql -uroot -pXinjiaojiao+623
mysql> stop slave;
mysql> set gtid_next="a6881d32-3f4a-11e9-8e98-52540016c159:3";    #跳过报错,其中gtid_next这个号是在主库上查看主库的状态得到的。
mysql> begin;commit;       #执行一个空事务代替报错事务
mysql> set gtid_next="AUTOMATIC"; 
mysql> start slave;

其中,gtid_next号是的查看:

[root@server1 mysql]# mysql -pXinjiaojiao+523

此时再次查看从库的状态:发现已经恢复正常

再手工删除从库上usertb表username='user1'的记录:

[root@server2 mysql]# mysql -uroot -pXinjiaojiao+623
mysql> use westos;
mysql> delete from usertb where username='user1';

最后查看从库test表的记录,已与主库记录保持一致:


猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/88208407