架構:兩台 Windows Server 2003 (192.168.100.217 / .218) 均安裝 MariaDB,互為主從,實現雙向複寫。生產環境建議搭配 Keepalived (Linux) 實現 VIP 故障切換。
# 217 server_id = 1 log-bin=binlog log-bin-index=binlog.index sync_binlog=0 # 218 server_id = 2 log-bin=binlog log-bin-index=binlog.index sync_binlog=0
關鍵:server_id 必須不同;啟用 binlog 是複寫前提。
GRANT REPLICATION SLAVE ON *.* TO 'testsync'@'%' IDENTIFIED BY 'abc123,'; FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 記下 File (如 binlog.000003) 與 Position (如 598),再 UNLOCK TABLES;。CHANGE MASTER TO MASTER_HOST='192.168.100.217', MASTER_PORT=3306, MASTER_USER='testsync', MASTER_PASSWORD='abc123,', MASTER_LOG_FILE='binlog.000003', MASTER_LOG_POS=598; START SLAVE; SHOW SLAVE STATUS\G
Slave_IO_Running: Yes 且 Slave_SQL_Running: Yes。binlog.000002, 323)。CHANGE MASTER TO ... MASTER_HOST='192.168.100.218' ... 並啟動。| 現象 | 原因 | 解決 |
|---|---|---|
| Slave_IO_Running: No | server_id 衝突 | 修改 my.ini 確保唯一 |
| Slave_IO_Running: No | MASTER_LOG_FILE/POS 錯誤 | 重新 SHOW MASTER STATUS 取正確值 |
| Slave_SQL_Running: No | SQL 執行錯誤 (如主鍵衝突) | 檢查 Last_SQL_Error,手動修正或跳過 |