我们的初级dba误删index,mysql中全是10S以上的慢sql,mysql服务被hang住了,而且慢sql不断在增加中,手动在mysql界面kill的话,是不现实的。
于是有了以下的shell脚本,用来清除不断增长的mysql慢查询sql语句。
shell文件内容:
#It is used to kill processlist of mysql sleep
#!/bin/sh
while :
do
n=`mysqladmin processlist -uadmin -pxxxxx|grep -i sleep |wc -l`
date=`date +%Y%m%d[%H:%M:%S]`
echo $n
if [ "$n" -gt 10 ]
then
for i in `mysqladmin processlist -uadmin -pxxxxxx|grep -i sleep |awk '{print $2}'`
do
mysqladmin -uadmin -pxxxxxx kill $i
done
echo "sleep is too many I killed it " >> /tmp/sleep.log
echo "$date : $n" >> /tmp/sleep.log
fi
sleep 1
done
清除完以后,建议抓紧为表加上合适的索引。