#!/bin/bash
# check mysql slave status
while [ 1 ]
do
MAILTO=testwhocare@163.com
USER="check"
PSW="***"
WAITTIME=1800
#ADDR=""192.168.*.*" "192.168.*.*""
ADDR="192.168.*.*"
declare -a slave_is
for IP in $ADDR
do
slave_is=($(/usr/local/mysql/bin/mysql -h$IP -u${USER} -p${PSW} -e "show slave status\G"|grep Running|awk '{print $2}'))
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
then
 echo -e "${IP} - Slave Status: \e[1;32m [ OK ] \e[0m" > /app/sqlstatus
else
 echo "${IP} - Slave Status: \e[1;31m [ ERROR ] \e[0m" > /app/sqlstatus
 cat "/app/sqlstatus" |mutt -s "mysql slave" $MAILTO
fi
sleep $WAITTIME
done
done

wKioL1NwmUfxh7T4AAB2h2PFvbg805.jpg

先在从服务器创建一个可以检测的账户,这里用check,间隔一小时检查一次,如果出错,发送邮件 (yum install mytt 或者用sendmail)


只是查看mysql主从状态shell脚本

#!/bin/bash
# check mysql slave status
USER="check"
PSW="FY@239"
#ADDR=""192.168.*.*" "192.168.*.*""
ADDR="192.168.*.*"
declare -a slave_is
for IP in $ADDR
do
slave_is=($(/usr/local/mysql/bin/mysql -h$IP -u${USER} -p${PSW} -e "show slave status\G"|grep Running|awk '{print $2}'))
echo ${slave_is[0]} ${slave_is[1]}
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]
then
 echo -e "${IP} - Slave Status: \e[1;32m [ OK ] \e[0m"
else
 echo "${IP} - Slave Status: \e[1;31m [ ERROR ] \e[0m"
fi
done

运行结果如下

wKioL1N2wcTyKXOLAACAZ0F93Bc610.jpg