Percona工具包提供了一个非常有用的脚本,用于更精确的复制滞后监视,称为pt心跳。pt-heartbeat脚本根据已复制的实际数据提供复制滞后指标,并且比Seconds_Behind_Master从输出中收集的指标更准确。SHOW SLAVE STATUS 中的Seconds_Behind_Master完全依赖系统时间(即当前时间 - 在主服务器上执行事件的时间)。默认情况下,ProxySQL依赖于该SHOW SLAVE STATUS命令的输出,以便max_replication_lag在为mysql_servers表中的服务器配置时标识应该从后端连接池中排除的副本。
从ProxySQL版本1.4.4开始,引入了一项新功能,以便利用pt-heartbeat提供的数据,进而实现更精确的复制滞后监视,所需的一切就是mysql-monitor_replication_lag_use_percona_heartbeat使用数据库和表名称配置pt-心跳正在写入。
利用pt-heartbeat实现主从延迟监控,可以解决利用默认的使用Seconds_Behind_Master方式获取延迟2个问题:
1、Seconds_Behind_Master是不准确的
2、级联情况下,如果中间层同步断了,只能自动下掉中间层的,中间层下面的从也无法获取最新数据,应该不能提供服务,但无法监控到,实现自动下线
通过pt-heartbeat实现实时主从延迟监控,一是更准确,另外中间层同步中断,中间层下面的数据是旧的,那延迟是可以正常被监控,会自动进行下线。
这里直接访问proxysql,自动切换后监控一直可用。
在主库创建监控数据库:create database monitor_dba;
proxysql中做如下配置:
pt-heartbeat -D mgtv_dba -h 10.200.11.3 -P 6033 -u monitor_dba_rw -pxxx --update
set mysql-monitor_replication_lag_use_percona_heartbeat = "monitor_dba.heartbeat";
save mysql variables to disk; load mysql variables to runtime;
这里使用的用户需要提前授权好。
使用heartbeat有一些使用上的注意事项:
1、heartbeat不能掉,如果停了,那就会检查出所有从库都延迟、包括主库
2、主库max_replication_lag得设置为0,否则如果heartbeat不运行时,会导致主无法正常写入,会将主的状态设置为下线状态
要求不高的,无特殊需要的建议使用默认的方式 来检查主从延迟,自动下线。
文章最后更新时间:
2018年05月11日 16:45:17