Como matar todos os processos do MySQL na lista de processos?

4

Eu quero matar todos os processos do MySQL na lista de processos. Existe alguma maneira de fazer isso?

# mysqladmin -u root -p processlist
Enter password: 
+------+----------------------+---------------------+----+---------+------+-------+------------------+
| Id   | User                 | Host                | db | Command | Time | State | Info             |
+------+----------------------+---------------------+----+---------+------+-------+------------------+
| 1908 | unauthenticated user | 192.168.1.103:46046 |    | Connect |      | login |                  |
| 1909 | unauthenticated user | 192.168.1.103:46047 |    | Connect |      | login |                  |
| 1910 | unauthenticated user | 192.168.1.103:46048 |    | Connect |      | login |                  |
| 1914 | unauthenticated user | 192.168.1.103:46049 |    | Connect |      | login |                  |
| 1946 | unauthenticated user | 192.168.1.103:46076 |    | Connect |      | login |                  |
| 1954 | unauthenticated user | 192.168.1.103:46078 |    | Connect |      | login |                  |
| 2015 | root                 | localhost           |    | Query   | 0    |       | show processlist |
+------+----------------------+---------------------+----+---------+------+-------+------------------+
    
por billyduc 17.08.2009 / 05:27

5 respostas

4

Parece que isso pode ser coberto em Bulk ou em massa matando consultas MySQL mal-comportadas

    
por 17.08.2009 / 05:39
2

Parar / iniciar a instância do MySQL não é uma resposta. Na maioria dos casos, pode levar bastante tempo e afetar sua produção. Você deve apenas matar essas consultas.

Dois artigos interessantes:

Como matar seletivamente as consultas no MySQL?

e:

Por que os tópicos às vezes ficar no estado 'morto' no MySQL?

    
por 16.05.2012 / 12:29
0

A maneira mais rápida é apenas reiniciar o MySQL. Caso contrário, você precisará matar cada processo em execução, um por um (não há killall no mysqladmin).

    
por 17.08.2009 / 05:33
0

Você pode conseguir isso com um script de shell:

#!/bin/bash

# Get the processlist and save it in a file
mysqladmin -u root -p"your password" processlist > fullproce

# Get the process ids of the processes in the "Sleep" state and save them in id.
# Adjust the grep to match the processes you want to kill.
cat fullproce |grep Sleep |awk -F " " '{print $2}' > id

for todos_id in 'cat ./id'
do
  # Kill each id identified earlier.
  mysqladmin -u root -p"your password" KILL $todos_id ;
done

# Remove files
rm  fullproce
rm id
    
por 05.01.2013 / 02:09
-1

Este comando shell pode ajudar a matar todos os processos de suspensão:

mysqladmin proc | grep Sleep | awk '{print $2}' | xargs -L1 mysqladmin kill 
    
por 02.08.2016 / 13:24

Tags