!!!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.模拟数据不一致报错

 

删除主库上username=user1的数据:

[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表的记录,已与主库记录保持一致:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值