MySQL 複制是高可用、讀寫分離、異地災備的基石。本文系統梳理異步/半同步複制機制、三種 binlog 格式(SBR/RBR/MBR)優劣對比、主從配置標準化流程、關鍵監控指標、常見故障排查。
rpl_semi_sync_master=1, rpl_semi_sync_slave=1。| 維度 | STATEMENT (SBR) | ROW (RBR) | MIXED (MBR) |
|---|---|---|---|
| 記錄內容 | SQL 語句文本 | 行變更前後映像 | 一般語句用 SBR,非確定性用 RBR |
| 體積 | 小 | 大(批量更新極大) | 中等 |
| 非確定性函數 | 不安全 (NOW, UUID, RAND) | 安全 | 自動切換 RBR |
| 主鍵/唯一鍵衝突 | 可能導致從庫報錯 | 精確檢測衝突 | 安全 |
| 從庫回放效能 | 需重新解析/優化/執行 | 直接應用行變更,快 | 視實際格式 |
| 審計/審計 | 可讀 SQL,適合審計 | 二進制,需 mysqlbinlog 解析 | — |
| 跨版本複制 | 語法差異風險 | 行格式穩定,相容性好 | 推薦 |
建議: 生產環境預設 binlog_format = MIXED;純 OLTP 高併發可設 ROW 配合 binlog_row_image = MINIMAL 減小體積。
[mysqld] server-id = 1 log_bin = mysql-bin binlog_format = MIXED expire_logs_days = 7 max_binlog_size = 1G gtid_mode = ON enforce_gtid_consistency = ON # 半同步 rpl_semi_sync_master = 1 rpl_semi_sync_master_timeout = 1000 # ms # 可選:只複製特定庫 # binlog_do_db = biz_db # binlog_ignore_db = test,sys
[mysqld] server-id = 2 relay_log = relay-bin log_slave_updates = 1 # 級聯複制必開 read_only = 1 gtid_mode = ON enforce_gtid_consistency = ON # 半同步 rpl_semi_sync_slave = 1
-- 主庫 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'strong_pwd'; FLUSH PRIVILEGES; -- 從庫 (GTID 模式簡化) CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='strong_pwd', MASTER_AUTO_POSITION = 1; -- GTID 自動定位 START SLAVE;
| 指標 | 命令 | 健康標準 | 異常含義 |
|---|---|---|---|
| IO 線程狀態 | SHOW SLAVE STATUS\G → Slave_IO_Running | Yes | No = 網路/認證/主庫 binlog 損壞 |
| SQL 線程狀態 | Slave_SQL_Running | Yes | No = 回放報錯 (鍵衝突/結構差異/函數不存在) |
| 延遲秒數 | Seconds_Behind_Master | 0 或極小 | 大 = 從庫執行慢/主庫寫入快/網路延遲 |
| Relay Log 空間 | Relay_Log_Space | 穩定 | 持續增長 = SQL 線程阻塞 |
| 主庫 Binlog 位置 | SHOW MASTER STATUS | — | 對比從庫 Master_Log_File/Pos 判斷進度 |
SET GLOBAL sql_slave_skip_counter = 1; START SLAVE;(謹慎使用)或重新搭建從庫。bind-address、帳號密碼、MASTER_HOST 解析。SHOW PROCESSLIST 分析、考慮並行複制 slave_parallel_workers (5.6+)。STOP SLAVE; CHANGE MASTER TO MASTER_LOG_FILE=..., MASTER_LOG_POS=...; START SLAVE; 重新同步。MySQL 複制以 binlog 為核心,支援異步/半同步/GTID 多種模式。生產環境建議:ROW/MIXED 格式 + GTID 自動定位 + 半同步複制 + 並行回放 + 監控告警。標準化配置、定期演練故障切換、備份驗證,是保障數據高可用的鐵三角。