mysql中kill掉所有鎖表的進程


轉載請保留如下作者信息

作者 : jesse

博客 : http://hi.baidu.com/leechl

3點鍾剛睡下, 4點多, 同事打電話告訴我用戶數據庫掛掉了. 我起床看一下進程列表.

mysql>show processlist;

出來嘩啦啦好幾屏幕的, 沒有一千也有幾百條, 查詢語句把表鎖住了, 趕緊找出第一個Locked的thread_id, 在MySQL的shell里面執行.

mysql>kill thread_id;

kill掉第一個鎖表的進程, 依然沒有改善. 既然不改善, 咱們就想辦法將所有鎖表的進程kill掉吧, 簡單的腳本如下.

#!/bin/bash
mysql -u root -e "show processlist" | grep -i "Locked" >> locked_log.txt

for line in `cat locked_log.txt | awk '{print $1}'`
do 
   echo "kill $line;" >> kill_thread_id.sql
done

現在kill_thread_id.sql的內容像這個樣子

kill 66402982;
kill 66402983;
kill 66402986;
kill 66402991;
.....

好了, 我們在mysql的shell中執行, 就可以把所有鎖表的進程殺死了.

mysql>source kill_thread_id.sql

當然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'`
do
   mysqladmin kill ${id}
done
 


免責聲明!

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



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