笔者有不少基于公网类型的网站(没有硬件防火墙,直接置于IDC机房)做的都是MySQL主从架构,从机首要起备份数据库和冷备份的浸染,虽然从机宕机了问题不大,但也影响数据的备份工作;这样的网站稀有十个,如不美观一个一个手动的搜检,天天都要华侈不少时刻,所以设计了一个自动监控从MySQL同步的剧本。 剧本设计思绪:
& Z4 F# _; |) o; Z, x 1、此剧本应该能顺应各类各样分歧的内外网情形,即IP分歧的情形;7 W. x# n* O+ n" v1 `7 `. r) n. {+ ^
2、让剧本也顺便监控下MySQL是否正常运行;, ], W/ J2 M; ]6 y+ c& h- r$ W
3、Slave机械的IO和SQL状况都必需为YES,缺一不成,这里用到了多重前提判定-a.
" r, q% G3 S( W. z% x 剧本内容:! ~" Q" P) M* ]2 c4 [
#!/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=$(/usr/local/webserver/mysql/bin/mysql -u yuhongchun -pyuhongchun101 -S /tmp/mysql.sock -e "show slave statusG" | grep -i "running"): f) U8 Q5 l M1 S& [) M7 Y, G
IO_env=`echo $STATUS | grep IO | awk ' {print $2}'` SQL_env=`echo $STATUS | grep SQL | awk '{print $2}'`& g$ U( w4 B, z1 i; o( f2 T
if then echo "mysql is running" else mail -s "warn!server: $MYSQLIP mysql is down" fi5 A% E4 p, T' W6 o6 p; @
+ ~# B7 z% s) K* A- h if 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" |