`

关于MySQL主从不同步问题

 
阅读更多

今天线上出现了数据更新后在手机终端无法获取最新数据的问题。

仔细查看了一下,刚开始认为是ActiveMQ消息队列阻塞导致无法及时更新缓存(原来出现过1次)。

可手工删除redis中对应的key后还是无法重新reload数据,这才意识到是主从同步出了问题。

原来是某应用曾经连错mysql并向slave中新写入了几条数据,后来改为连master,并把写入slave的数据重新写入master表里。导致主从key自增主键不一致使主从同步失效。

简单记录一下解决办法:

1、用root账号登陆slave,执行show slave status;

此处打印出A表同步时insert错误信息(主键冲突)。

2、删除slave机A表中新写入的数据。

3、停止slave:stop slave

4、设置同步时忽略1步错误:set global sql_slave_skip_counter = 1;

5、重启slave:start slave; 再次查看show slave status,无异常信息。

6、连master,先将A表导出为sql脚本。删除A表新写入的数据,将sql脚本中删掉的数据修改为slave没有使用过的id,执行sql重新insert到master的A表.

7、连slave查看A表,发现master中写入的数据已同步,问题解决。

注:

查看当前表自增主键使用情况:show create table A

其中AUTO_INCREMENT表示当前表下一个将使用的主键值。

 

参考资料:

哪些原因会导致mysql主从数据不一致:http://www.dewen.org/q/670

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics