溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[MySQL管理] Seconds_Behind_Master 解析

發(fā)布時(shí)間:2020-08-15 20:48:32 來源:ITPUB博客 閱讀:120 作者:kakaxi9521 欄目:MySQL數(shù)據(jù)庫

通過show slave status查看到的Seconds_Behind_Master,從字面上來看,他是slave落后master的秒數(shù),一般情況下,也確實(shí)這樣,我們可以通過Seconds_Behind_Master數(shù)字查看slave是否落后于master,但是在一些環(huán)境中,他確會(huì)讓我們產(chǎn)生幻覺。
http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html中,對(duì)Seconds_Behind_Master的有一句話闡述如下:

In essence, this field measures the time difference in seconds between the slave SQL thread and the slave I/O thread.

很清晰的表明,該值是
SQL thread I/O thread.之間的差值。
當(dāng)在很快的網(wǎng)絡(luò)連接情況下,I/O thread.很快的從master的binlog中同步sql到slave的relay-log里,這樣,這個(gè)值就能基本確定的slave落后master的秒數(shù)
當(dāng)網(wǎng)絡(luò)環(huán)境特別糟糕的情況下,這個(gè)值確會(huì)讓我們產(chǎn)生幻覺,I/O thread同步很慢,每次同步過來,SQL thread就能立即執(zhí)行,這樣,我們看到的Seconds_Behind_Master是0,而真正的,slave已經(jīng)落后master很多很多。這時(shí)業(yè)務(wù)部門的同志們就會(huì)抱怨slave與master數(shù)據(jù)不對(duì),而你看到的Seconds_Behind_Master確為0,你就會(huì)非常的郁悶了。
其實(shí)這個(gè)時(shí)候,我們看下master,與slave就能很好的確定這期間的原因。
mysql> show master statusG
*************************** 1. row ***************************
File: ******-bin.001291
Position: 896711460

Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)



mysql> show slave statusG
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.69.6.163
Master_User: replica
Master_Port: 3801
Connect_Retry: 60
Master_Log_File: *****-bin.001211
Read_Master_Log_Pos: 278633662

Relay_Log_File: *****-relay-bin.002323
Relay_Log_Pos: 161735853
Relay_Master_Log_File: *******-bin.001211
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 278633662
Relay_Log_Space: 161735853
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)



很明顯,slave已經(jīng)落后master 好多了。

暫停復(fù)制

你可以在從機(jī)上用STOP SLAVE語句來停止復(fù)制,用START SLAVE來開始復(fù)制。 用STOP SLAVE來停止從機(jī)執(zhí)行二進(jìn)制日志:

slave> STOP SLAVE;

當(dāng)停止執(zhí)行時(shí),從機(jī)不再通過IO線程從主機(jī)讀取二進(jìn)制日志并且不再通過SQL線程處理中繼日志中還沒執(zhí)行的事件。你可以指定線程的類型來獨(dú)立地停止IO或者SQL線程。

例如: slave> STOP SLAVE IO_THREAD;

如果你想在從機(jī)上執(zhí)行備份或者其他任務(wù),僅僅只處理來自主機(jī)的事件,停止SQL線程會(huì)是有效的。

IO線程會(huì)繼續(xù)從主機(jī)讀取變化,但這些變化不會(huì)馬上被應(yīng)用,這樣當(dāng)你再次開始從機(jī)操作的時(shí)候從機(jī)就能輕易地趕上進(jìn)度。 停止IO線程會(huì)讓中繼日志里的語句執(zhí)行到中繼日志停止接收新事件的那個(gè)點(diǎn)為止。

當(dāng)你想要讓從機(jī)趕上從主機(jī)來的事件時(shí),當(dāng)你想在從機(jī)上做管理但要確保你已經(jīng)在指定的點(diǎn)有最新的更新時(shí),可用停止IO線程的選項(xiàng)。這種方法同樣也能用來停止從機(jī)上的事件執(zhí)行,同時(shí)你在主機(jī)上做管理確保復(fù)制再次啟動(dòng)的時(shí)候不會(huì)有大量積壓的事件要執(zhí)行。

要再次開始執(zhí)行復(fù)制,用START SLAVE語句:

slave> START SLAVE;

如果必要,你可以分別獨(dú)立啟動(dòng)IO線程和SQL線程。

[@more@]
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI