SELECT Id, User, Host, db, Time, State
FROM information_schema.PROCESSLIST
WHERE Command = 'Sleep'
AND Time > 3600; -- 可根据实际情况调整阈值,如1800(30分钟)、7200(2小时)等
步骤 2:批量生成终止连接的 SQL 语句
基于上述查询结果,生成KILL语句批量终止这些连接。可以通过SQL 拼接或 ** 脚本(如 Shell、Python)** 实现:
方式 1:纯 SQL 拼接(适用于临时手动处理)
SELECT CONCAT('KILL ', Id, ';') AS kill_statement
FROM information_schema.PROCESSLIST
WHERE Command = 'Sleep'
AND Time > 3600;
执行后会得到一系列KILL [Id];的语句,复制这些语句执行即可批量终止。
方式 2:Shell 脚本自动化(更高效)
如果需要频繁处理,可编写 Shell 脚本结合mysql命令自动化执行: