监控MYSQL主从同步配置中监控从库运行状态的脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控MYSQL主从同步配置中监控从库运行状态的脚本相关的知识,希望对你有一定的参考价值。
代码如下:
- #!/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 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"`
- 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,缺一不可;
注意,请结合自身的实际环境使用。
以上是关于监控MYSQL主从同步配置中监控从库运行状态的脚本的主要内容,如果未能解决你的问题,请参考以下文章