一、核心 SQL 速查
主庫管理
| 命令 | 用途 |
SHOW MASTER LOGS | 列出所有 Binlog 文件 |
SHOW MASTER STATUS | 當前 Binlog 文件與位置 |
SHOW SLAVE HOSTS | 已連接從庫信息 |
SHOW BINLOG EVENTS IN 'log_name' | 查看 Binlog 事件 |
RESET MASTER | 清空 Binlog 索引,新建第一個文件(慎用) |
PURGE MASTER LOGS TO 'log_name' | 刪除指定文件前的 Binlog |
PURGE MASTER LOGS BEFORE 'date' | 刪除指定日期前的 Binlog |
安全清理流程:① 主庫 SHOW MASTER LOGS、從庫 SHOW SLAVE STATUS 取延遲最大者的 Master_Log_File → ② 備份目標 Binlog → ③ PURGE。
從庫管理
| 命令 | 用途 |
CHANGE MASTER TO ... | 指定主庫連接參數、起始位置 |
RESET SLAVE | 清空 master.info/relay-log.info 及 Relay Log |
SHOW SLAVE STATUS | 核心監控視圖 |
START SLAVE [IO_THREAD|SQL_THREAD] | 啟動複製線程 |
STOP SLAVE [IO_THREAD|SQL_THREAD] | 停止複製線程 |
關鍵監控指標(SHOW SLAVE STATUS)
Slave_IO_Running/Slave_SQL_Running:必須均為 Yes。
Seconds_Behind_Master:延遲秒數(粗略)。
- 精確延遲計算:
Read_Master_Log_Pos - Exec_Master_Log_Pos(SQL 線程延遲);Master_Log_File_Position - Read_Master_Log_Pos(IO 線程延遲)。
二、典型應用場景
- 數據分發:跨 IDC 同步,就近讀取。
- 熱備份補充:複製 ≠ 備份,仍需物理/邏輯備份。
- 讀擴展:從庫分攤 SELECT,主庫專注寫入。
- 報表/審計:長時間掃描查詢移至從庫,不影響主庫業務。
- 升級驗證:新版本作從庫跑流量,驗證兼容性。
- 故障切換:提升從庫為主,最小化 RTO(配合 MHA/Orchestrator/GTID)。
三、關鍵文件
| 文件 | 位置 | 作用 |
master.info | 從庫數據目錄 | 主庫連接信息、Binlog 讀取位置 |
relay-log.info | 從庫數據目錄 | Relay Log 讀取/執行位置 |
binlog.index | 主庫數據目錄 | Binlog 文件列表 |
relay-bin.* | 從庫數據目錄 | IO 線程從主庫拉取的事件 |
relay-bin.index | 從庫數據目錄 | Relay Log 文件列表 |
四、複製流程
- 主庫:事務提交時按順序寫 Binlog(事件格式)。
- 從庫 IO 線程:連主庫 → 啟動 Binlog Dump 線程 → 讀取事件 → 寫入本地 Relay Log & 更新
master.info。
- 從庫 SQL 線程:讀取 Relay Log → 重放事件 → 更新
relay-log.info。
五、複製模式:STATEMENT vs ROW vs MIXED
| 維度 | STATEMENT (SBR) | ROW (RBR) |
| 記錄內容 | SQL 語句 | 行變更前後映像 |
| 優點 | 易審計、Binlog 小、易定位問題 | 幾乎無不可複製場景、鎖競爭少、CPU 低、數據一致性強、錯誤即時停止 |
| 缺點 | 存儲過程/觸發器/UDF/非確定性函數可能導致主備不一致 | Binlog 大、帶寬高、黑盒難調試、無法直接看到 SQL |
| 適用場景 | 簡單 SQL、低併發、需審計 | 高併發、複雜邏輯、嚴格一致性要求 |
MIXED:默認 STATEMENT,遇不安全語句自動切 ROW(binlog_format=MIXED)。生產建議:ROW 或 MIXED,配合 binlog_row_image=MINIMAL 減小體積。
避坑清單
- 從庫
read_only=ON + super_read_only=ON,防誤寫。
- 關鍵從庫
skip_slave_start=ON,人工介入啟動。
- 定期
pt-table-checksum 校驗一致性。
- 監控
Relay_Log_Space 防磁盤爆滿。
- GTID 模式簡化故障切換與拓撲變更(5.6+)。
複製是 MySQL 高可用基石,吃透原理與工具,才能在故障夜裡睡個安穩覺。