经常出现大量的Locked情况,可以使用以下脚本来定时kill掉这些进程。不过建议还是优化的sql语句和数据库,这样才能治本。
#!/bin/bash mysql_pwd="xxxxxx" #mysql的root密码 mysql_exec="/usr/local/mysql/bin/mysql" tmp_dir="/tmp" file_sh="$tmp_dir/mysql_kill_locked.sh" file_tmp="$tmp_dir/mysql_kill_locked.tmp" file_log="$tmp_dir/mysql_kill_locked.log" #日志 $mysql_exec -uroot -p$mysql_pwd -e "show processlist" | grep -i "Locked" > $file_tmp cat $file_tmp >> $file_log for line in `cat $file_tmp | awk '{print $1}'` do echo "$mysql_exec -uroot -p$mysql_pwd -e \"kill $line\"" >> $file_sh done chmod +x $file_sh sh $file_sh #执行临时脚本 cat /dev/null > $file_sh #清空临时脚本