一、MySQL 主從復制簡介
(1) MySQL 主從復制通過邏輯的 binlog 日志復制到要同步的服務器本地,然后由本地的線程讀取日志里面的 SQL 語句,重新應用到 MySQL 數據庫中
(2) 在復制過程中,一臺服務器充當主服務器,接收來自用戶的內容更新,而一個或多個其他的服務器充當從服務器,接收來自主服務器的 binlog 日志并解析出 SQL 語句更新到從服務器
(3) MySQL 主從復制可以有多種架構,有的既能充當從服務器又能充當主服務器,具體如圖
二、MySQL 主從復制的應用場景
(1) 從服務器作為主服務器的實時數據備份
(2) 主服務器實現讀寫分離,從服務器實現負載均衡
(3) 把多個從服務器根據業務重要性進行拆分訪問
三、MySQL 主從復制原理
(1) 在 Slave 服務器上執行 start slave 命令開啟主從復制開關,開始進行主從復制
(2) 此時,Slave 服務器的 I/O 線程會去請求連接 Master,并請求 binlog 日志文件
(3) Master 服務器接收到請求,負責復制的 I/O 線程會根據請求去讀取 binlog 日志文件然后返回給 Slave 服務器的 I/O 線程
(4) Slave 服務器的 I/O 線程接收到 binlog 日志內容,會將 binlog 日志內容寫到 Slave 服務器自身的中繼日志文件的最末端
(5) Slave 服務器的 SQL 線程會實時監控中繼日志文件,然后及時地把中繼日志文件中的內容解析成 SQL 語句,并執行應用這些 SQL 語句,完成主從復制
(6) 注意:在主從復制中,主庫有一個 I/O 線程,從庫有兩個線程,即 I/O 和 SQL 線程