首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 批量殺死連線四大法:從 information_schema 到 mk-kill 完整指南

     編輯:MySQL 綜合教學

MySQL 批量殺死連線四大法:從 information_schema 到 mk-kill 完整指南

方法一:information_schema + 匯出腳本

-- 產生 KILL 語句
SELECT CONCAT('KILL ', id, ';') 
FROM information_schema.processlist 
WHERE user = 'root';

-- 匯出到檔案執行
SELECT CONCAT('KILL ', id, ';') 
FROM information_schema.processlist 
WHERE user = 'root' 
INTO OUTFILE '/tmp/kill.sql';

SOURCE /tmp/kill.sql;

方法二:mysqladmin + awk + xargs

# 殺掉所有連線
mysqladmin -uroot -p processlist | awk -F "|" '{print $2}' | xargs -n 1 mysqladmin -uroot -p kill

# 殺掉指定使用者(如 Mike)
mysqladmin -uroot -p processlist | awk -F "|" '{if($3 == "Mike") print $2}' | xargs -n 1 mysqladmin -uroot -p kill

方法三:Shell 腳本殺掉鎖定連線

#!/bin/bash
# kill_locked.sh
for id in $(mysqladmin processlist | grep -i locked | awk '{print $1}'); do
  mysqladmin kill ${id}
done

方法四:Maatkit mk-kill 專業工具

# 殺掉執行超過 60 秒的查詢
mk-kill --busy-time 60 --kill

# 僅列印不殺(預演)
mk-kill --busy-time 60 --print

# 列印並殺掉
mk-kill --busy-time 60 --print --kill

更多用法:mk-kill 文件


適用場景對比

方法 優點 缺點 適用場景
information_schema 純 SQL,可精細過濾條件 需兩步驟,權限需 FILE 權限 需複雜條件篩選(用戶、資料庫、時間等)
mysqladmin + awk 單行指令,無需登入 MySQL 解析輸出格式易出錯 快速清理所有/特定用戶連線
Shell 腳本 可擴展邏輯(如只殺 Locked) 需部署腳本 定時清理卡死連線
mk-kill 功能最豐富(時間、查詢類型、IDLE 等) 需額外安裝 Perl 模組 生產環境常態化治理

💡 建議:平時用 mk-kill 設定規則常態化清理;緊急手動清理用 information_schema 法最可控。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved