mysql中kill掉所有鎖表的進程

 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章