利用pt-heartbeat監(jiān)控MySQL的復(fù)制延遲詳解
pt-heartbeat
數(shù)據(jù)庫做主從復(fù)制時,復(fù)制狀態(tài)、數(shù)據(jù)延遲是否正常是非常關(guān)鍵的指標(biāo),那么如何對其進(jìn)行監(jiān)控呢?
pt-heartbeat 是 PERCONA 開發(fā)的一個工具集中的一個,專門用來監(jiān)控MySQL和PostgreSQL的復(fù)制延遲。
比較成熟,例如Uber等大型公司都在使用。
下面來話不多說,來一起看看詳細(xì)的介紹:
監(jiān)控原理
在 master 中建一個 heartbeat 表,其中有一個 時間戳 字段,pt-heartbeat 會周期性的修改時間戳的值。
slave 會復(fù)制 heartbeat表,其中就包含了 master執(zhí)行修改動作的時間戳,對其和 slave 的本地時間進(jìn)行對比,得到一個差值,就是復(fù)制延遲的值,從而判斷復(fù)制狀態(tài)是否正常,以及延遲時間是否符合預(yù)期。
pt-heartbeat 是根據(jù)實際的復(fù)制記錄來計算的,所以他不關(guān)心你使用什么方式進(jìn)行復(fù)制。
pt-heartbeat 可以監(jiān)控任意深度的復(fù)制層級,因為 heartbeat 表中有 server_id 字段,在監(jiān)控某個 slave 的延遲時可以指定是參考哪個 server_id,例如想知道這個 slave 與其 master 的 master 的延遲情況,指定目標(biāo) master的 server_id 就可以了。
因為 pt-heartbeat 嚴(yán)格依賴時間,所以需要注意 master 與 slave 的時間一定要同步。
使用示例
對 master 執(zhí)行創(chuàng)建心跳表的操作,并執(zhí)行循環(huán) update 操作,執(zhí)行命令:

其中指定了 master 的連接信息, --create-table -D master1 是指在 master1這個數(shù)據(jù)庫中創(chuàng)建心跳表,后面的參數(shù)指定執(zhí)行 update 的時間間隔。
然后就可以對 slave 進(jìn)行監(jiān)控了,執(zhí)行命令:

--monitor 參數(shù)指明是要進(jìn)行監(jiān)控,之前的是監(jiān)控目標(biāo)的信息,包括 slave 的連接信息、數(shù)據(jù)庫和表名。
輸出信息示例:

0.00s 表示現(xiàn)在的延遲信息,[ 0.00s, 0.00s, 0.00s ] 表示 1m,5m,15m 的平均值。
安裝過程
下面是在CentOS7下的安裝過程:

pt-heartbeat 的官方文檔地址:https://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對本站的支持。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信