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

MySQL 多級同步複制架構實戰:A→B→C 鏈式拓撲配置指南

     編輯:MySQL 綜合教學

多級同步拓撲架構

典型鏈式複制架構:A (Master) → B (Slave + Master) → C (Slave)

  • A → B:A 為 Master,B 為 Slave
  • B → C:B 同時扮演 Master(對 C)與 Slave(對 A)的雙重角色

關鍵點:中間節點 B 必須開啟 log-bin 並啟用 log-slave-updates,才能將從 A 複製來的變更記錄至自身的 Binlog,進而傳遞給下游 C。

核心配置參數

在 B 節點的 my.cnf 中加入:


# 啟用二進制日誌(Slave 非強制但多級同步必須)
log-bin = mysql-bin

# 關鍵:將 Slave 執行的更新同步寫入自身 Binlog
log-slave-updates = 1

重啟 MySQL 服務生效。

驗證同步鏈路

  1. 在 A 執行寫入操作:INSERT INTO test.t VALUES (1);
  2. 在 B 檢查:SHOW SLAVE STATUS\G 確認 Slave_IO_Running、Slave_SQL_Running 為 Yes,並查詢資料是否同步。
  3. 在 B 檢查 Binlog:SHOW BINLOG EVENTS IN 'mysql-bin.000001'; 確認包含來自 A 的事件。
  4. 在 C 檢查:資料是否同步到達。

常見問題與排查

現象可能原因解決方案
C 節點資料延遲極大 B 節點 log-slave-updates 未開啟 開啟參數並重啟 B 節點 MySQL
B 節點 Binlog 無 A 的事件 B 未設定 log-bin 或 log-slave-updates 補全配置、重啟、重新同步
C 節點報錯 Duplicate Entry 初始化時資料不一致、或重複同步 重新從 B 完整同步資料至 C
A→B 正常但 B→C 中斷 網路、防火牆、server-id 衝突 檢查 3306 連通性、確保三節點 server-id 唯一

擴展:星型與樹型拓撲

  • 一主多從:A 為 Master,B1、B2、B3 為 Slave,適合讀多寫少場景。
  • 樹型多級:A → B1 → C1、C2;A → B2 → C3,減輕 Master 負載。
  • 雙主互備:A ↔ B 雙向複制,需設定 auto_increment_offset/auto_increment_increment 避免主鍵衝突,生產環境建議單寫入點。

監控關鍵指標

  • Seconds_Behind_Master:延遲秒數,應接近 0。
  • Slave_IO_Running / Slave_SQL_Running:必須皆為 Yes。
  • Binlog 磁碟佔用:定期清理 expire_logs_days。
  • Relay Log 空間:監控 Relay_Log_Space。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved