1. 程式人生 > 實用技巧 >MySQL學習筆記(28):複製

MySQL學習筆記(28):複製

本文更新於2020-05-04,使用MySQL 5.7,作業系統為Deepin 15.4。

目錄

複製是指將主庫的DDL和DML操作通過二進位制日誌傳到從庫上,然後從庫對這些日誌重做,從而使得主庫和從庫的資料保持同步。

複製的優點有:

  • 如果主庫出現問題,可以快速切換到從庫提供服務。
  • 可以在從庫上執行查詢操作,降低主庫的訪問壓力。由於MySQL實現的是非同步複製,在從庫進行查詢需考慮到資料的差異。
  • 可以在從庫上執行備份,以避免備份期間影響主庫的服務。

MySQL通過3個執行緒來完成主從庫間的資料複製:其中Binlog Dump執行緒跑在主庫上,I/O執行緒和SQL執行緒跑在從庫上。可通過SHOW PROCESSLIST

檢視執行緒的狀態。

MySQL的複製是主庫主動推送日誌到從庫去的。複製過程涉及兩類非常重要的日誌檔案:二進位制日誌檔案(Binlog)和中繼日誌檔案(Relay Log)。中繼日誌檔案的檔案格式、內容和二進位制日誌檔案一樣,區別在於其在執行完後會自動刪除。

為了保證從庫崩潰後,從庫的I/O執行緒和SQL執行緒仍能知道從哪裡開始複製,從庫預設還會建立兩個日誌檔案master.info和relay-log.info,分別記錄了I/O執行緒當前讀取主庫二進位制日誌的進度和SQL執行緒應用中繼日誌的進度。通過SHOW SLAVE STATUS可檢視當前從庫複製的狀態。

MySQL支援4種複製模式:基於SQL語句的複製(SBR)、基於行資料的複製(RBR)、混合複製(對安全的SQL採用SBR,對非安全的SQL使用RBR)、使用全域性事務ID(GTIDs)的複製。

MySQL支援3種日誌格式:基於SQL語句的日誌格式(SBL)、基於行資料的日誌格式(RBL)、混合格式。

複製的常見架構有:

  • 一主多從複製架構
  • 多級複製架構:可將二級主庫儲存引擎設為BLACKHOLE
  • 雙主複製/Dual Master架構:適用於需要主從切換的場景,可在此基礎上做雙主多級複製架構。

複製方式有兩種:非同步複製、半同步複製。

啟動選項

  • --log-slave-updates:設定從庫的更新操作是否寫二進位制日誌。如果該從庫同時也作為主庫,就需要開啟這個選項。其需要和--log-bin一起使用。
  • --master-connect-retry:設定在和主庫的連線丟失時重試的時間間隔。
  • --read-only:設定從庫只能接受root的更新操作。
  • --replicate-do-db:指定從庫複製的資料庫。
  • --replicate-do-table:指定從庫複製的表。
  • --replicate-ignore-db:指定從庫忽略複製的資料庫。
  • --replicate-ignore-table:指定從庫忽略複製的表。
  • --replicate-wild-go-table:以萬用字元方式指定從庫複製的表。
  • --replicate-wild-ignore-table:以萬用字元方式指定從庫忽略複製的表。
  • --slave-skip-errors:定義複製過程中從庫可以自動跳過的錯誤號。

管理維護

暫略。