昨天在做MySQL切换遇到一个诡异的想象,切换前后的结构图如下:
当我把一切都切换好之后,应其他需求,重启了04上的MySQL,然后显示奴隶状态\ G发现报错:
Last_IO_Error:, Fatal 错误:,,slave I/O thread stops because master 以及slave have equal MySQL server id;, these ids must be different for replication 用work (一、从而——replicate-same-server-id option must be used 提醒slave but 却;能够does not always make 意义;,please check 从而manual before using 它)。
查看了一下03/04的server_id才发现,原来它们的server_id相同,我们知道,主/从的server_id是不能相同的,但是为什么在我重启之前我显示奴隶状态\ G的时候没有发现报错? ? ?并且我特别检查了一奴隶几下个参数:
Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 38593 Relay_Master_Log_File: mysql-bin.000001 Exec_Master_Log_Pos: 38593年,
表示奴隶已经完全追上的主人,并且通过SQL_thread线程执行。
问题:在server_id相同的情况下,奴隶为什么之前没有报错呢,并且还可以继续应用大师的binlog呢? ? ?
废话不多说了,测试如下:
在一个主/从环境下,刚开始server_id不同,一切都很正常,数据也可以同步过去,我奴隶的server_id修改成与主的相同:
主: mysql>, select @@server_id; + - - - - - - - - - - - - - + | |,@@server_id  + - - - - - - - - - - - - - + |,,,,,,583306 | + - - - - - - - - - - - - - + 1,row set 拷贝;(0.00,sec) 奴隶: mysql>, select @@server_id; + - - - - - - - - - - - - - + | |,@@server_id  + - - - - - - - - - - - - - + |,,,,,,593306 | + - - - - - - - - - - - - - + 1,row set 拷贝;(0.00,sec) mysql>, set global  server_id=583306; mysql>, select @@server_id; + - - - - - - - - - - - - - + | |,@@server_id  + - - - - - - - - - - - - - + |,,,,,,583306 | + - - - - - - - - - - - - - + 1,row set 拷贝;(0.00,sec)
然后显示奴隶状态\ G,还没有报错;
于是我在主人上插入了一条数据,观察一下奴隶有没有同步过去,显示奴隶状态\ G发现,位置的值变化了,但是当我选择这个表的时候,确没有找到刚才插入的那条数据,说明数据没有同步过去。
Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 38857 Relay_Master_Log_File: mysql-bin.000001 Exec_Master_Log_Pos: 38857年,
通过显示relaylog事件命令也可以看的到,插入语句并没有写到中继日志中,所以数据没有同步过来,这就说明当我们修改server_id之后,显示奴隶状态\ G显示的结果并不是这么可靠,
mysql>, SHOW RELAYLOG EVENTS 拷贝& # 39;sht-sgmhadoopdn-02-relay-bin.000005& # 39;; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |,Log_name ,,,,,,,,,,,,,,,,,,,,,,,,,,, |, Pos , |, Event_type ,,,, |, Server_id |, End_log_pos |, Info ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | |,sht-sgmhadoopdn-02-relay-bin.000005 ,,, 4, |, Format_desc ,,, |,,,, 593306, |,,,,,,,,, 123, |, Server 版本:,5.7.21-log,, Binlog 版本:,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,| | |,sht-sgmhadoopdn-02-relay-bin.000005 拖延,123,|,Previous_gtids |,,,, 593306, |,,,,,,,,, 194, |, 8 b94d944 - 34 - c8 - 11 - e8 - 9 - e15 - 0050568211 - bd: 1 - 144 -,,,,,,,,,,,,,,,,,,,,,,,,, | null null null null null null null null null null null null null null null null null null主/从相同server_id引起的同步失败