База даних 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';