紫悦博客

不进则退,退一步万丈悬崖!

0%

Linux下Mysql监测主从脚本

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh

# check_mysql_slave status

# author www.izyue.com

export LANG=en_US.UTF-8

ip=eth0 #网卡名称

mysql_binfile=/usr/local/mysql/bin/mysql

mysql_user=root #MySQL数据库账号

mysql_pass='xxxxxx' #密码

mysql_sockfile=/tmp/mysql.sock

datetime=`date +"%Y-%m-%d/%H:%M:%S"` #获取当前时间

mysql_slave_logfile=/var/log/check_mysql_slave.log #日志文件路径,必须提前创建好

slave_ip=`ifconfig $ip|sed -n 2p | awk '{ print $2 }' | awk -F : '{ print $2 }'`

mail='[email protected]'

array=($($mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "show slave status\G" | grep -i "running" | awk -F ': ' '{print $2}' | sed 's/ /---/g'))

if [ "${array[0]}" == "Yes" ] && [ "${array[1]}" == "Yes" ]
then
echo "slave is OK"
else
error=$(echo "${array[2]}" | sed 's/---/ /g')
echo -e "$datetime $slave_ip Slave is not running! \nSlave_SQL_Running_State: $error" >> $mysql_slave_logfile
echo -e "时间:$datetime IP:$slave_ip Slave is not running! \n\nSlave_SQL_Running_State: $error" | mail -s "$datetime $slave_ip Slave is not running!(紧急)" $mail

#$mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "stop slave;"
#$mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;"
#$mysql_binfile -u$mysql_user -p$mysql_pass -S $mysql_sockfile -e "start slave;"
fi

配置crontab

1
*/15 * * * * /bin/bash /usr/sbin/check_mysql_slave.sh >/dev/null 2>&1