Parece que isso pode ser coberto em Bulk ou em massa matando consultas MySQL mal-comportadas
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 |
+------+----------------------+---------------------+----+---------+------+-------+------------------+
Parece que isso pode ser coberto em Bulk ou em massa matando consultas MySQL mal-comportadas
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?
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).
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
Este comando shell pode ajudar a matar todos os processos de suspensão:
mysqladmin proc | grep Sleep | awk '{print $2}' | xargs -L1 mysqladmin kill
Tags mysql