Подтвердить что ты не робот

Как убить соединения MySQL

Я создаю сайт с MySQL. Я использую TOAD для MySQL, и вдруг я не могу подключиться к базе данных, поскольку получаю сообщение об ошибке:

"Слишком много соединений"

Есть ли способ в Toad для MySQL просматривать существующие подключения, чтобы их можно было убить или просто закрыть все соединения?

4b9b3361

Ответ 1

Нет, для нет встроенной команды MySQL . Существуют различные инструменты и скрипты, которые его поддерживают, вы можете убить некоторые соединения вручную или перезапустить сервер (но это будет медленнее).

Используйте SHOW PROCESSLIST для просмотра всех подключений и KILL идентификатор процесса, который вы хотите убить.

Вы можете отредактировать параметр тайм-аута, чтобы демон MySQL запустил неактивные процессы или увеличил количество подключений. Вы даже можете ограничить количество подключений для каждого имени пользователя, так что если процесс будет работать неправильно, единственным затронутым процессом будет сам процесс, и никакие другие клиенты в вашей базе данных не будут заблокированы.

Если вы больше не можете подключиться к серверу, вы должны знать, что MySQL всегда резервирует 1 дополнительное соединение для пользователя с привилегией SUPER. Если ваш процесс нарушения по какой-то причине не использует имя пользователя с этой привилегией...

Затем после того, как вы снова получите доступ к своей базе данных, вы должны исправить процесс (веб-сайт), который порождает многие подключения.

Ответ 2

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)

USER 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

Ответ 3

Я бы рекомендовал проверить соединения, чтобы показать максимальное подключение потока

show variables like "max_connections";

образец

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

Затем увеличьте его на примере

set global max_connections = 500;

Ответ 4

Как уже упоминалось выше, для этого нет специальной команды. Однако, если все эти соединения неактивны, используя "таблицы flush"; может освободить все те соединения, которые неактивны.

Ответ 5

В MySQL Workbench:

Левый навигатор> Управление> Клиентские подключения

Это дает вам возможность убивать запросы и соединения.

Примечание: это не TOAD, как спросил OP, но пользователи MySQL Workbench, такие как я, могут оказаться здесь