天天看點

mysql主從監控腳本:

在大型網站中對資料庫往往都是做主從設計的,要是根據設計模式讀寫都隻是進行再主庫上面,那麼從伺服器往往是智能起了備份的作用,有時候備份端口了适當時候手工添加就好,但是要是網站做了讀寫分離,不及時發現那就是災難性的了:(一般出現從庫跟不上可以暫時先把讀也切換到主上去。等從恢複好了再切回來):下面根據這個給出一條主從監控腳本:

#!/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}'`

STATUS=$(/etc/mysql/bin/mysql -uxiaoluo -pxiaoluo -S /tmp/mysql.sock -e "show slave status\G" | grep -i "running")  

IO_env=`echo $STATUS | grep "Slave_IO_Running" | awk  ' {print $2}'`

SQL_env=`echo $STATUS | grep "Slave_SQL_Running" | awk  '{print $2}'`

DATA=`date +"%y-%m-%d %H:%M:%S"`

if [ "$MYSQLPORT" == "3306" ]

then

  echo "mysql is running"

else

  mail -s "warn!server: $MYSQLIP mysql is down" [email protected]

fi

if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ]

  echo "Slave is running!"

  echo "####### $DATA #########">> /data/mysql/check_mysql_slave.log

  echo "Slave is not running!" >>    /data/mysql/check_mysql_slave.log

#  echo "Slave is not running!" | mail -s "warn! $MYSQLIP MySQL Slave is not running" [email protected]

fi 

這裡我選擇的是發送到163郵箱,現在手機可以下載下傳一個第三方用戶端就可以解決了。然後要使用mail的話最好要注意修改一些地方:(不然很有可能發送不出去)

vi /etc/mail.rc      

set [email protected]

set smtp=smtp://smtp.163.cn:25

set [email protected]

set smtp-auth-password=我的密碼是123,你相信麼

修改完之後可以測試已經發送郵件成功了。