slave之Seconds_Behind_Master析

markzy5201190發表於2013-11-05
slave之Seconds_Behind_Master


在主從環境中,從中重要的引數slave之Seconds_Behind_Master,真正含義和如何計算?


字面意思:slave落後master多少,這個引數容易讓人迷惑,若引數:0,能夠確定主從是一致的嗎?


1.在網路條件糟糕環境中,IO thread同步很慢,每次同步過來一點點, SQL thread立刻執行,我們看到
Seconds_Behind_Master是0,而實際slave已經落後master很多;


2.在網路條件很好環境中,IO thread能較快從master的binlog中同步sql到slave的relay-log裡,
這個值能基本確定slave落後master秒數;


手冊中:
In essence,this field measures the time difference in seconds between the slave SQL
thread and the slave IO thread.
Seconds_Behind_Master--表示slave上SQL thread與IO thread之間的延遲,在複製環境中,slave
IO thread先從master上將binlog拉到本地relay_log中,而後sql thread將binlog重現,這個引數
表示本地relay-log中未被執行完成的那部分差值;
我們要了解在大部分情況下複製是非同步的,也就是master上的binlog不是實時傳送到slave中,要用這
引數來估計主從延遲多久得需要再一個比較好的網路環境中,才能保證master上的binlog已經傳送到
slave上;


計算方式,在binlog中每個binlog events有執行時的timestamp,mysql通過比較當前系統timestamp與
當前SQL thread正在執行的binlog event的上的timestamp比較,這個柴值是Seconds_Behind_Master.


Seconds_Behind_Master 可以是NULL,
原因:SQL thread/IO thread沒有執行/slave沒有連線到master.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-775715/,如需轉載,請註明出處,否則將追究法律責任。

相關文章