Hoe de MySQL-proceslijst te vinden en die processen te beëindigen?

De MySQL-database loopt vast vanwege enkele zoekopdrachten.

Hoe kan ik de processen vinden en uitschakelen?


Antwoord 1, autoriteit 100%

Hier is de oplossing:

  1. Aanmelden bij DB;
  2. Voer een commando uit show full processlist;om het proces-ID met status te krijgen en vraag zelf om de database te laten hangen;
  3. Selecteer de proces-ID en voer de opdracht KILL <pid>;uit om dat proces te beëindigen.

Soms is het niet voldoende om elk proces handmatig te beëindigen. Dus daarvoor moeten we een trucje gebruiken:

  1. Log in op MySQL;
  2. Voer een query uit Select concat('KILL ',id,';') from information_schema.processlist where user='user';om alle processen af te drukken met KILLcommando;
  3. Kopieer het zoekresultaat, plak en verwijder een |-teken, kopieer en plak alles opnieuw in de queryconsole. HIT ENTER. BoeM het is klaar.

Antwoord 2, autoriteit 18%

select GROUP_CONCAT(stat SEPARATOR ' ') from (select concat('KILL ',id,';') as stat from information_schema.processlist) as stats;

Kopieer en plak vervolgens het resultaat terug in de terminal.
Iets als:

KILL 2871; KILL 2879; KILL 2874; KILL 2872; KILL 2866;

Antwoord 3, autoriteit 8%

Je kunt zoiets als dit doen om te controleren of een mysql-proces actief is of niet:

ps aux | grep mysqld
ps aux | grep mysql

Als het dan draait, kun je killallgebruiken door (afhankelijk van wat alle processen momenteel draaien):

killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe    

Antwoord 4

Voor MySQL 8.xx kunt u gewoon MySQLADMIN-shutdown gebruiken. Ik weet niet zeker of dit werkt op oudere versies.

Voorbeeld waar root-wachtwoord is SEYPASS

mysqladmin -u root -pSomePass shutdown

Ook moet u shutdown in /var/log/mysql/error.log

zien

Other episodes