MySQL--批量KILL連接


方式一:使用SELECT INTO+SOURCE方式

使用SELECT INTO OUTFILE方式獲取到要刪除的連接ID並保存為文件,在通過SOURCE執行

## 查看kill_id文件是否存在 system cat /tmp/kill_id.sql ## 如果文件存在,則先刪除 system sudo rm -rf /tmp/kill_id.sql ## 將所有sleep的回話拼成KILL 腳本導入到文件 SELECT CONCAT('kill ',ID,';') FROM `information_schema`.`PROCESSLIST` t WHERE t.`COMMAND` IN ('Sleep') AND t.`TIME`>2
AND t.`USER` IN ('XXX') INTO OUTFILE '/tmp/kill_id.sql'; ## 使用source來執行文件 source /tmp/kill_id.sql ## 如果文件存在,則先刪除 system sudo rm -rf /tmp/kill_id.sql ## 查看當前進程 SHOW FULL PROCESSLIST;

 

MySQL參數secure_file_priv會限制LOAD DATA\SELECT …OUTFILE\LOAD_FILE()等命令使用文件的目錄

1、如果secure_file_priv為NULL,則不允許導出和導入

2、如果secure_file_priv為特定目錄,則只能操作該目錄下的問題件

3、如果secure_file_priv為空時,則運行對所有目錄進行導入導出。

全局參數secure_file_priv時只讀參數,無法使用SET GLOBAL進行修改,只能在配置文件中設置並重啟生效。

 

方式二:使用GROUP_CONCAT

使用GROUP_CONCAT獲取KILL腳本,在復制腳本執行

 

SET SESSION group_concat_max_len=102400;

SELECT GROUP_CONCAT(CONCAT('kill ',id,';') separator '')
FROM `information_schema`.`PROCESSLIST` t 
WHERE  t.`Time`>1
AND t.`User` IN('devpadmin')
AND t.`COMMAND` IN ('Sleep') \G


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM