如何找到 MySQL 进程列表并杀死这些进程?

How to find MySQL process list and to kill those processes?

由于某些查询,MySQL 数据库挂起。

如何找到进程并杀死它们?

解决方法如下:

  1. 登录数据库;
  2. 运行 一个命令show full processlist;获取进程 ID 和状态并查询本身导致数据库挂起;
  3. Select 进程 ID 和 运行 命令 KILL <pid>; 终止该进程。

有时手动杀死每个进程是不够的。因此,为此我们必须采取一些技巧:

  1. 登录MySQL;
  2. 运行 查询 Select concat('KILL ',id,';') from information_schema.processlist where user='user'; 使用 KILL 命令打印所有进程;
  3. 复制查询结果,粘贴去掉一个竖线|,全部复制粘贴到查询控制台。 按回车键。 Boom 完成了.

您可以这样做来检查是否有任何 mysql 进程是 运行:

ps aux | grep mysqld
ps aux | grep mysql

然后,如果它是 运行,您可以 killall 使用(取决于当前所有进程 运行):

killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe    
select GROUP_CONCAT(stat SEPARATOR ' ') from (select concat('KILL ',id,';') as stat from information_schema.processlist) as stats;

然后将结果复制并粘贴回终端。 类似于:

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

对于MYSQL 8.xx你可以只使用mysqladmin shutdown。不确定这是否适用于旧版本。

根密码为 SomePass 的示例

mysqladmin -u root -pSomePass shutdown

您还应该在 /var/log/mysql/error.log

中看到关机

在 RDS 上:

SELECT
  concat('CALL mysql.rds_kill(',id,');')
  FROM information_schema.processlist
  ORDER BY time;