续我的上篇博文: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表的记录,已与主库记录保持一致: