1. 需求
开发一个守护进程脚本,每30秒监控一次MySQL主从复制是否异常(包括不同步及延迟),如果有异常,则发送短信报警,并发送邮件给管理员存档。
2. 实验准备
2.1. 测试数据模拟
如果没有主从复制的环境,可以把下面的命令执行的结果部分的文本放到文件里读取来模拟主从复制的状态。
2.2. 解题思路
判断主从复制是否异常,主要是检测如下参数对应的值:
123Slave_IO_Running: Yes #<==IO线程状态必须为YesSlave_SQL_Running: Yes #<==SQL线程状态必须为YesSeconds_Behind_Master: 0 #<==和主库比较同步延迟的描述,这个参数很重要读取状态数据或状态文件,然后取出对应的值,和正确的值进行比对,如果不符合,则表示存在故障,即调用报警脚本报警。
- 如果想要更专业,还可以在主从不同步时,查看相应的错误号,判断对应的错误号以自动修复主从复制故障(也可以用过在配置文件里的配置参数来实现自动忽略故障)。
3. 实现脚本
这个脚本是在企业生产中正式使用的脚本: