zoukankan      html  css  js  c++  java
  • shell(3)-mysql主从监控shell

    需要先明白数据库主从同步正常的标准是来查看两个线程Slave_IO和Slave_SQL两个线程的工作状态;


    #!/bin/bash
    #Check MySQL Slave's Runnning Status
    #Crontab time 00:10

    MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`
    MYSQLIP=`ifconfig eth0|grep "inet addr" | awk -F[:" "]+ '{print $4}'`
    STATUS=$(/usr/bin/mysql -uroot -p11111 -S /var/lib/mysql/mysql.sock -e "show slave statusG" | 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"`

    function checkMysqlStatus(){
    if [ "$MYSQLPORT" == "3306" ]
    then
    /usr/bin/mysql -uroot -p11111 --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1
    if [ $? -ne 0 ]
    then
    echo "Server: $MYSQLIP mysql is down, please try to restart mysql by manual!" > /var/log/mysqlerr
    mail -s "WARN! server: $MYSQLIP mysql is down." admin@yourdomain.com < /var/log/mysqlerr
    else
    echo "mysql is running..."
    fi
    else
    mail -s "WARN!Server: $MYSQLIP mysql is down." admin@yourdomain.com
    fi
    }

    checkMysqlStatus

    if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
    then
    echo "MySQL Slave is running!"
    else
    echo "####### $DATA #########">> /data/mysql/mysql_slave_status.log
    echo "MySQL Slave is not running!" >> /data/mysql/mysql_slave_status.log
    echo "MySQL Slave is not running!" | mail -s "WARN! $MYSQLIP MySQL Slave is not running." admin@yourdomain.com
    fi

    每十分钟运行一次
    */10 * * * * root /bin/sh /root/mysql_slave_status.sh

    原理:
    1)监控MYSQL的运行状态;
    2)Slave机器的IO和SQL状态都必须为YES,缺一不可;

  • 相关阅读:
    题解45 跳跃游戏 II
    《重构》第八章阅读总结
    Scala学习笔记一
    Java初学随笔
    染色算法总结
    BingMap
    Google Earth API 替换方案
    本周安排
    OleDb 内存泄露问题
    css3 布局
  • 原文地址:https://www.cnblogs.com/luoyan01/p/9734078.html
Copyright © 2011-2022 走看看