核心配置區塊
伺服器身份
server-id = 1 # 每台唯一
從庫日誌與鏈式複寫
log-slave-updates # 啟用從庫二進制日誌,支援 A->B->C 鏈式
唯讀保護
read-only = 1 # 1=唯讀(超級用戶除外), 0=讀寫
複寫過濾:庫級
replicate-do-db = dbname # 只複寫指定庫
replicate-wild-do-db = dbname% # 通配符匹配庫
replicate-ignore-db = dbname # 排除庫
replicate-wild-ignore-db = dbname%
複寫過濾:表級
replicate-do-table = tblname
replicate-wild-do-table = tblname%
replicate-ignore-table = tblname
replicate-wild-ignore-table = tblname%
錯誤容忍
slave-skip-errors = all # 遇錯誤跳過繼續,謹慎使用!生產建議具體錯誤碼
二進制日誌同步持久化
sync_binlog = 1 # 每次提交同步刷盤,最安全,效能稍影響
中繼日誌自動清理
relay-log-purge = 1 # 複寫完成的 SQL 立即從中繼日誌清理
從庫向主庫註冊資訊
report-host = hostname # 用於 SHOW SLAVE HOSTS 顯示
主庫連線資訊(舊式寫入配置檔,新版建議 CHANGE MASTER TO)
master-host = hostname
master-port = 3306
master-user = dbuser
master-password = password
master-connect-retry = 60
主庫二進制日誌過濾
log-bin = mysql-bin.log
binlog-do-db = dbname
binlog-ignore-db = dbname
版本演進提醒
- MySQL 5.5+:棄用配置檔寫主庫連線資訊,改用
CHANGE MASTER TO 動態設定,支援不重啟切換主庫。
- MySQL 5.6+:引入 GTID,配置更簡單(
MASTER_AUTO_POSITION=1)。
- MySQL 8.0+:
log-slave-updates 預設開啟,sync_binlog=1 預設開啟。
生產建議
- 優先用
CHANGE MASTER TO 管理連線資訊。
- 複寫過濾慎用,易導致主從不一致;傾向全量複寫,應用層邏輯隔離。
slave-skip-errors 仅作緊急救援,事後必須數據校驗修復。
- 監控
Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running。