主从延迟介绍
一般mysql主从监控通过show slave status
查看SECONDS_BEHIND_MASTER的值来判断主从是否有延迟。但是SECONDS_BEHIND_MASTER并不能准确的反映出数据库的延迟情况,而且此值是秒级。如果有业务系统需要更精确的主从延迟级别(如毫秒级),这样可以通过pt-heartbeat实现对mysql或PostgreSQL主从复制的监控。
工作原理
pt-heartbeat通过真实的主从数据复制来确认复制延迟,这样就避免了对复制机制本身的依赖,从而能得出准确的延迟时间。
1. 在主库上创建一张heartbeat表,--update
线程在指定的时间间隔(--interval
)更新一个时间戳(心跳记录),心跳表可能包含多个主的心跳记录,通过server_id来区分。
按照一定的时间频率更新该表的字段(把时间更新进去)。
2. 连接到从上检查复制的时间记录,和从库的当前系统时间进行比较,得出时间的差异。通过pt-heartbeat的--monitor
线程或者--check
线程连接到从库,检查复制来自主库的心跳记录(即前面更新的时间戳),并和当前系统时间进行比较,得出时间差值,该值则用于判断延迟。(需要主库与从库保持时间同步)
pt-heartbeat使用说明
pt-heartbeat默认一秒更新一次心跳记录,默认检查精度为0.01秒。
常用操作如下:
启用后台进程定