因直接拷貝 MySQL 數據目錄導致主從 server_uuid 相同,Slave_IO_Running 無法啟動,報錯:The slave I/O thread stops because master and slave have equal MySQL server UUIDs。本文提供定位、修改、驗證的標準化三步走方案。
SHOW SLAVE STATUS\G Slave_IO_Running: No Last_IO_Error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
MySQL 5.6+ 在數據目錄自動生成 auto.cnf,包含 [auto] server-uuid=...。直接拷貝數據目錄會帶走相同 UUID,破壞復制拓撲唯一性要求。
STOP SLAVE;auto.cnf:
vi /var/lib/mysql/auto.cnf # 修改 server-uuid 為新生成的唯一值,例: # server-uuid=a1b2c3d4-e5f6-7890-abcd-ef1234567890
systemctl restart mysqld(或 service mysql restart)START SLAVE; SHOW SLAVE STATUS\G # 確認 Slave_IO_Running: Yes, Slave_SQL_Running: Yes
# Linux 任意節點執行 cat /proc/sys/kernel/random/uuid # 或 uuidgen
mysqldump + CHANGE MASTER TO 而非直接拷貝數據目錄。auto.cnf。SHOW SLAVE STATUS 中 Master_Server_Id 與 Master_UUID 是否預期一致。