主從複製是 MySQL 高可用、讀寫分離、備份卸載的基石。本文系統梳理權限授權、Binlog、主從配置四大核心環節,含完整命令與驗證截圖說明。
SHOW MASTER STATUS 獲取文件名+位置-- 主庫創建同步賬號
CREATE USER 'repl'@'%' IDENTIFIED BY 'repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

[mysqld]
log-bin = mysql-bin
server-id = 1
重啟後驗證:SHOW VARIABLES LIKE 'log_bin'; → ON
| 命令 | 作用 |
|---|---|
FLUSH LOGS; | 切換新 Binlog 文件 |
SHOW MASTER STATUS; | 查看當前 Binlog 文件名+位置 |
RESET MASTER; | 清空所有 Binlog(慎用) |
PURGE MASTER LOGS TO 'mysql-bin.010'; | 刪除指定文件前的 Binlog |
只有 DML(增刪改)會記錄 Binlog,查詢不記錄。
[mysqld]
server-id = 1
log-bin = mysql-bin
# 可選:只同步指定庫
binlog-do-db = business_db
重啟主庫,記錄 SHOW MASTER STATUS 輸出的 File、Position。
[mysqld]
server-id = 2
relay-log = relay-bin
# 可選:只同步指定庫
replicate-do-db = business_db
重啟從庫。
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='repl_password',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS\G
關鍵指標均為 Yes 即成功:
Slave_IO_Running: YesSlave_SQL_Running: Yes

| 現象 | 可能原因 | 排查命令 |
|---|---|---|
| IO_Running=No | 網絡不通、賬號密碼錯、Binlog 文件/位置錯 | SHOW SLAVE STATUS\G 看 Last_IO_Error |
| SQL_Running=No | 數據衝突、表結構不一致、外鍵約束 | 看 Last_SQL_Error,跳過錯誤:SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; |
| Seconds_Behind_Master 大 | 從庫硬體弱、大事務、長 SQL、鎖衝突 | 優化從庫索引、升級硬體、並行複製(5.6+) |
gtid_mode=ON, enforce_gtid_consistency=ON,故障切換自動定位rpl_semi_sync_master=ON,減少數據丟失風險slave_parallel_workers=4(基於庫/邏輯時鐘)
Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running、Relay Log 磁盤佔用主從複製「配置易、維護難」,建立標準化 SOP 與監控體系,才能在故障時從容應對。