首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 主從復制 UUID 衝突秒級修復:auto.cnf 變更與驗證全流程

     編輯:MySQL 綜合教學

MySQL 主從復制 UUID 衝突秒級修復:auto.cnf 變更與驗證全流程

因直接拷貝 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,破壞復制拓撲唯一性要求。

修復步驟

  1. 停止從庫 SQL 線程:STOP SLAVE;
  2. 編輯 auto.cnf:
    vi /var/lib/mysql/auto.cnf
    # 修改 server-uuid 為新生成的唯一值,例:
    # server-uuid=a1b2c3d4-e5f6-7890-abcd-ef1234567890
  3. 重啟 MySQL 服務:systemctl restart mysqld(或 service mysql restart)
  4. 啟動復制並驗證:
    START SLAVE;
    SHOW SLAVE STATUS\G
    # 確認 Slave_IO_Running: Yes, Slave_SQL_Running: Yes
  5. 生成新 UUID 方法

    # Linux 任意節點執行
    cat /proc/sys/kernel/random/uuid
    # 或
    uuidgen

    預防清單

    • 佈署新從庫時使用 mysqldump + CHANGE MASTER TO 而非直接拷貝數據目錄。
    • 若必須拷貝(如檔案系統快照),啟動前務必重置 auto.cnf。
    • 監控腳本定期檢查 SHOW SLAVE STATUS 中 Master_Server_Id 與 Master_UUID 是否預期一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved