MySQL复制延迟报警的配置主要依赖于监控从库的复制状态,结合脚本或监控工具实现自动检测和告警。核心是通过
SHOW SLAVE STATUS获取
Seconds_Behind_Master值,判断是否超过设定阈值。以下是具体配置方法。
1. 检查复制状态关键字段
登录从库执行:
SHOW SLAVE STATUS\G关注以下两个字段:
Slave_IO_Running:应为Yes,表示IO线程正常拉取主库binlog Slave_SQL_Running:应为Yes,表示SQL线程正常回放事件 Seconds_Behind_Master:复制延迟秒数,是告警的主要依据如果该值持续大于设定阈值(如60秒),就需要触发报警。
2. 编写延迟检测脚本
可以使用Shell脚本定期检查延迟情况。示例脚本如下:
#!/bin/bashUSER="monitor"
PASS="your_password"
HOST="localhost"
THRESHOLD=60
# 获取延迟秒数
DELAY=$(mysql -u$USER -p$PASS -h$HOST -Nse "SHOW SLAVE STATUS\G" | grep "Seconds_Behind_Master" | awk '{print $2}')
# 判断是否为空或异常
if [ -z "$DELAY" ]; then
echo "ERROR: Unable to get slave status"
exit 1
fi
if [ "$DELAY" -gt "$THRESHOLD" ]; then
echo "ALERT: Replication delay is $DELAY seconds" | mail -s "MySQL Replication Delay Alert" admin@example.com
fi
将脚本保存为
check_slave_delay.sh,并赋予执行权限。
3. 配置定时任务
使用crontab每分钟执行一次检测:
crontab -e* * * * * /path/to/check_slave_delay.sh
这样系统会每隔一分钟检查一次复制延迟,超出阈值即发送邮件告警。
4. 使用专业监控工具(推荐)
更稳定的方式是使用Prometheus + MySQL Exporter + Alertmanager,或Zabbix、Percona Monitoring and Management (PMM)等工具。
PMM:部署简单,自带MySQL复制延迟图形化监控和阈值告警 Zabbix:可自定义模板监控seconds_behind_masterPrometheus:通过MySQL Exporter采集指标,配合Rule规则触发Alertmanager通知
这些工具支持微信、钉钉、企业微信、邮件等多种通知方式,适合生产环境。
基本上就这些。关键是获取准确的延迟数据,并确保告警机制及时可靠。手动脚本适合小环境,中大型系统建议用专业监控平台。
