web-dev-qa-db-ja.com

MySQL接続を強制終了する方法

MySQLを使用してWebサイトを構築しています。 TOAD for MySQLを使用していますが、エラーが発生しているため、突然データベースに接続できません。

"接続が多すぎます"

Toad for MySQLに既存の接続を表示してそれらを強制終了したり、すべての接続を単純に閉じたりする方法はありますか?

40
leora

いいえ、組み込みのMySQLコマンドはありませんがあります。それをサポートするさまざまなツールとスクリプトがあり、いくつかの接続を手動で強制終了したり、サーバーを再起動したりできます(ただし、速度は遅くなります)。

つかいます SHOW PROCESSLISTはすべての接続を表示し、KILLは終了するプロセスIDです。

タイムアウト設定を編集して、MySQLデーモンに非アクティブなプロセス自体を強制終了させるか、接続数を増やすことができます。 ユーザー名あたりの接続数を制限するを使用することもできます。したがって、プロセスが誤動作を続ける場合、影響を受けるプロセスはプロセス自体のみであり、データベース上の他のクライアントはロックアウトされません。

サーバーに自分自身を接続できない場合、MySQLはSUPER privilegeを持つユーザーに対して常に1つの追加の接続を予約することを知っておく必要があります。問題のプロセスが何らかの理由でその特権を持つユーザー名を使用している場合を除き...

その後、データベースに再度アクセスできるようになったら、その数の接続を生成しているプロセス(Webサイト)を修正する必要があります。

76
Konerak
mysql> SHOW PROCESSLIST;
+-----+------+-----------------+------+---------+------+-------+---------------+
| Id  | User | Host            | db   | Command | Time | State | Info      |
+-----+------+-----------------+------+---------+------+-------+----------------+
| 143 | root | localhost:61179 | cds  | Query   |    0 | init  | SHOW PROCESSLIST |
| 192 | root | localhost:53793 | cds  | Sleep   |    4 |       | NULL      |
+-----+------+-----------------+------+---------+------+-------+----------------+
2 rows in set (0.00 sec)

mysql> KILL 192;
Query OK, 0 rows affected (0.00 sec)

ユーザー192:

mysql> SELECT * FROM exept;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

mysql> SELECT * FROM exept;
ERROR 2013 (HY000): Lost connection to MySQL server during query
31
zloctb

最大スレッド接続が表示されるように接続を確認することをお勧めします

show variables like "max_connections";

サンプル

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 13  |
+-----------------+-------+
1 row in set

次に例で増やします

set global max_connections = 500;
6
zero8

前述のように、特別なコマンドはありません。ただし、これらの接続がすべて非アクティブな場合は、「フラッシュテーブル」を使用します。アクティブでないすべての接続を解放できます。

4
user1812597

MySQL Workbenchの場合:

左側のナビゲーター>管理>クライアント接続

クエリと接続を強制終了するオプションを提供します。

注:これは、OPが尋ねたようなTOADではありませんが、私のようなMySQL Workbenchユーザーはここで終わるかもしれません

0
David Hudman