Mysql主從複製機制原理
- 2020 年 4 月 1 日
- 筆記
Mysql主從複製的用途
- 實施災備,用於故障切換
- 讀寫分離用於查詢服務
- 備份,避免數據丟失
Mysql主從複製的條件
- 主庫開啟binlog日誌(從庫需要從這裏面讀取)
- 主從的Mysql server-id需要不同
- 從庫服務器能連通主庫
Mysql主從複製原理

- 主庫接收用戶做crud操作,寫入數據庫,更新結果集到binlog中
- 主從同步是主找從的,從庫IO發起請求,主庫的主進程看從庫 master change中給的參數是否合法,如果合法主進程交給IO進程執行 3 操作,否則拒絕處理
- 主庫根據master的位置點,從這個位置點的binlog日誌一直到binlog日誌最後,將其準備發送給從庫。
- 將找到的binlog日誌發送個i從庫,並且還會發送新的日誌點。
- 從庫接收到binlog日誌,將其寫入realy-log(中繼日誌)中。
- 從庫IO進程再向master info保存主庫傳過來的最後的binlog日誌的日誌位置點。
- 從庫IO時循環發起請求的,發了再要,不會管SQL讀取中繼日誌的操作。從庫IO根據新的日誌點,向主庫發起請求,主庫執行 3 4 操作,再發送新的binlog給從庫,從庫再執行5操作。
- 其實第一次向relay-log中放數據時候,SQL進程就已經知道,SQL進程將relay-log中的SQL語句轉換成數據,寫入從庫,從而實現同步。
- 從庫SQL線程讀取中計日誌,並不會一次性讀完,會把讀取到的日誌點存放到relay-log.info中