shell實戰之:mysql index檔案檢查機制
01#!/bin/sh02def_check_index()03{04#code by scpman05#http://www.scpman.com06#mail:freeddser@gmail.com07#需求:08#09# 1.通過show master logs; 列出binlog檔案序列如果順序不對,或記錄重複發警示 發郵件警示。10# 2、查看mysql目錄下的index檔案,如果順序不對,或記錄重複發警示11# 12#實現13#發送警示函數14def_send_mail()15{16msgip="10.0.7.44" #syslog伺服器17ser_IP=`cat /etc/rc.conf | grep -E "ifconfig_[em1|bce1]" | awk '{print "IP:"$2}'| sed -n 1p ` #原生ip18#echo $1 函數接收的第一個值19if [ -n "$1" ] && [ `echo "$1"|grep -c 'chongfu'` -gt 0 ] #判斷$1是否在,並且統計下chongfu這個字元是否大於020then21echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 " #大於0說明有錯誤的,就得警示22exit23elif [ -n "$1" ] && [ `echo "$1"|grep -c 'luanle'` -gt 0 ] #判斷$1是否在,並且統計下luanle這個字元是否大於024then25echo /usr/bin/logger -p local1.info -h $msgip "the services: $IP mysql index file $1 " #大於0說明有錯誤的,就得警示26exit27else28echo ok29fi30}31#1、判斷index是否有重複的情況32def_index_is_one()33{34if [ -n "$1" ]35then36static_index=$137def_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}'`38else39echo 'def_index_is_one $1 is null!exit'40exit41fi42}43#檢查mysql目錄下的index檔案內容順序是否正常44def_static_index_shunxu()45{46bzfile='/usr/dlm_db/mysql/zqtx-bin.index'47current_line=`cat ${bzfile}|head -n 1|sed -e "s#./zqtx-bin.##g"`48for i in `cat ${bzfile}`49do50if [ `echo $i|sed -e "s#./zqtx-bin.##g"` -lt "$current_line" ]51then52def_send_mail "luanle:${bzfile}_${current_line}"53exit54fi55current_line=`echo $i|sed -e "s#./zqtx-bin.##g"`56done57}58#檢查mysql中show master logs的index檔案內容順序是否正常59def_masterlog_index_shunxu()60{61mysql -uroot -p123456 -s -s -e "show master logs;" | awk '{print $1}' | sed -e "s/zqtx-bin.//g">/usr/dlm_db/mysql/flag_index62bzfile=/usr/dlm_db/mysql/flag_index63current_line=`cat ${bzfile}|head -n 1`64for i in `cat ${bzfile}`65do66if [ "$i" -lt "$current_line" ]67then68def_send_mail "luanle:master_logs_${i}"69exit70fi71current_line="$i"72done73}74def_index_is_one '/usr/dlm_db/mysql/zqtx-bin.index'75def_static_index_shunxu76def_masterlog_index_shunxu77def_index_is_one '/usr/dlm_db/mysql/flag_index'78}79def_check_index