由于某些查询,MySQL数据库挂起。
我如何找到进程并杀死它们?
由于某些查询,MySQL数据库挂起。
我如何找到进程并杀死它们?
Answers:
解决方法如下:
show full processlist;
以获取带有状态的进程ID并查询自身,这会导致数据库挂起;KILL <pid>;
以终止该进程。有时仅仅手动杀死每个进程是不够的。因此,为此,我们需要一些技巧:
Select concat('KILL ',id,';') from information_schema.processlist where user='user';
以使用KILL
命令打印所有进程;|
符号,然后再次全部复制并粘贴到查询控制台中。命中输入。Bom,它已经完成了。select group_concat(concat('KILL ',id,';') separator ' ')
因此它们全部都落在可以复制粘贴的一行上
SELECT group_concat(concat('KILL ',id,';') SEPARATOR ' \n') AS KILL_EVERYTHING FROM information_schema.processlist;
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
正在运行任何进程:
ps aux | grep mysqld
ps aux | grep mysql
然后,如果它正在运行,则可以killall
使用(取决于当前正在运行的所有进程):
killall -9 mysql
killall -9 mysqld
killall -9 mysqld_safe
Host
,db
,Command
,Time
,State
,或者Info
:SELECT concat('KILL ',id,';') from information_schema.processlist where Command='Sleep';
或SELECT concat('KILL ',id,';') from information_schema.processlist where Time>'300';