翻譯|使用教程|編輯:莫成敏|2019-11-05 15:00:07.680|閱讀 497 次
概述:dbForge Studio for MySQL是與專業化MySQL數據庫緊密相連的先進開發環境。本文講述了通過兩種方法來終止與MySQL數據庫的某些連接。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
數據庫或服務器的維護通常在晚上由數據庫管理員執行。但是,這些例程有時會被長時間運行的查詢或掛起鎖的應用程序阻塞,掛起鎖的時間比預期更長。
通常,應優先考慮應用程序,并且通常會取消維護例程,以免干擾應用程序。但是有時候,您的例程仍然被阻塞,或者由于某種原因在某個時間之前尚未完成,在這種情況下,您需要一種快速的方法來終止所涉及的連接。
在本文中,我們旨在考慮兩種解決上述問題的方法。為此,我們將使用dbForge Studio for MySQL。
方法一:根據用戶登錄生成一個事件,該事件將終止所有連接
第一種方法包括創建一個特殊的MySQL事件。創建事件時,將創建一個包含一個或多個SQL語句的命名數據庫對象,該SQL語句將在一個特定的日期和時間開始和結束,并以一個或多個規則的時間間隔執行。
使用以下腳本在數據庫上創建事件:
DELIMITER $$ CREATE EVENT kill_process_event ON SCHEDULE EVERY '1' DAY STARTS '2019-03-20 08:45:30' DO BEGIN DECLARE kill_done int; DECLARE EXIT HANDLER FOR NOT FOUND SET kill_done = 1; BEGIN DECLARE cursor_ID int; DECLARE cursor_i CURSOR FOR SELECT id FROM information_schema.PROCESSLIST WHERE USER LIKE 'test%' AND ID != CONNECTION_ID(); OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID; KILL CONNECTION cursor_ID; IF kill_done THEN LEAVE read_loop; END IF; END LOOP; CLOSE cursor_i; END; END $$ ALTER EVENT kill_process_event_ev ENABLE $$ DELIMITER ;
下一步
將您自己的值分配給所需的參數。即日程、時間和用戶登錄。
安排事件
設置服務器變量event_scheduler = ON
如何安排事件
要安排事件,請在對象資源管理器中右鍵單擊它,然后從彈出窗口中選擇“編輯事件”。在打開的向導中,您可以為事件配置開始和結束日期、重復發生以及其他相關選項。
在我們的示例中,我們想終止sakila數據庫上test%用戶的連接。
執行上述腳本后,所有具有用戶登錄名('test%')的連接都將被終止。
該方法的缺點在于,當改變用于選擇會話ID的條件時,必須改變對象(事件)。
或者,您可以創建一個存儲過程和一個事件來調用此過程。
創建一個調用存儲過程的事件,該事件將根據用戶登錄終止連接
基本上,此方法是前一種方法的擴展。它涉及創建MySQL過程,然后安排事件以調用此過程。
首先,您需要在數據庫上創建一個存儲過程:
DELIMITER $$ CREATE PROCEDURE kill_process_proc() BEGIN DECLARE kill_done int; DECLARE EXIT HANDLER FOR NOT FOUND SET kill_done = 1; BEGIN DECLARE cursor_ID int; DECLARE cursor_i CURSOR FOR SELECT id FROM information_schema.PROCESSLIST WHERE USER LIKE 'test%' AND ID != CONNECTION_ID(); OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID; KILL CONNECTION cursor_ID; IF kill_done THEN LEAVE read_loop; END IF; END LOOP; CLOSE cursor_i; END; END$$ DELIMITER ;
您需要將所需的值分配給USER參數。在我們的示例中,它是“test%”。
接下來,準備好過程,您可以創建一個事件來調用它并按計劃執行它。請考慮以下腳本:
CREATE DEFINER = 'root'@'localhost' EVENT a_kor.kill_process_event ON SCHEDULE EVERY '1' DAY STARTS '2019-03-19 14:53:00' DO BEGIN CALL kill_process_proc(); END; ALTER EVENT a_kor.kill_process_event ENABLE;
下一步
將您自己的值分配給所需的參數。即日程、時間和用戶登錄。
安排事件
設置服務器變量event_scheduler = ON
執行上述步驟后,所有具有用戶登錄名('test%')的連接都將被終止。
方法二:創建一個bat文件以啟動MySQL客戶端和一個帶有參數的過程
您還可以通過命令行界面創建可執行的BAT文件來啟動MySQL客戶端和帶有參數的過程。
首先,您需要創建一個帶有參數的過程。為此,請使用以下腳本:
DELIMITER $$ CREATE PROCEDURE kill_process_proc() BEGIN DECLARE kill_done int; DECLARE EXIT HANDLER FOR NOT FOUND SET kill_done = 1; BEGIN DECLARE cursor_ID int; DECLARE cursor_i CURSOR FOR SELECT id FROM information_schema.PROCESSLIST WHERE USER LIKE 'test%' AND ID != CONNECTION_ID(); OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID; KILL CONNECTION cursor_ID; IF kill_done THEN LEAVE read_loop; END IF; END LOOP; CLOSE cursor_i; END; END$$ DELIMITER ;
相應的過程將出現在數據庫中。讓我們借助dbForge Studio for MySQL對其進行研究。
接下來,您需要創建一個BAT文件。
要創建BAT文件,請執行以下操作:
1、打開純文本編輯器,例如記事本。
2、輸入以下代碼:
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" --user=<user> --password=<password> --host=<host> --port=<port> --database=<database_name> --execute="CALL kill_process_param('%1')"
3、為用戶、密碼、主機、端口和數據庫名稱參數分配自己的值。
4、保存擴展名為.bat的文件。
現在,您需要在Windows任務調度程序的幫助下安排bat文件的執行。
結果,所有具有用戶登錄名('test%')的連接都將被終止。
結論
知道如何在MySQL Server中終止進程可能是工具箱中的便捷工具。但是,我們建議您謹慎使用給定的方法。您可以下載dbForge Studio for MySQL試用版體驗一下~
想要購買該產品請點擊“在線訂購”,想要了解更多產品信息請點擊
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: