1. 程式人生 > >mysql解決鎖表指令碼

mysql解決鎖表指令碼

很多時候由於異常或程式錯誤會導致個別程序佔用大量系統資源,需要結束這些程序,通常可以使用以下命令Kill程序:
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
mysqladmin kill ${id}
done