mysql主从架构检查slave端状态,如果发现问题则通过邮件告警,邮件告警设置可以参照之前的文章,将此脚本加入crontab定时任务,请根据实际情况调整 mysql的路径和socket,密码等的设置
smtp服务器配置:
#!/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}'`
# 通过mysqladmin命令执行 show slave status,获取相应的信息
STATUS=$(/usr/local/webserver/mysql/bin/mysql -u root-ppasswd -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}'`
if [ "$MYSQLPORT" == "3306" ]
then
echo "mysql is running"
else
mail -s "warn!server: $MYSQLIP mysql is down" xxx@163.com
fi
if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]
then
echo "Slave is running!"
else
echo "####### $date #########">> /data/data/check_mysql_slave.log
echo "Slave is not running!" >> /data/data/check_mysql_slave.log
mail -s "warn! $MySQLIP_replicate_error" xxx@163.com << /data/data/check_mysql_slave.log
fi