首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Cluster 雙複寫通道架構實作:高可用與冗余設計全攻略

     編輯:MySQL 資料庫相關知識

場景與目標

在任務關鍵型系統中,單一複寫通道一旦中斷會導致資料同步停擺。部署 雙複寫通道(Dual Replication Channels)可提供冗余與高可用,架構需四台伺服器:兩台 Master、兩台 Slave。

節點規劃與 Server ID 分配

Server ID角色說明
1Primary Master (M)主複寫通道發送端
2Secondary Master (M')備用複寫通道發送端
3Primary Slave (S)主複寫通道接收端
4Secondary Slave (S')備用複寫通道接收端(平時待命)

啟動流程(關鍵:避免重複資料)

  1. 啟動 Primary Master
    shellM> mysqld --ndbcluster --server-id=1 \
    --log-bin --binlog-format=row &
  2. 啟動 Secondary Master
    shellM'> mysqld --ndbcluster --server-id=2 \
    --log-bin --binlog-format=row &
  3. 啟動 Primary Slave(暫不啟動複寫執行緒)
    shellS> mysqld --ndbcluster --server-id=3 \
    --skip-slave-start &
  4. 啟動 Secondary Slave(同樣暫不啟動)
    shellS'> mysqld --ndbcluster --server-id=4 \
    --skip-slave-start &
  5. 僅在 Primary Slave 執行 START SLAVE
    ⚠ 警告:絕對不可同時在兩台 Slave 執行 START SLAVE,否則會產生重複資料。Secondary Slave 僅在 Primary Slave 故障時手動或腳本介入啟動。

關鍵參數解析

  • --ndbcluster:啟用 NDB Cluster 儲存引擎。
  • --log-bin --binlog-format=row:開啟 Row-based 二進位日誌,確保複寫一致性。
  • --skip-slave-start:防止 Slave 啟動時自動連線,給予人工控制時機。

故障切換策略

監控腳本定期檢查 SHOW SLAVE STATUS 的 Slave_IO_Running 與 Slave_SQL_Running。若 Primary Slave 異常(延遲過大、執行緒停止),立即:

  1. 於 Primary Slave 執行 STOP SLAVE。
  2. 於 Secondary Slave 執行 START SLAVE 接管複寫。
  3. 更新應用端連線字串或透過 Proxy(如 MySQL Router、ProxySQL)自動切換讀流量。

最佳實踐提醒

  • 四台伺服器 server-id 必須全域唯一。
  • 網路層面建議採用專用複寫 VLAN,降低延遲與封包遺失。
  • 定期演練切換流程,驗證 RTO/RPO 指標。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved