本文共 1402 字,大约阅读时间需要 4 分钟。
在大型网站中对数据库往往都是做主从设计的,要是根据设计模式读写都只是进行再主库上面,那么从服务器往往是智能起了备份的作用,有时候备份端口了适当时候手工添加就好,但是要是网站做了读写分离,不及时发现那就是灾难性的了:(一般出现从库跟不上可以暂时先把读也切换到主上去。等从恢复好了再切回来):下面根据这个给出一条主从监控脚本:
#!/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" xxx@163.com fi if [ "$IO_env" = "Yes" -a "$SQL_env" = "Yes" ] then echo "Slave is running!" else 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" xxxx@163.com fi这里我选择的是发送到163邮箱,现在手机可以下载一个第三方客户端就可以解决了。然后要使用mail的话最好要注意修改一些地方:(不然很有可能发送不出去)
vi /etc/mail.rc
set from=xxx@163.com
set smtp=smtp://smtp.163.cn:25 set smtp-auth-user=xxx@163.com set smtp-auth-password=我的密码是123,你相信么修改完之后可以测试已经发送邮件成功了。