在任務關鍵型系統中,單一複寫通道一旦中斷會導致資料同步停擺。部署 雙複寫通道(Dual Replication Channels)可提供冗余與高可用,架構需四台伺服器:兩台 Master、兩台 Slave。
| Server ID | 角色 | 說明 |
|---|---|---|
| 1 | Primary Master (M) | 主複寫通道發送端 |
| 2 | Secondary Master (M') | 備用複寫通道發送端 |
| 3 | Primary Slave (S) | 主複寫通道接收端 |
| 4 | Secondary Slave (S') | 備用複寫通道接收端(平時待命) |
shellM> mysqld --ndbcluster --server-id=1 \
--log-bin --binlog-format=row &
shellM'> mysqld --ndbcluster --server-id=2 \
--log-bin --binlog-format=row &
shellS> mysqld --ndbcluster --server-id=3 \
--skip-slave-start &
shellS'> mysqld --ndbcluster --server-id=4 \
--skip-slave-start &
⚠ 警告:絕對不可同時在兩台 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 異常(延遲過大、執行緒停止),立即:
STOP SLAVE。START SLAVE 接管複寫。server-id 必須全域唯一。