项目场景:
之前搭建了MYSQL主从同步,再今天对主库进行更新操作时,发现slave并没有同步更新。在查询matser和slave的信息后发现,之前修改slave的一些信息,导致slave是没有正常连接到我这个master的。
问题描述:
master执行了更新操作,但这些操作数据是在slave中不存在的。如,在slave未连接到master时,在master中创建了新的表。然后slave和master建立主从复制连接,我又在master中把新建立的表删除了。(slave与master未正常连接时,master创建表提交的事务不能在后续连接后同步给slave)这个删除表的事务信息同步给了slave,导致slave中Slave_SQL_Rnunning 的值是No。
原因分析:
删除表的事务信息同步给了slave,但是slave中没有master的表数据,导致slave报错,Slave_SQL_Rnunning 的值是No。
解决方案:
通过set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;命令可以跳过当前出错的语句,且需要逐条语句执行。先stop slave后,执行跳过语句,再继续start slave。
show slave status;
start slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
stop slave;
参考学习:
https://blog.csdn.net/weixin_34837388/article/details/113210694