seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法
seconds_behind_master含義及不足
seconds_behind_master的值是通過將salve服務器當前的時間戳與二進制日志中的事件的時間戳相比得到的,所以只有執行事件時才會報告延遲。
1.1 ?如果備庫復制線程沒有運行,就會報延遲為null。
1.2 ?一些錯誤比如網絡不穩定可能導致復制中斷或停止復制線程,但是seconds_behind_master將顯示為0,而不是顯示錯誤
1.3 ?即使備庫線程正在運行,備庫有時候可能無法計算延時,如果發生這種情況,備庫會報0或者null。
1.4 ?一個大事務可能會導致延遲波動,例如一個事務更新數據長達1個小時,最后提交。這條更新語句將比它實際發生時間要晚一個小時才記錄到二進制日志中,當備庫執行這 ? ? ? ? ?條語句時,會臨時報告備庫延遲1小時,然后又很快變為0。
詳細請參考<高性能MySQL 復制章節>
改進的做法就是使用percona toolkit工具包的pt-heartbeat,工作原理如下:
2.1 ?在master上創建一張heartbeat表,按照一定的時間頻率更新該表的字段,主要就是向該表寫入當前的時間戳?2.2 ?連接到slave上檢查該表的時間記錄,和運行pt-heartbeat的當前系統時間進行比較,得出時間的差異,這個時間差異就是復制延遲?
注1:這里的2中的系統時間并不一定是slave的系統時間,如果pt-heartbeat的復制監控腳本運行在master上,那么當前系統時間就是master的當前系統時間,這時就不需要嚴格同步master服務器和slave服務器的時間一致了。?
注2:這里的創建的heartbeat表必須在復制同步下的庫,有些教材都寫了test庫,但有時我們在復制配置中過濾了test庫的復制,需要注意這一點?
pt-heartbeat參數說明
pt-heartbeat用法格式如下,詳細的用法可運行pt-heartbeat --help查看,最主要的幾個參數介紹如下
Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop?--update|--monitor|--check|--stop這四個參數必須選一個且僅選一個,--update表示每隔默認的秒數更新master庫上heartbeat表的時間戳,--monitor表示每隔默認秒都監控延遲狀況,--check表示只監控一次就退出,--stop表示停止更新時間戳的進程?
--daemonize ?后臺執行?
--file 【--file=output.txt】 打印--monitor最新的記錄到指定的文件,很好的防止滿屏幕都是數據的煩惱。?
--frames 【--frames=1m,2m,3m】在--monitor里輸出的[]里的記錄段,默認是1m,5m,15m。可以指定1個,如:--frames=1s,多個用逗號隔開。?
--interval 檢查、更新的間隔時間。默認是見是1s。最小的單位是0.01s,最大精度為小數點后兩位,因此0.015將調整至0.02。?
--log 開啟daemonized模式的所有日志將會被打印到制定的文件中。?
--monitor 持續監控從的延遲情況?
--master-server-id 指定主的server_id?
--recurse 多級復制的檢查深度。模式M-S-S...不是最后的一個從都需要開啟log_slave_updates,這樣才能檢查到。
典型的步驟如下
4.1 在master服務器上運行如下命令,這里的ip,user等信息均為master mysql的信息。?? ? ? pt-heartbeat -D mydb --update -uroot -p 123456 -P 3306 -h 127.0.0.1 --create-table --daemonize?
4.2 ?在master服務器上運行如下命令,這里的ip,user等信息均為slave mysql的信息,然后指定該master-server-id,
? ? ? pt-heartbeat -D mydb --monitor -u y -p 123456 -P 3306 -h 10.0.11.244 --master-server-id 101
4.3 ?這時我們在master上插入大量數據,比如一個insert into select,可看到監控界面上延遲值越來越大最后又慢慢變小,具體測試代碼略。
4.4 ?這時我們在slave上stop slave,觀察復制延遲情況,可看到延遲越來越大
4.5 ?這時我們重新start slave,可觀察到延遲再次變小
總結
以上是生活随笔為你收集整理的seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识JNDI
- 下一篇: MySQL锁阻塞分析