歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell實戰之:mysql index文件檢查機制

shell實戰之:mysql index文件檢查機制
  01 #!/bin/sh 02 def_check_index() 03 { 04 #code by scpman 05 #http://www.scpman.com 06 #mail:[email protected] 07 #需求: 08 # 09 #   1.通過show master logs; 列出binlog文件序列如果順序不對,或記錄重復發告警 發郵件告警。 10 #   2、查看mysql目錄下的index文件,如果順序不對,或記錄重復發告警 11 #   12 #實現 13 #發送告警函數 14 def_send_mail() 15 { 16 msgip="10.0.7.44" #syslog服務器 17 ser_IP=`cat /etc/rc.conf | grep -E "ifconfig_[em1|bce1]" | awk '{print "IP:"$2}'| sed -n 1p ` #本機的ip 18 #echo $1 函數接收的第一個值 19 if [ -n "$1" ] && [ `echo "$1"|grep -c 'chongfu'` -gt 0 ] #判斷$1是否在,並且統計下chongfu這個字符是否大於0 20 then 21 echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 "  #大於0說明有錯誤的,就得告警 22 exit 23 elif [ -n "$1" ] && [ `echo "$1"|grep -c 'luanle'` -gt 0 ] #判斷$1是否在,並且統計下luanle這個字符是否大於0 24 then 25 echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 "  #大於0說明有錯誤的,就得告警 26 exit 27 else 28 echo ok 29 fi 30 } 31 #1、判斷index是否有重復的情況 32 def_index_is_one() 33 { 34 if [ -n "$1" ] 35 then 36 static_index=$1 37 def_send_mail `awk '{a[$1]++}END{for (j in a) print j,a[j]}' $static_index | awk -v flag="$static_index" '{if($2>1) print "chongfu-->"$0}'` 38 else 39 echo 'def_index_is_one $1 is null!exit' 40 exit 41 fi 42 } 43 #檢查mysql目錄下的index文件內容順序是否正常 44 def_static_index_shunxu() 45 { 46 bzfile='/usr/dlm_db/mysql/zqtx-bin.index' 47 current_line=`cat ${bzfile}|head -n 1|sed -e "s#./zqtx-bin.##g"` 48 for i in `cat ${bzfile}` 49 do 50 if [ `echo $i|sed -e "s#./zqtx-bin.##g"` -lt "$current_line" ] 51 then 52 def_send_mail "luanle:${bzfile}_${current_line}" 53 exit 54 fi 55 current_line=`echo $i|sed -e "s#./zqtx-bin.##g"` 56 done 57 } 58 #檢查mysql中show master logs的index文件內容順序是否正常 59 def_masterlog_index_shunxu() 60 { 61 mysql -uroot -p123456 -s -s -e "show master logs;" | awk '{print $1}' | sed -e "s/zqtx-bin.//g">/usr/dlm_db/mysql/flag_index 62 bzfile=/usr/dlm_db/mysql/flag_index 63 current_line=`cat ${bzfile}|head -n 1` 64 for i in `cat ${bzfile}` 65 do 66 if [ "$i" -lt "$current_line" ] 67 then 68 def_send_mail "luanle:master_logs_${i}" 69 exit 70 fi 71 current_line="$i" 72 done 73 } 74 def_index_is_one '/usr/dlm_db/mysql/zqtx-bin.index' 75 def_static_index_shunxu 76 def_masterlog_index_shunxu 77 def_index_is_one '/usr/dlm_db/mysql/flag_index' 78 } 79 def_check_index  
Copyright © Linux教程網 All Rights Reserved