mysql中kill掉所有鎖表的進程


在數據量大或者查詢特別頻繁的時候,偶爾會出現查詢鎖表的情況,通過show processlist;可以看到存在有Locked狀態,

現寫了個shell腳本自動殺死鎖表進程,

代碼如下:

 1 #!/bin/bash
 2 
 3 mysql_cmd=mysql
 4 host=192.168.1.1
 5 user=root
 6 password=root
 7 port=3306
 8 kill_process=$($mysql_cmd -h $host -u $user -p$password -P $port -e 'show processlist' | grep -i "Locked" | awk '{if(NR>1'"${check}"') print $1}');
 9 
10 for process_id in $kill_process
11 do
12   #echo $process_id
13   $mysql_cmd -h $host -u $user -p$password -P $port -e 'kill '"${process_id}"
14 done

另外種更簡單的方式

 11)將所有的MySQL連接進程殺掉 
 2 for i in ` mysql -uroot -pzhangyun -Bse "show processlist" | grep -v "show processlist" | awk '{print $1}'` 
 3 do 
 4 mysql -uroot -pzhangyun -e "kill $i" 
 5 done 
 6 
 7 注:這里將自身命令的show processlist進程過濾掉 
 8 
 92)刪除指定用戶的連接進程 
10 for i in `mysql -uroot -pzhangyun -se "show processlist" | grep -v "show processlist" | awk '{if($2=="youname")print $1}'` 
11 do 
12 mysql -uroot -pzhangyun -e "kill $i" 
13 done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM