深入理解MySQL主從復(fù)制線程狀態(tài)轉(zhuǎn)變
前言
MySQL的主從復(fù)制的基本原理是從庫(kù)連接到主庫(kù),主庫(kù)生成一個(gè)主庫(kù)DUMP線程,該DUMP線程的主要任務(wù)是
一直挖掘binlog日志,然后發(fā)送到從庫(kù)的IO線程,IO線程接收到日志流后,寫入relay log,另一個(gè)線
程SQL線程,會(huì)讀取該relay log內(nèi)容,然后對(duì)sql語(yǔ)句進(jìn)行重放.
本文主要給大家介紹的是關(guān)于MySQL主從復(fù)制線程狀態(tài)轉(zhuǎn)變的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
一、主庫(kù)線程狀態(tài)(State)值
以下列表顯示了主從復(fù)制中主服務(wù)器的Binlog Dump線程的State列中可能看到的最常見(jiàn)狀態(tài)(SHOW PROCESSLIST)。如果Binlog Dump線程在主服務(wù)器上看不到,這意味著復(fù)制沒(méi)有運(yùn)行,也就是說(shuō),目前沒(méi)有連接任何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)制日志文件并且正打開(kāi)下一個(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)。
二、從庫(kù)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)制日志文件名和位置開(kāi)始的二進(jìn)制日志的內(nèi)容。
Waiting to reconnect after a failed binlog dump request
如果二進(jìn)制日志轉(zhuǎn)儲(chǔ)請(qǐng)求失敗(由于沒(méi)有連接),線程進(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線程來(lái)處理。
Waiting to reconnect after a failed master event read
讀取時(shí)(由于沒(méi)有連接)出現(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)到其組合大小超過(guò)該值。I/O線程正等待直到SQL線程處理中繼日志內(nèi)容并刪除部分中繼日志文件來(lái)釋放足夠的空間。
Waiting for slave mutex on exit
線程停止時(shí)發(fā)生的一個(gè)很簡(jiǎn)單的狀態(tài)。
三、從庫(kù)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)。
四、從庫(kù)連接線程狀態(tài)(State)值
這些線程狀態(tài)發(fā)生在復(fù)制從庫(kù)上,但與連接線程相關(guān)聯(lián),而不與I/O或SQL線程相關(guān)聯(lián)。
Changing master
線程正在處理CHANGE MASTER TO語(yǔ)句。
Killing slave
線程正在處理STOP SLAVE語(yǔ)句。
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à)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
在Mac系統(tǒng)上配置MySQL以及Squel Pro
給大家講述一下如何在MAC蘋果系統(tǒng)上配置MYSQL數(shù)據(jù)庫(kù)以及Squel Pro的方法。2017-11-11
MySQL手動(dòng)注冊(cè)binlog文件造成主從異常的原因
這篇文章主要介紹了MySQL手動(dòng)注冊(cè)binlog文件造成主從異常的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-10-10
mysql數(shù)據(jù)庫(kù)優(yōu)化需要遵守的原則
這是我在網(wǎng)上看到的一篇不錯(cuò)的mysql數(shù)據(jù)庫(kù)優(yōu)化文章,拿出來(lái)和大家分享,希望可以幫助你們2012-12-12
MySQL中json_extract函數(shù)說(shuō)明及使用方式
今天看mysql中的json數(shù)據(jù)類型,涉及到一些使用,使用到了函數(shù)json_extract來(lái),下面這篇文章主要給大家介紹了關(guān)于MySQL中json_extract函數(shù)說(shuō)明及使用方式的相關(guān)資料,需要的朋友可以參考下2022-08-08
Linux系統(tǒng)下自行編譯安裝MySQL及基礎(chǔ)配置全過(guò)程解析
這篇文章主要介紹了Linux系統(tǒng)下自行編譯安裝MySQL及基礎(chǔ)配置全過(guò)程解析,配置方面主要針對(duì)InnoDB引擎來(lái)講,需要的朋友可以參考下2016-02-02
MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼
這篇文章主要介紹了MySQL建表設(shè)置默認(rèn)值/取值范圍的操作代碼,文中給大家提到了MySQL創(chuàng)建表時(shí)字符串的默認(rèn)值,本文給大家講解的非常詳細(xì),需要的朋友可以參考下2022-11-11
Mysql樹(shù)形表的2種查詢解決方案(遞歸與自連接)
MySQL作為一個(gè)關(guān)系型數(shù)據(jù)庫(kù),存儲(chǔ)著許多的數(shù)據(jù)信息,在實(shí)際應(yīng)用中經(jīng)常會(huì)遇到需要存儲(chǔ)樹(shù)形結(jié)構(gòu)數(shù)據(jù)的情境,例如部門結(jié)構(gòu)、商品分類等,這篇文章主要給大家介紹了關(guān)于Mysql樹(shù)形表的2種查詢解決方案,分別是遞歸與自連接,需要的朋友可以參考下2023-11-11

