• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Shell脚本实现监控MySQL主从同步

    代码如下:

    复制代码 代码如下:

    #!/bin/bash
    #check MySQL_Slave Status
    #crontab time 00:10
    MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'`
    MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
    STATUS=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")
    IO_env=`echo $STATUS | grep IO | awk  ' {print $2}'`
    SQL_env=`echo $STATUS | grep SQL | awk  '{print $2}'`
    DATA=`date +"%y-%m-%d %H:%M:%S"`
    if [ "$MYSQLPORT" == "3306" ]
    then
      echo "mysql is running"
    else
      mail -s "warn!server: $MYSQLIP mysql is down" yuhongchun027@163.com
    fi
    if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
    then
      echo "Slave is running!"
    else
      echo "####### $DATA #########">> /data/data/check_mysql_slave.log
      echo "Slave is not running!" >>    /data/data/check_mysql_slave.log
      echo "Slave is not running!" | mail -s "warn! $MYSQLIP MySQL Slave is not running" yuhongchun027@163.com
    fi

    建议每十分钟运行一次

    复制代码 代码如下:

    */10 * * * * root /bin/sh /root/mysql_slave.sh

    记得在每台MySQL从机上分配一个yuhongchun的用户,权限大些也没关系,只限定在本地运行,如下所示:

    复制代码 代码如下:

    grant all privileges on *.* to "yuhongchun"@"127.0.0.1" identified by "yuhongchun101";
    grant all privileges on *.* to "yuhongchun"@"localhost" identified by "yuhongchun101";

    脚本设计思路:

    1、此脚本应该能适应各种各样不同的内外网环境,即IP不同的环境;
    2、让脚本也顺便监控下MySQL是否正常运行;
    3、Slave机器的IO和SQL状态都必须为YES,缺一不可,这里用到了多重条件判断-a。

    脚本产生的背景环境:

    我有不少基于公网类型的网站(没有硬件防火墙,直接置于IDC机房)做的都是MySQL主从架构,从机主要起备份数据库和冷备份的作用,虽然从机宕机了问题不大,但也影响数据的备份工作;这样的网站有数十个,如果一个一个手动的检查,每天都要浪费不少时间,所以玩了下脚本控,设计了如上脚本。

    脚本实践:

    此脚本我已用于了生产环境,大家可以放在我们的从MySQL机器上,用来监控;另外建议有时也手动检查下,有次发现rsync --delete 自动删除了/data/data里面的数据,即从数据库的位置,脚本没有报警。

    后期应用:

    后期公司的MySQL数据库准备由一主一从架色升级成一主多从,读写分离的架构,LVS作从数据库的负载均衡器,此脚本自动监控从MySQL的replication状态,如果不能同步则自动关闭本机的MySQL服务,免得影响整个网站的正常业务访问。当然了,到时脚本的运行周期肯定也需要更改,由10分钟变成秒级的,这个可以通过while循环来实现。

    您可能感兴趣的文章:
    • shell脚本监控mysql主从状态
    • 实战模拟监控MySQL服务shell脚本小结
    • CentOS下编写shell脚本来监控MySQL主从复制的教程
    • shell监控脚本实例—监控mysql主从复制
    • zabbix监控MySQL主从状态的方法详解
    • 监控MySQL主从状态的shell脚本
    上一篇:Shell脚本中使用for循环和cat命令实现按顺序合并文件
    下一篇:获取shell脚本自身所在目录的Shell脚本分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Shell脚本实现监控MySQL主从同步 Shell,脚本,实现,监控,MySQL,