MySQL Replication的複製執行緒介紹

dbasdk發表於2017-05-20
MySQL Replication由以下執行緒組成:
(1).binlog Dump執行緒
Binlog Dump執行緒執行在主伺服器上,可以透過語句show processlist來檢視該執行緒是否執行,它負責將主伺服器上二進位制日誌檔案中的內容傳送給從伺服器的I/O執行緒。Binlog Dump執行緒同時還會給每個將要傳輸的事件加鎖,一旦事件傳輸完畢鎖就會立即釋放。

(2).I/O執行緒
當從伺服器端執行start slave語句後,便會執行一個I/O執行緒。它將會與主伺服器建立一個連線,同時會向主伺服器發出更新請求,要求將主伺服器上的二進位制日誌檔案中更新過的事件傳送給此程式。之後,I/O執行緒會將傳遞過來的更新複製到本地Relay Log的日誌中,透過
語句show slave status來檢視I/O執行緒的狀態,Slave_IO_Running為此執行緒的狀態引數。

(3).SQL執行緒
SQL執行緒負責讀取Relay Log日誌中的更新事件,並將這些事件挨個執行,使從伺服器上的資料庫得到更新,同樣SQL執行緒也要一個狀態引數Slave_SQL_Running,並與I/O執行緒提供的狀態引數一起,作為判斷複製程式執行的重要引數。

備註:
主伺服器端的Binlog檔案是實現複製功能的首要檔案,需要注意的是,在啟動資料庫之前,需要先啟用二進位制日誌功能,需要將配置檔案my.cnf中的引數log-bin前的註釋去掉,並設定名字,例如:
[mysqld]
log_bin=mysql-bin

從伺服器端的Relay Log檔案,在執行start slave命令後產生。Relay Log和Binlog具有相同的格式,兩個日誌檔案都可以透過mysqlbinlog工具來檢視,不同之處在於SQL執行緒會自動刪除Relay Log檔案中已經被執行過的事件。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-2139632/,如需轉載,請註明出處,否則將追究法律責任。

相關文章