pt-heartbeat 監測RDS延遲
pt-heartbeat 很常用的一個檢測主從是否延遲的工具。
下文雖然說是針對RDS的筆記,但是同樣適用於社區版的MySQL。
原理:
在master上創建一個表,按照一定的時間頻率更新該表的字段(把時間更新進去)。
連接到slave上檢查復制的時間記錄,與slave的當前系統時間進行比較,得出時間差異。
註意: 主從機器的時間同步要基本一致,不然pt-heartbeat測出的結果不準確。
1、連接到RDS主實例,創建test.heartbeat表,建議使用memory引擎:
CREATE TABLE `test`.`heartbeat` (
`ts` varchar(26) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`position` bigint(20) unsigned DEFAULT NULL,
`relay_master_log_file` varchar(255) DEFAULT NULL,
`exec_master_log_pos` bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (`server_id`)
) ENGINE=Memory DEFAULT CHARSET=utf8 ;
2、在主實例上啟動pt-heartbeat進程,並在後臺運行:
pt-heartbeat --user mw_dba --password 123456 --host rm-xxxxxx.mysql.rds.aliyuncs.com --database test --update --interval=1 --no-version-check
3、連接到只讀實例上執行命令,檢查落於Master多長時間
pt-heartbeat --user mw_dba --password 123456 --host rr-xxxxxx.mysql.rds.aliyuncs.com --database test --monitor --master-server-id 35006 --no-version-check
說明:
1、如果步驟2的結果始終未0,表示沒有延遲。
2、上面命令中 --master-server-id 跟的是master的server_id。 --minitor 表示一直監控不退出
4、監控完畢,記得關閉第二步的pt-heartbeat後臺進程
ps aux | egrep pt-heartbeat | grep -v grep|awk ‘{print $2}‘|xargs kill -9
或者使用
pt-heartbeat --user mw_dba --password 123456 --host rm-xxxxxx.mysql.rds.aliyuncs.com --no-version-check --stop
說明:
對於阿裏雲的RDS, 使用各種percona工具的時候,經常出現不支持的情況,可能是alisql修改了某些版本信息,導致pt工具檢查失敗, 我們執行時候 加上 --no-version-check 參數即可 。
pt-heartbeat 監測RDS延遲