检查mysql锁表问题自动杀进程

#!/bin/bash
#Functionality: 如果 MySQL 锁表,则发信息给管理员 [半小时内不重发第二次]
#Author: lrm
#Date: 2012-06-25
 
YYYY=`date "+%Y"`
MM=`date "+%m"`
DD=`date "+%d"`
HH=`date "+%H"`
mm=`date "+%M"`
ss=`date "+%S"`
 
name="$YYYY-$MM-$DD-$HH"
date="$YYYY-$MM-$DD-$HH:$mm:$ss"
db_user=$(sed -n '3p' /etc/aa.conf | awk '{print $3}')
db_passwd=$(sed -n '4p' /etc/aa.conf  |awk '{print $3}')
 
##############################################################################################
#mysql -utest.com  -p -e "show processlist" | grep -i "Locked" >> locked_log.txt
mysql -u$db_user  -p$db_passwd -e "show processlist" | grep -i "Sending" >> locked_log$name.txt
 
 ###判断是否为空文件,如果没有锁表就是为空文件
if [ ! -s locked_log$name.txt ]  
 then        
  echo "is ok"
  ###删除空文件
  rm -rf locked_log$name.txt     
else                               
  ###如果不是空文件就执行下面
  ###有锁表的情况就一行一行查看文件
  for line in `cat locked_log$name.txt | awk '{print $1}'`    
  do
    echo $line
    ###把锁表语句ID记录到到一个sql文件里面
    echo "kill $line;" >> kill_thread_id.sql   
  done
 
  ###保存日志
  mv  locked_log$name.txt /var/log/mysql/
 
  ###杀死锁表语句  
  mysql -u$db_user  -p$db_passwd -e "source /root/kill_thread_id.sql"  
 
  ###删除记录文件
  rm -rf /root/kill_thread_id.sql   
 
  ###短信通知管理员    
  php /web/siteManger/reportMySQLSyncErr.php  
fi

本文出自 “信不信由你” 博客,转载请与作者联系!

你可能感兴趣的:(mysql,短信通知,锁表问题,自动杀进程)