1. 程式人生 > 資料庫 >深入理解MySQL主從複製執行緒狀態轉變

深入理解MySQL主從複製執行緒狀態轉變

前言

MySQL的主從複製的基本原理是從庫連線到主庫,主庫生成一個主庫DUMP執行緒,該DUMP執行緒的主要任務是
一直挖掘binlog日誌,然後傳送到從庫的IO執行緒,IO執行緒接收到日誌流後,寫入relay log,另一個線
程SQL執行緒,會讀取該relay log內容,然後對sql語句進行重放.

本文主要給大家介紹的是關於MySQL主從複製執行緒狀態轉變的相關內容,下面話不多說了,來一起看看詳細的介紹吧

一、主庫執行緒狀態(State)值

以下列表顯示了主從複製中主伺服器的Binlog Dump執行緒的State列中可能看到的最常見狀態(SHOW PROCESSLIST)。如果Binlog Dump執行緒在主伺服器上看不到,這意味著複製沒有執行,也就是說,目前沒有連線任何Slave主機。

Sending binlog event to slave

二進位制日誌由各種事件組成,一個事件通常為一個更新加一些其它資訊。執行緒已經從二進位制日誌讀取了一個事件並且正將它傳送到從伺服器。

Finished reading one binlog; switching to next binlog

執行緒已經讀完二進位制日誌檔案並且正開啟下一個要傳送到從伺服器的日誌檔案。

Has sent all binlog to slave; waiting for binlog to be updated

執行緒已經從二進位制日誌讀取所有主要的更新並已經發送到了從伺服器。執行緒現在正空閒,等待由主伺服器上新的更新導致的出現在二進位制日誌中的新事件。

Waiting to finalize termination

執行緒停止時發生的一個很簡單的狀態。

二、從庫I/O執行緒狀態(State)值

Connecting to master

執行緒正試圖連線主伺服器。

Checking master version

建立同主伺服器之間的連線後立即臨時出現的狀態。

Registering slave on master

建立同主伺服器之間的連線後立即臨時出現的狀態。

Requesting binlog dump

建立同主伺服器之間的連線後立即臨時出現的狀態。執行緒向主伺服器傳送一條請求,索取從請求的二進位制日誌檔名和位置開始的二進位制日誌的內容。

Waiting to reconnect after a failed binlog dump request

如果二進位制日誌轉儲請求失敗(由於沒有連線),執行緒進入睡眠狀態,然後定期嘗試重新連線。可以使用–master-connect-retry選項指定重試之間的間隔。

Reconnecting after a failed binlog dump request

執行緒正嘗試重新連線主伺服器。

Waiting for master to send event

執行緒已經連線上主伺服器,正等待二進位制日誌事件到達。如果主伺服器正空閒,會持續較長的時間。如果等待持續slave_read_timeout秒,則發生超時。此時,執行緒認為連線被中斷並企圖重新連線。

Queueing master event to the relay log

執行緒已經讀取一個事件,正將它複製到中繼日誌供SQL執行緒來處理。

Waiting to reconnect after a failed master event read

讀取時(由於沒有連線)出現錯誤,執行緒企圖重新連線前將睡眠master-connect-retry秒。

Reconnecting after a failed master event read

執行緒正嘗試重新連線主伺服器,當連線重新建立後,狀態變為Waiting for master to send event。

Waiting for the slave SQL thread to free enough relay log space

正使用一個非零relay_log_space_limit值,中繼日誌已經增長到其組合大小超過該值。I/O執行緒正等待直到SQL執行緒處理中繼日誌內容並刪除部分中繼日誌檔案來釋放足夠的空間。

Waiting for slave mutex on exit

執行緒停止時發生的一個很簡單的狀態。

三、從庫SQL執行緒狀態(State)值

Reading event from the relay log

執行緒已經從中繼日誌讀取一個事件,可以對事件進行處理了。

Has read all relay log; waiting for the slave I/O thread to update it

執行緒已經處理了中繼日誌檔案中的所有事件,現在正等待I/O執行緒將新事件寫入中繼日誌。

Waiting for slave mutex on exit

執行緒停止時發生的一個很簡單的狀態。

四、從庫連線執行緒狀態(State)值

這些執行緒狀態發生在複製從庫上,但與連線執行緒相關聯,而不與I/O或SQL執行緒相關聯。

Changing master

執行緒正在處理CHANGE MASTER TO語句。

Killing slave

執行緒正在處理STOP SLAVE語句。

Opening master dump table

此狀態發生在Creating table from master dump之後。

Reading master dump table data

此狀態發生在Opening master dump table之後。

Rebuilding the index on master dump table

此狀態發生在Reading master dump table data之後。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對我們的支援。