master/slave 相同server_id引起的同步失败


昨天在做MySQL SwitchOver遇到一个诡异的想象,切换前后的结构图如下:
当我把一切都切换好之后,应其他需求,重启了04上的mysql,然后show slave statusG发现报错:查看了一下03/04的server_id才发现,原来它们的server_id相同,我们知道,master/slave的server_id是不能相同的,但是为什么在我重启之前我show slave statusG的时候没有发现报错??? 并且我特别检查了一下slave几个参数:表示slave已经完全追上master,并且通过SQL_thread线程执行。
问题:在server_id相同的情况下,slave为什么之前没有报错呢,并且还可以继续应用master的binlog呢???
废话不多说了,测试如下:
在一个master/slave环境下,刚开始server_id不同,一切都很正常,数据也可以同步过去,我slave的server_id修改成与master的相同:
然后show slave statusG,还没有报错;于是我在master上insert了一条数据,观察一下slave有没有同步过去,show slave statusG 发现,position的值变化了,但是当我select这个表的时候,确没有找到刚才插入的那条数据,说明数据没有同步过去。
通过show relaylog events命令也可以看到,insert语句并没有写到relay log中,所以数据没有同步过来,这就说明当我们修改server_id之后,show slave statusG显示的结果并不是这么可靠,最后当我stop slave; && start slave;之后,就出现了文章一开开发云主机域名始报错的server_id相同的错误。

总结:(1)master/slave要保证server_id不同;(2)当修改server_id之后,需要执行stop/start slave;最好重启mysql数据库;(3)不要仅仅通过show slave statusG查看同步是否正确,还在查看数据是否真正的同步过去;

相关推荐: 基于mysql5.7 搭建mysql_InnoDB_clus

本文按照生产环境的标准来搭建 mysql InnoDB cluster集群 非mysql 官网的Sandbox 模拟搭建环境:centos7 x64 最小安装因为文档中含有很多截图,上传图片比较麻烦,我将文档转换成了PDF放在附件中提交,文档中总结了我研究时踩…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/09 17:19
Next 06/09 17:25

相关推荐