您现在的位置是:首页 >学无止境 >MySQL主从同步错误恢复实战案例分享网站首页学无止境

MySQL主从同步错误恢复实战案例分享

dragonpeng2008 2024-06-17 10:18:00
简介MySQL主从同步错误恢复实战案例分享

一、背景介绍

前端时间遇到一个问题,开发更新SQL脚本,不小心更新错了数据库,本来应该在主库更新的SQL,被开发不小心更新到了一台从库上。开发执行完了没多久,我这边就收到了告警信息主从同步出现异常,连忙问了下开发情况,原来是更新错了数据库。

二、解决方案

既然出了告警,那我们就需要解决告警的问题,具体怎么解决呢?

首先我们分析下这个问题的原因,是因为开发在从库执行了本应该在主库执行的SQL,虽然后来这个SQL也在主库执行了一遍,但是因为从库已经执行了这个SQL,主从同步的时候,再次执行相同的SQL就会报错。

后来我分析,是不是我把从库插入的数据删除,然后让从库重新同步主库的数据就可以?

感觉理论上应该可行,但是因为不能在生产环境验证,就在测试环境进行了操作模拟。

三、解决步骤

1、停止从库的主从复制

首先登录从库数据库,直线下面的命令连接从数据库

$ mysql -uroot -h 127.0.0.1 -p

登录成功之后,执行下面的命令停止从库的主从同步

$ stop slave;

2、删除从库插入的SQL语句

因为之前执行的是插入语句,所以删除是比较容易的,找到之前插入的记录,然后执行删除就行了。但是需要注意,因为插入的数据会自动更新mysql的主键ID,所以需要将当前记录的最大主键ID修改为插入数据前的最大ID,也就是用当前的最大ID减去插入记录条数。

我是用的数据库管理工具Heidisql修改的,修改方法如下:

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。