ITPub博客

首页 > 数据库 > MySQL > Mysql 创建心跳表来监控Replication的Slave是否延迟

Mysql 创建心跳表来监控Replication的Slave是否延迟

原创 MySQL 作者:lusklusklusk 时间:2021-08-31 17:36:36 0 删除 编辑

mysql replication的slave同步是否真实延迟,大部分人都是在slave上执行show slave status\G来捕获Slave_IO_Running: Yes和Slave_SQL_Running: Yes和Seconds_Behind_Master: 0这三列信息,今天我们自己另辟蹊跷不同过show slave status\G来捕获,而是直接监控master库的数据是否真实写入到slave库



1、Master上的mysql库上创建心跳表Heartbeat_table

CREATE TABLE `heartbeat_table` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `master_datetime` datetime NOT NULL,
  `slave_datetime` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8



2、Master上的mysql库上创建一个存储过程往心跳表Heartbeat_table插数据

delimiter $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insert_heartbeat_table`()
BEGIN
DECLARE  master_datetime datetime;
declare  slave_datetime  datetime;
INSERT INTO Heartbeat_table (master_datetime,slave_datetime) VALUES(NOW(),SYSDATE());
END$$



3、Master上的mysql库上创建创建一个事件每分钟执行一次步骤2的存储过程
CREATE EVENT event_replication_insert ON SCHEDULE EVERY 60 SECOND  DO call sp_insert_heartbeat_table();


4、Master上的mysql库上创建创建一个事件每分钟删除心跳表3天前的记录
CREATE EVENT event_replication_delete ON SCHEDULE EVERY 60 SECOND  DO delete from Heartbeat_table where id in (select id from (select id from Heartbeat_table c1 where UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(master_datetime)>259200) t1)

5、在slave服务器上编写一个监控slave同步的邮件的脚本,延迟超过120秒就报警
#!/bin/bash
mysql_user="root"
mysql_pass="pwd"
hostname=echo `hostname`

delay=`/usr/bin/mysql -u${mysql_user} -p${mysql_pass} -e"SELECT NOW()-MAX(master_datetime) FROM mysql.heartbeat_table"`
delay_seconds=`echo $delay |awk '{print $2}'`

if [ "$delay_seconds" -gt 120 ];then
                echo "$hostname Mysql Salve delay $delay_seconds seconds,please check!!!"| mailx  -s "$hostname Mysql Salve delay $delay_seconds seconds,please check!!!" emailname@XX.com
fi

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2789731/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Welcome to Lukes DB HOME。 Oracle OCM、Mysql OCP, 10年DBA工作经验,博客仅记录自己的一个学习过程,不代表完全准确,如有需要,欢迎转载。

注册时间:2015-02-02

  • 博文量
    471
  • 访问量
    906884