文
章
目
录
章
目
录
MySQL主从同步或者主从复制,往往会存在数据同步延迟的情况,如果延迟较大,可能是影响生产,因此我们就需要对mysql主从同步或复制延迟状态进行监控。下面潘老师演示下使用shell脚本简单地实现状态监控。
1、同步状态参数查看
首先我们要只要主从复制的参数在哪查看,其实在MySQL8主从复制(一主一从)配置搭建详解的时候就已经使用该指令,登录mysql后,使用如下指令:
show slave status \G
可以看到很多参数,其中有一个参数名为Seconds_Behind_Master
,取值一般为NULL或者0和大于0的值,这个参数就是主从同步延迟参数,单位是秒。
但是监控主从同步状态一般会看如下3个参数:
- Slave_IO_Running: I/O线程是否被启动并成功地连接到主服务器上。
- Slave_SQL_Running: SQL线程是否被启动。
- Seconds_Behind_Master:和主库比同步延迟的秒数
比较期待的结果就是Slave_IO_Running=Yes,Slave_SQL_Running=Yes,Seconds_Behind_Master=0
2、使用脚本监控同步状态
#!/bin/bash mysql_cmd="mysql -u root -p密码" errornum=(1158 1159 1008 1007 1062) while true do array=($($mysql_cmd -e "show slave status\G"|egrep ‘_Running|Behind_Master|Last_SQL_Errno‘|awk ‘{print $NF}‘)) if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[2]}" == "0" ] then echo "MySQL is slave is running" else for ((i=0;i<${#errornum[*]};i++)) do if [ "${array[3]}" = "${errornum[$i]}" ];then $mysql_cmd -e "stop slave &&set global sql_slave_skip_counter=1;start slave;" fi done char="MySQL slave is downed" echo "$char" echo "$char"|mail -s "$char" xxxxx@qq.com break fi sleep 30 done
该脚本没30秒会监控一次同步状态参数,当以上3个参数出现异常时就会发一封邮件到你的邮箱。
当然,这些使用脚本的方案都是比较容易掌握且好理解的,但是功能还是有限,想要更好地监控主从同步复制状态还是要使用第三方的工具,比如Percona Toolkit这一类的,功能更加强大。