我想杀死进程列表中的所有 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 |
+------+----------------------+---------------------+----+---------+------+-------+------------------+
看起来这可能会在Bulk 或 mass kill 行为不端的 MySQL 查询中涵盖
MySQL 实例的停止/启动不是答案。在大多数情况下,这可能会花费大量时间并影响您的生产。你应该只杀死这样的查询。
两篇有趣的文章:
如何选择性地杀死 MySQL 中的查询?
和:
为什么线程有时会在 MySQL 中保持“已终止”状态?
最快的方法就是重启 MySQL。否则,您需要一个一个地杀死每个正在运行的进程(mysqladmin 中没有 killall)。
您可以使用 shell 脚本实现此目的:
此 shell 命令可能有助于终止所有睡眠进程: