mysql引擎MEMORY主从同步失败_记一次mysql主从同步失败的踩坑记录

本文记录了一次MySQL主从同步失败的排查过程,包括Slave_IO_Running和Slave_SQL_Running未运行的情况,以及如何通过调整slave的position、设置sql_slave_skip_counter跳过错误事件、处理主键冲突等问题,最终成功修复主从同步。
摘要由CSDN通过智能技术生成

踩坑过程

昨天在开发电脑上搭建了mysql的主从服务,并尝试搞了一下读写分离的实现机制。想着今天再来搞一下数据分表。于是一大早来了后就开始搞起来。可是当测试的时候却发现,从库的数据怎么都写不进去,检查了好久,还以为新搞得的分表配置逻辑有问题。咦~没问题啊,是不是数据库的同步的问题啊?于是带着疑问我尝试了一下手动在master里添加一个数据,然后到slave库里查看一下有没有。果然,没有,那就真的是主从同步除了问题。忽然想到,今早来了后我把电脑重启了一下,再加上昨天有部分配置是通过命令生效的,没有写进配置文件。

于是果断cmd查了一下slave的slave状态

...

Slave_IO_Running: No

Slave_SQL_Running: No

...

哈哈,果然。

查了一下master的status

mysql>show master status;

File和position都有变化

于是重新配置了一下slave,配置步骤可以参考昨天的文章windows上mysql的主从配置

重新开启slave

mysql>start slave

查看slave状态

mysql>show slave status\G;

报错如下

Last_SQL_Error: Could not execute Delete_rows event on table user;

Can't find record in 'user',

Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND;

the event's master log mysql-bin.000003, end_log_pos 1651

看着报错像是想删除去找不到,哦哦,忘了自己在搞这个过程中,在主库加了数据删了又加,一定是binlog记录同步到slave,执行报的错。于是打算重新再搞一次slave,把position重置到master现在的位置。

终于一番操作,搞定。

问题总结

最后我又查了查百度,发现我这个问题其实有更简单的办法,就属于下面常见问题的第一种

问题一:

1、在master上删除一条记录,而slave上找不到

解决办法:

通过命令直接跳过同步

mysql>stop slave;

mysql>set global sql_slave_skip_counter=1;

mysql>start slave;

问题二:

2、slave已经有该主键的记录,又在master上插入了一条主键相同多的记录。

报错示例:

Last_SQL_Error: Could not execute Write_rows event on table user;

Duplicate entry '2' for key 'PRIMARY',

Error_code: 1062;

handler error HA_ERR_FOUND_DUPP_KEY; the event's master log mysql-bin.000003, end_log_pos 234

解决方案:

在slave上删除重复主键的数据

mysql>delete from user where id = 2;

问题三:

3、在master上更新一条记录,在slave上找不到该条数据。

报错示例:

Last_SQL_Error: Could not execute Update_rows event on table user;

Can't find record in 'user',

Error_code: 1032;

handler error HA_ERR_KEY_NOT_FOUND;

the event's master log mysql-bin.000003, end_log_pos 435

解决方案:

找到丢失的那条记录,从master上找出来insert到salve中,在重新开启slave

持续更新中…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值