Я хочу убить все процессы MySQL в списке процессов. Есть ли способ сделать это?
# 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 |
+------+----------------------+---------------------+----+---------+------+-------+------------------+
Похоже, это может быть покрыто Массовое или массовое уничтожение некорректных запросов MySQL
Остановка / запуск экземпляра MySQL не является ответом. В большинстве случаев это может занять довольно много времени и повлиять на ваше производство. Вы должны просто УБИТЬ такие запросы.
Две интересные статьи:
Как выборочно убивать запросы в MySQL?
и:
Самый быстрый способ - просто перезапустить MySQL. В противном случае вам нужно будет убить каждый запущенный процесс один за другим (в mysqladmin нет killall).
Вы можете добиться этого с помощью сценария оболочки:
#!/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
Эта команда оболочки может помочь убить все процессы сна:
mysqladmin proc | grep Sleep | awk '{print $2}' | xargs -L1 mysqladmin kill