Mysql主從複製機制原理

Mysql主從複製的用途

  • 實施災備,用於故障切換
  • 讀寫分離用於查詢服務
  • 備份,避免數據丟失

Mysql主從複製的條件

  • 主庫開啟binlog日誌(從庫需要從這裏面讀取)
  • 主從的Mysql server-id需要不同
  • 從庫服務器能連通主庫

Mysql主從複製原理

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