База даних MySQL зависає через деякі запити.
Як я можу знайти процеси та вбити їх?
База даних MySQL зависає через деякі запити.
Як я можу знайти процеси та вбити їх?
Відповіді:
Ось рішення:
show full processlist;
щоб отримати ідентифікатор процесу із статусом та самим запитом, що призводить до зависання бази даних;KILL <pid>;
щоб убити цей процес.Іноді недостатньо вбити кожен процес вручну. Отже, для цього ми маємо піти з деякою хитрістю:
Select concat('KILL ',id,';') from information_schema.processlist where user='user';
на друк усіх процесів за допомогою KILL
команди;|
знак труби , скопіюйте та вставте все знову на консоль запиту. HIT ENTER. Бум це зроблено .select group_concat(concat('KILL ',id,';') separator ' ')
так що всі вони потрапляють на один рядок, який можна скопіювати
SELECT group_concat(concat('KILL ',id,';') SEPARATOR ' \n') AS KILL_EVERYTHING FROM information_schema.processlist;
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;
Ви можете зробити щось подібне, щоб перевірити mysql
, запущений який-небудь процес чи ні:
ps aux | grep mysqld
ps aux | grep mysql
Тоді, якщо він запущений, ви можете killall
за допомогою (залежно від того, які всі процеси запущені в даний час):
killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe
Host
,db
,Command
,Time
,State
, абоInfo
:SELECT concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';
абоSELECT concat('KILL ',id,';') from information_schema.processlist where Time>'300';