前言
MySQL的主從復(fù)制的基本原理是從庫連接到主庫,主庫生成一個(gè)主庫DUMP線程,該DUMP線程的主要任務(wù)是
一直挖掘binlog日志,然后發(fā)送到從庫的IO線程,IO線程接收到日志流后,寫入relay log,另一個(gè)線
程SQL線程,會(huì)讀取該relay log內(nèi)容,然后對(duì)sql語句進(jìn)行重放.
本文主要給大家介紹的是關(guān)于MySQL主從復(fù)制線程狀態(tài)轉(zhuǎn)變的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧
一、主庫線程狀態(tài)(State)值
以下列表顯示了主從復(fù)制中主服務(wù)器的Binlog Dump線程的State列中可能看到的最常見狀態(tài)(SHOW PROCESSLIST)。如果Binlog Dump線程在主服務(wù)器上看不到,這意味著復(fù)制沒有運(yùn)行,也就是說,目前沒有連接任何Slave主機(jī)。
Sending binlog event to slave
二進(jìn)制日志由各種事件組成,一個(gè)事件通常為一個(gè)更新加一些其它信息。線程已經(jīng)從二進(jìn)制日志讀取了一個(gè)事件并且正將它發(fā)送到從服務(wù)器。
Finished reading one binlog; switching to next binlog
線程已經(jīng)讀完二進(jìn)制日志文件并且正打開下一個(gè)要發(fā)送到從服務(wù)器的日志文件。
Has sent all binlog to slave; waiting for binlog to be updated
線程已經(jīng)從二進(jìn)制日志讀取所有主要的更新并已經(jīng)發(fā)送到了從服務(wù)器。線程現(xiàn)在正空閑,等待由主服務(wù)器上新的更新導(dǎo)致的出現(xiàn)在二進(jìn)制日志中的新事件。
Waiting to finalize termination
線程停止時(shí)發(fā)生的一個(gè)很簡(jiǎn)單的狀態(tài)。
二、從庫I/O線程狀態(tài)(State)值
Connecting to master
線程正試圖連接主服務(wù)器。
Checking master version
建立同主服務(wù)器之間的連接后立即臨時(shí)出現(xiàn)的狀態(tài)。
Registering slave on master
建立同主服務(wù)器之間的連接后立即臨時(shí)出現(xiàn)的狀態(tài)。
Requesting binlog dump
建立同主服務(wù)器之間的連接后立即臨時(shí)出現(xiàn)的狀態(tài)。線程向主服務(wù)器發(fā)送一條請(qǐng)求,索取從請(qǐng)求的二進(jìn)制日志文件名和位置開始的二進(jìn)制日志的內(nèi)容。
Waiting to reconnect after a failed binlog dump request
如果二進(jìn)制日志轉(zhuǎn)儲(chǔ)請(qǐng)求失敗(由于沒有連接),線程進(jìn)入睡眠狀態(tài),然后定期嘗試重新連接??梢允褂猫Cmaster-connect-retry選項(xiàng)指定重試之間的間隔。
Reconnecting after a failed binlog dump request
線程正嘗試重新連接主服務(wù)器。
Waiting for master to send event
線程已經(jīng)連接上主服務(wù)器,正等待二進(jìn)制日志事件到達(dá)。如果主服務(wù)器正空閑,會(huì)持續(xù)較長(zhǎng)的時(shí)間。如果等待持續(xù)slave_read_timeout秒,則發(fā)生超時(shí)。此時(shí),線程認(rèn)為連接被中斷并企圖重新連接。
Queueing master event to the relay log
線程已經(jīng)讀取一個(gè)事件,正將它復(fù)制到中繼日志供SQL線程來處理。
Waiting to reconnect after a failed master event read
讀取時(shí)(由于沒有連接)出現(xiàn)錯(cuò)誤,線程企圖重新連接前將睡眠master-connect-retry秒。
Reconnecting after a failed master event read
線程正嘗試重新連接主服務(wù)器,當(dāng)連接重新建立后,狀態(tài)變?yōu)閃aiting for master to send event。
Waiting for the slave SQL thread to free enough relay log space
正使用一個(gè)非零relay_log_space_limit值,中繼日志已經(jīng)增長(zhǎng)到其組合大小超過該值。I/O線程正等待直到SQL線程處理中繼日志內(nèi)容并刪除部分中繼日志文件來釋放足夠的空間。
Waiting for slave mutex on exit
線程停止時(shí)發(fā)生的一個(gè)很簡(jiǎn)單的狀態(tài)。
三、從庫SQL線程狀態(tài)(State)值
Reading event from the relay log
線程已經(jīng)從中繼日志讀取一個(gè)事件,可以對(duì)事件進(jìn)行處理了。
Has read all relay log; waiting for the slave I/O thread to update it
線程已經(jīng)處理了中繼日志文件中的所有事件,現(xiàn)在正等待I/O線程將新事件寫入中繼日志。
Waiting for slave mutex on exit
線程停止時(shí)發(fā)生的一個(gè)很簡(jiǎn)單的狀態(tài)。
四、從庫連接線程狀態(tài)(State)值
這些線程狀態(tài)發(fā)生在復(fù)制從庫上,但與連接線程相關(guān)聯(lián),而不與I/O或SQL線程相關(guān)聯(lián)。
Changing master
線程正在處理CHANGE MASTER TO語句。
Killing slave
線程正在處理STOP SLAVE語句。
Opening master dump table
此狀態(tài)發(fā)生在Creating table from master dump之后。
Reading master dump table data
此狀態(tài)發(fā)生在Opening master dump table之后。
Rebuilding the index on master dump table
此狀態(tài)發(fā)生在Reading master dump table data之后。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
您可能感興趣的文章:- MySQL主從復(fù)制延遲原因以及解決方案
- mysql主從復(fù)制配置過程
- 全面解讀MySQL主從復(fù)制,從原理到安裝配置
- MySQL 主從復(fù)制原理與實(shí)踐詳解
- MySQL主從復(fù)制與讀寫分離原理及用法詳解
- MYSQL的主從復(fù)制知識(shí)點(diǎn)整理
- Mysql主從復(fù)制作用和工作原理詳解
- MYSQL 完全備份、主從復(fù)制、級(jí)聯(lián)復(fù)制、半同步小結(jié)
- mysql 主從復(fù)制如何跳過報(bào)錯(cuò)