概述
本文為《MySQL 主從同步原理詳解》的純文本版,核心流程與原理完全一致。
三線程協作
- Master IO 線程:讀 Binlog 發送。
- Slave IO 線程:請求 Binlog,寫 Relay Log,記
master.info。
- Slave SQL 線程:讀 Relay Log,重放 SQL。
前置條件
Master 必須開啟 log-bin。
復制流程
- Slave IO 連 Master,請求指定位置後的 Binlog。
- Master IO 讀取 Binlog 返回(含文件名、位置)。
- Slave IO 寫 Relay Log,更新
master.info。
- Slave SQL 解析 Relay Log 重放,數據邏輯一致。
雙線程演進動機
- 早期單線程:拉取、解析、執行串行,延遲大。
- 單線程風險:Slave 處理慢時,Master 故障導致增量 Binlog 永久丟失。
- Yahoo! Jeremy Zawodny 提出雙線程:IO/SQL 分離,降低延遲與丟失窗口。
遺留風險
異步本質未變:延遲不可避免,非事務操作可能不一致。強一致需半同步或 MGR。