mysql主從架構(gòu)檢查slave端狀態(tài),如果發(fā)現(xiàn)問題則通過郵件告警,郵件告警設(shè)置可以參照之前的文章,將此腳本加入crontab定時任務(wù),請根據(jù)實(shí)際情況調(diào)整 mysql的路徑和socket,密碼等的設(shè)置
smtp服務(wù)器配置:
Centos 配置mailx使用外部smtp服務(wù)器發(fā)送郵件
#!/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命令執(zhí)行 show slave status,獲取相應(yīng)的信息
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