mysql主从同步复制延迟状态监控脚本

Java技术 潘老师 2年前 (2022-02-24) 974 ℃ (0) 扫码查看

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这一类的,功能更加强大。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/4550.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】