雙向同步(Master-Master)適用於雙節點熱備與讀寫分離。本文以 Windows 為例,詳細說明 my.ini 雙向配置、權限授予、啟動驗證與常見錯誤排查。
server-id=1server-id=2[mysqld]
server-id=1
log-bin=C:\MySQLback\binlog
binlog-do-db=test1
binlog-do-db=test2
binlog-do-db=test3
master-host=192.168.0.102
master-user=use102
master-password=usepwd102
master-port=3306
master-connect-retry=60
replicate-do-db=test1
replicate-do-db=test2
replicate-do-db=test3
[mysqld]
server-id=2
log-bin=C:\MySQLback\binlog
binlog-do-db=test1
binlog-do-db=test2
binlog-do-db=test3
master-host=192.168.0.101
master-user=use101
master-password=usepwd101
master-port=3306
master-connect-retry=60
replicate-do-db=test1
replicate-do-db=test2
replicate-do-db=test3
-- On Node A (給 B 用)
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*
TO 'use101'@'192.168.0.102' IDENTIFIED BY 'pwd101';
-- On Node B (給 A 用)
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.*
TO 'use102'@'192.168.0.101' IDENTIFIED BY 'pwd102';
關鍵:REPLICATION CLIENT 權限用於 SHOW SLAVE HOSTS,缺少會報 Access denied... need REPLICATION CLIENT privilege。
SLAVE START;SHOW MASTER STATUS;SHOW SLAVE STATUS\G 關注 Slave_IO_Running=Yes、Slave_SQL_Running=Yes、Seconds_Behind_Master=0| 錯誤現象 | 原因 | 解決 |
|---|---|---|
.err 日誌報 Access denied... REPLICATION SLAVE | 缺少 REPLICATION SLAVE 權限 | GRANT REPLICATION SLAVE ON *.* TO user@host |
SHOW SLAVE HOSTS 報 REPLICATION CLIENT 缺失 | 從庫需查詢主庫列表 | 補授 REPLICATION CLIENT 權限 |
| Seconds_Behind_Master 持續增長 | SQL 執行緒延遲 | 檢查長查詢、鎖爭用、硬體 I/O |
| 雙向寫入衝突 | 自增主鍵衝突 | 設定 auto_increment_offset/auto_increment_increment 錯開 |
sync_binlog=1、innodb_flush_log_at_trx_commit=1 保證持久化Slave_IO_Running/Slave_SQL_Running 告警CHECKSUM TABLE 驗證資料一致性雙向同步配置細節多,建議先在測試環境完整驗證再上線。