ptheartbeat使用及问题汇总
检测MySQL主从延迟,通常使用MySQL自带的Seconds_Behind_Master,但是这个状态变量反映的是秒级别的复制延迟,无法做到更精确的延迟检测。此外,服务器时间不同步也会导致这个状态变量不能真实反映主从间的复制延迟。下面介绍一个更理想的MySQL主从复制延迟检测工具pt-heartbeat。
pt-heartbeat原理:
pt-heartbeat需要在数据库中创建一张表,表中有一个时间戳字段,每隔一段时间去更新这个时间戳,通过对比从库的这条记录时间戳与当前系统时间,来获得MySQL主从延迟的大小。表结构如下:
CREATE TABLE `heartbeat` (
`ts` varchar(26) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`file` varchar(255) DEFAULT 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=InnoDB DEFAULT CHARSET=utf8mb4;