Prozesse mit bestimmtem 'state' killen
Bash-Einzeiler (auf der Linux-Konsole)
Wenn du SSH-Zugriff auf den Server oder den MySQL-Client hast, kannst du die Prozess-IDs mit awk auslesen und direkt zurück an MySQL zum Beenden pipe-en:
mysql -e "SELECT id FROM information_schema.processlist WHERE state = 'Waiting for table flush';" \
| awk '{if(NR>1) print "KILL "$1";"}' \
| mysql
mysql -e "SELECT id FROM information_schema.processlist WHERE state = 'User Sleep';" \
| awk '{if(NR>1) print "KILL "$1";"}' \
| mysql
pt-kill (Der professionelle Weg für Produktion)
In Produktionsumgebungen ist pt-kill (aus dem Percona Toolkit) der sicherste Standard. Es beendet gezielt nur Prozesse, die Kriterien wie den Status erfüllen:
pt-kill --match-state "Waiting for table flush" --kill --victim-order oldest --interval 5
-
--kill: Beendet die Verbindungen. -
--print(optional statt--kill): Zeigt zuerst nur an, was gelöscht werden würde, ohne es auszuführen.