昨天在做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查看同步是否正确,还在查看数据是否真正的同步过去;
相关推荐: Mycat 1.6.5 分片导入时报2013代码解决方法
1.基本信息, mysql 5.7.22 节点: datanode1, datanode2, datanode3 mycat 1.6.5.2.故障现象: 导入千万级测试数据的时候报2013,2006,或者3009连接中断ERROR 2013 (HY000) a…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。