Die MySQL-Datenbank hängt aufgrund einiger Abfragen.
Wie kann ich die Prozesse finden und beenden?
Die MySQL-Datenbank hängt aufgrund einiger Abfragen.
Wie kann ich die Prozesse finden und beenden?
Antworten:
Hier ist die Lösung:
show full processlist;
, um die Prozess-ID mit dem Status abzurufen und selbst abzufragen, wodurch die Datenbank hängen bleibt.KILL <pid>;
, um diesen Prozess abzubrechen.Manchmal reicht es nicht aus, jeden Prozess manuell abzubrechen. Dafür müssen wir also einen Trick machen:
Select concat('KILL ',id,';') from information_schema.processlist where user='user';
, um alle Prozesse mit KILL
Befehl zu drucken .|
Zeichen ein und entfernen Sie es . Kopieren Sie alles und fügen Sie es erneut in die Abfragekonsole ein. DRÜCKE ENTER. BooM es ist geschafft .select group_concat(concat('KILL ',id,';') separator ' ')
So landen alle in einer Zeile, die kopiert werden kann
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;
Kopieren Sie dann das Ergebnis und fügen Sie es wieder in das Terminal ein. Etwas wie:
KILL 2871; KILL 2879; KILL 2874; KILL 2872; KILL 2866;
Sie können so etwas tun, um zu überprüfen, ob ein mysql
Prozess ausgeführt wird oder nicht:
ps aux | grep mysqld
ps aux | grep mysql
Wenn es dann ausgeführt wird, können Sie Folgendes killall
verwenden (abhängig davon, welche Prozesse derzeit ausgeführt werden):
killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe
Host
,db
,Command
,Time
,State
, oderInfo
:SELECT concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';
oderSELECT concat('KILL ',id,';') from information_schema.processlist where Time>'300';