【MySQL】請不要用SECONDS_BEHIND_MASTER來衡量MySQL主備的延遲時間

關于SECONDS_BEHIND_MASTER:

這個參數(shù)在我們使用show slave status的時候會看到,這個參數(shù)可用于參考從庫同步主庫的一個進度,當為0時,可認為主從數(shù)據(jù)已完全同步,但需要注意的是,這個參數(shù)只適合作為一個參考,并不能完全依賴這個參數(shù)判斷從庫進度是否已追上了主庫,說白了,不要用SECONDS_BEHIND_MASTER來衡量MYSQL主備的延遲時間

曾有網(wǎng)友遇到過以下場景:
Seconds_Behind_Master 為 0 , 備庫的 show slave status 顯示 IO/SQL 線程都是正常的 , MySQL 的主庫上的變更卻長時間無法同步到備庫上。如果沒有人為干預,直到一個小時以后(可設置重連時間), MySQL 才會自動重連主庫,繼續(xù)復制主庫的變更。

而這個問題的影響范圍是:MySQL , Percona , MariaDB 的所有版本。

這個問題遇到的概率并不高,但還是有必要記錄一下。

一、問題重現(xiàn)步驟:

搭建主備的復制,臨時斷開主庫的網(wǎng)絡,并 kill 掉主庫 MySQL 的 binlog dump 線程。
此時觀察備庫的復制情況, show slave status 中:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
但是此時你把網(wǎng)絡恢復以后,在主庫做任何變更,備庫都無法獲得數(shù)據(jù)更新了。而且備庫上的show slave status 顯示: IO 線程 SQL 線程一切正常,復制延遲一直是 0 。
一切正常,普通的監(jiān)控軟件都不會發(fā)現(xiàn)備庫有數(shù)據(jù)延遲。

原理分析:

MySQL 的 Replication 是區(qū)別于其他數(shù)據(jù)庫很關鍵的地方。也是可擴展性和高可用的基礎。它本身已經(jīng)非常智能化,只需要我們調(diào)用 Change Master 指定 Binlog 文件名和偏移位置就可以搭建從主庫到備庫的復制關系。
MySQL 復制 線程 會自動將目前復制位置記錄下來,在主備復制中斷的時候自動連上主庫,并從上次中斷的位置重新開始復制。這些操作都是全自動化的。

關于MySQL主從是“推”還是“拉”
首先說明一下,MySQL主從是使用“推”的方式實現(xiàn)的:
關于推拉說明:
推:主庫上數(shù)據(jù)更新時,將消息推送給從庫,然后從庫再進行更新
拉:從庫會通過輪詢的方式不斷查詢主庫是否更新了數(shù)據(jù),資源消耗巨大

問題分析:

當我們kill掉主庫的進程的時候,主庫就不能向從庫推送數(shù)據(jù)消息,導致從庫一直收不到數(shù)據(jù)消息而不會更新數(shù)據(jù),從庫如果長時間沒有收到主庫發(fā)過來的變更,,從庫會每隔一段時間重連主庫

問題避免:

修改延遲的監(jiān)控方法:
正確設置:--master-connect-retry ,--slave-net-timeout ,--master_heartbeat_period重試參數(shù)

slave_net_timeout:
MySQL主從復制的時候, 當Master和Slave之間的網(wǎng)絡中斷,但是Master和Slave無法察覺的情況下(比如防火墻或者路由問題)。Slave會等待slave_net_timeout設置的秒數(shù)后,才能認為網(wǎng)絡出現(xiàn)故障,然后才會重連并且追趕這段時間主庫的數(shù)據(jù)。

備庫過了 slave-net-timeout 秒還沒有收到主庫來的數(shù)據(jù),它就會開始第一次重試。然后每過 master-connect-retry 秒,備庫會再次嘗試重連主庫,直到--master-retry-count次后才結束。

--master-retry-count(該參數(shù)在mysql5.6.1及其后續(xù)版本廢除)。MASTER_RETRY_COUNT = 0表示重連次數(shù)無限制。

master_heartbeat_period參數(shù):
設置復制心跳的周期,取值范圍為0 到 4294967秒。精確度可以達到毫秒,最小的非0值是0.001秒。心跳信息由master在主機binlog日志文件在設定的間隔時間內(nèi)沒有收到新的事件時發(fā)出,以便slave知道m(xù)aster是否正常。
slave連接到master后,該參數(shù)可通過mysql.slave_master_info表查看。

slave_net_timeout 的默認是 3600,也就是一小時。也就是說,在之前的情況下,Slave 要延誤 1 小時后才會嘗試重連。而在沒有設置 master_heartbeat_period 時,將 slave_net_timeout 設得很短會造成 Master 沒有數(shù)據(jù)更新時頻繁重連。

mysql> stop slave;  
mysql> change master to master_heartbeat_period = 10;  
mysql> set global slave_net_timeout = 25;  
mysql> start slave;  

Master 在沒有數(shù)據(jù)的時候,每 10 秒發(fā)送一個心跳包。這樣 Slave 就能知道 Master 是不是還正常

mysql> show status like 'slave%';  
+----------------------------+---------------------+  
| Variable_name              | Value               |  
+----------------------------+---------------------+  
| Slave_heartbeat_period     | 10.000              |  
| Slave_last_heartbeat       | 2015-01-08 10:28:16 |  
| Slave_open_temp_tables     | 0                   |  
| Slave_received_heartbeats  | 1645                |  
| Slave_retried_transactions | 0                   |  
| Slave_running              | ON                  |  
+----------------------------+---------------------+  

參考文章:
http://chenxy.blog.51cto.com/729966/1361558
http://blog.csdn.net/JesseYoung/article/details/42914577

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評論 6 545
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,795評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,943評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,057評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,773評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,106評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,282評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,793評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,507評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,741評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,929評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,325評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,661評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,482評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,702評論 2 380

推薦閱讀更多精彩內(nèi)容