すべてのクエリを強制終了-MySQL


17

時々、SNAFU中に20〜30 kill query xxxxxxx回走らなければなりません。任意の並べ替えkill allコマンドは、私が行方不明ですか?

入力が好きではないため。


サーバーを再起動しますか?
デレクダウニー

@DTest-クエリで実行できますか?サーバーに直接アクセスできません。
JIStone

これは、他の開発者やDBAにとって便利な質問です(+1)!!!
RolandoMySQLDBA

回答:


15

Linuxコマンドラインから

for PROC_TO_KILL in `mysql -h... -u... -p... -A --skip-column-names -e"SHOW PROCESSLIST" | grep -v "system user" | awk '{print $1}'` ; do mysql -h... -u... -p... -A --skip-column-names -e"KILL QUERY ${PROC_TO_KILL}" ; done

forループのヘッダーのgrepオプションを変更して、クエリ内の特定のユーザーまたは特定の文字列を見つけることができます。

プロセスリストがINFORMATION_SCHEMAにあるMySQL 5.1がある場合、これを実行して、mysqlクライアント内から一括でKILL QUERYコマンドを生成できます。

SELECT GROUP_CONCAT(CONCAT('KILL QUERY ',id,';') SEPARATOR ' ') KillQuery
FROM information_schema.processlist WHERE user<>'system user'\G

INFOフィールドに対してWHERE句を実行して、特定のクエリ、長時間実行されるクエリに対してTIMEフィールド、または特定のデータベースに対してDBフィールドを検索できます。


5
mysql> select concat('KILL ',id,';') from information_schema.processlist where user='root' into outfile '/tmp/a.txt';
Query OK, 2 rows affected (0.00 sec)

mysql> source /tmp/a.txt;
Query OK, 0 rows affected (0.00 sec)

http://www.mysqlperformanceblog.com/2009/05/21/mass-killing-of-mysql-connections/


LinuxやWindowsに関係なく、mysqlクライアントの範囲内で実行できるため、私は実際にこのアプローチが好きです。+1 !!!
-RolandoMySQLDBA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.