web-dev-qa-db-ja.com

MySQLプロセスリストを見つけて、それらのプロセスを強制終了する方法は?

いくつかのクエリが原因で、MySqlデータベースがハングするという問題に直面しています。

プロセスリスト、およびMySqlのプロセスIDを見つけて、それらを強制終了するにはどうすればよいですか?

40
Ashish Dadhich

ここで解決策を紹介します。

  1. DBにログインします。
  2. コマンドshow full processlist;を実行します
  3. ここで、ステータス付きのプロセスIDを取得し、データベースをハングさせる問題の原因となる自己照会を行います。
  4. プロセスIDを選択し、コマンドKILL <pid>;を実行します
  5. ここで、そのプロセスを終了します。

各プロセスを手動で強制終了するには不十分な場合があります。したがって、そのためには何らかのトリックを使用する必要があります。ここで私はそのトリックで行く:

  1. MySqlにログイン
  2. そのクエリを実行しますSelect concat('KILL ',id,';') from information_schema.processlist where user='user';
  3. これにより、すべてのプロセスがKILLコマンドで出力されます。
  4. すべてのクエリ結果をコピーし、それらを操作してパイプ|記号を削除し、クエリコンソールにすべてを貼り付けます。 HIT ENTER。BooM its done
81
Ashish Dadhich

mysqlプロセスが実行されているかどうかを確認するには、次のようなことを実行できます。

ps aux | grep mysqld
ps aux | grep mysql

次に、実行中の場合は、次を使用してkillallを実行できます(現在実行中のすべてのプロセスに応じて)。

killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe    
3
Pritam Banerjee
select GROUP_CONCAT(stat SEPARATOR ' ') from (select concat('KILL ',id,';') as stat from information_schema.processlist) as stats;

次に、結果をコピーしてターミナルに貼り付けます。何かのようなもの:

KILL 2871; KILL 2879; KILL 2874; KILL 2872; KILL 2866;
1