SyncNavigator是一款功能強大的數據庫同步軟件,適用於SQL SERVER, MySQL,具有自動/定時同步數據、無人值守、故障自動恢復、同構/異構數據庫同步、斷點續傳和增量同步等功能,支持Windows xp以上所有操作系統,適用於大容量數據庫快速同步。
安裝包下載地址:https://www.syncnavigator.cn/Setup.zip
幫助文檔地址:https://www.syncnavigator.cn/Help_zh-CN.chm
Web文檔地址:https://www.syncnavigator.cn/chm/index.htm
創建第一個同步項目
使用 HKROnline SyncNavigator 創建一個數據庫同步項目。只需要通過簡單的配置,創建完成后您可以隨時執行數據庫同步任務。
1.點擊 “SyncNavigator(Client)” 圖標進入系統。
2.在登錄界面中輸入連接到的服務器地址,點擊 “確定” 按鈕開始連接。
-
注意:這里不是登陸您的數據庫,而是登陸到本軟件的管理端。
-
默認情況下直接點擊 “連接” 按鈕即可(本機默認已經安裝)。
-
默認服務器登錄用戶名為 “admin” 密碼為空。
-
本機服務器地址 = 127.0.0.1 。
-
您可以使用域名或者IP地址作為服務器地址。如果指定了端口號可以使用 IP:Port 方式填寫。
數據庫或服務器的維護通常由數據庫管理員在夜間執行。但是這些例程有時會被長時間運行的查詢或掛在鎖上的應用程序阻塞得比預期更長的時間而阻塞。
通常,應優先考慮應用程序,並且通常會取消維護例程,以免干擾應用程序。但是有時候會發生這種情況,您需要終止耗時且尚未在一定時間內完成的MySQL查詢。在這種情況下,您可能需要一種快速的方法來終止所涉及的連接。
在本文中,我們旨在考慮兩種解決上述問題的方法。為此,我們將使用dbForge Studio for MySQL。
方法1.根據使用事件的用戶登錄終止MySQL連接
第一種方法包括創建一個特殊的MySQL事件。創建事件時,將創建一個包含一個或多個SQL語句的命名數據庫對象,該SQL語句將在一個特定的日期和時間開始和結束,並以一個或多個規則的時間間隔執行。
使用下面的腳本來創建數據庫上的一個事件:
[代碼LANG =” SQL”] DELIMITER $
CREATE EVENT kill_process_event
ON計划的每個’1′ DAY
STARTS ‘2019年3月20日8時四十五分30秒’
DO
BEGIN
DECLARE kill_done INT ;
未找到的DECLARE退出處理程序SET kill_done = 1;
開始聲明
DECLARE cursor_ID int;
DECLARE cursor_i CURSOR FOR
SELECT
ID
FROM information_schema.PROCESSLIST
其中User LIKE ‘%測試’
和id = CONNECTION_ID()!;
OPEN cursor_i;
read_loop:
LOOP
FETCH cursor_i INTO cursor_ID;
殺死連接cursor_ID;
如果kill_done然后
離開read_loop;
萬一;
結束循環;
CLOSE cursor_i;
結束;
完
$ALTER EVENT kill_process_event
啟用
$DELIMITER; [/ code]
后續步驟•將您自己的值分配給所需的參數。即時間表,時間和用戶登錄。
•安排事件
•設置服務器變量event_scheduler = ON如何安排事件
要安排事件,請在對象資源管理器中右鍵單擊它,然后從彈出窗口中選擇“ 編輯事件 ”。在打開的向導中,您可以為事件配置開始和結束日期,重復發生以及其他相關選項。在我們的示例中,我們想終止sakila數據庫上test%用戶的連接。下圖顯示了在執行方法1中描述的操作之前MySQL查詢SHOW FULL PROCESSLIST的輸出。
執行上述腳本后,所有具有用戶登錄名(’test%’)的連接都將被殺死。
該方法的缺點在於,當改變選擇會話ID的條件時,有必要改變對象(事件)。
或者,您可以創建一個存儲過程和一個事件來調用此過程。
使用調用存儲過程的事件基於用戶登錄終止MySQL連接
基本上,此方法是進行中方法的擴展。它涉及創建MySQL過程,然后安排事件以調用此過程。
- 首先,您需要在數據庫上創建一個存儲過程:
[code lang =“ SQL”] DELIMITER $
CREATE PROCEDURE kill_process_proc()
BEGIN
DECLARE kill_done int;
未找到的DECLARE退出處理程序SET kill_done = 1;
開始聲明
DECLARE cursor_ID int;
DECLARE cursor_i CURSOR FOR
SELECT
ID
FROM information_schema.PROCESSLIST
其中User LIKE ‘%測試’
和id = CONNECTION_ID()!;
OPEN cursor_i;
read_loop:
LOOP
FETCH cursor_i INTO cursor_ID;
殺死連接cursor_ID;
如果kill_done然后
離開read_loop;
萬一;
結束循環;
CLOSE cursor_i;
結束;
END $
DELIMITER; [/代碼]您需要將所需的值分配給USER參數。在我們的示例中,它是“ test%”。
2.接下來,准備好過程,您可以創建一個事件來調用它並按計划執行它。請考慮下面的腳本:
[代碼LANG =” SQL”] CREATE DEFINER = ‘根’ @ ‘localhost’的
事件sakila.kill_process_event
ON計划的每個’1’ DAY
STARTS ‘2019年3月19日14:53:00’
DO
開始
呼叫kill_process_proc();
結束;ALTER EVENT sakila.kill_process_event
ENABLE; [/ code]3.后續步驟
•將您自己的值分配給所需的參數。即時間表,時間,數據庫和用戶登錄。
•安排事件
•設置服務器變量event_scheduler = ON執行上述步驟后,所有具有用戶登錄名(’test%’)的連接都將被殺死。
方法2.創建一個bat文件以啟動MySQL客戶端和一個帶有參數的過程
您還可以通過命令行界面創建可執行的BAT文件來啟動MySQL客戶端和帶有參數的過程。
首先,您需要創建一個帶有參數的過程。為此,請使用以下腳本:[code lang =“ SQL”] DELIMITER $
CREATE PROCEDURE kill_process_param(IN user VARCHAR(255))
BEGIN
DECLARE kill_done int;
未找到的DECLARE退出處理程序SET kill_done = 1;
開始聲明
DECLARE cursor_ID int; 從information_schema.PROCESSLIST中 選擇SELECT ID的
cursor_i游標,在該列表中, 用戶喜歡的用戶 和ID!= CONNECTION_ID(); OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID; 殺死連接cursor_ID; 如果kill_done然后 離開read_loop; 萬一; 結束循環; CLOSE cursor_i; 結束; END $ DELIMITER; [/代碼]相應的過程將出現在數據庫中。讓我們借助dbForge Studio for MySQL對其進行研究。
接下來,您需要創建一個BAT文件。
要創建BAT文件,請執行以下操作:
1.打開純文本編輯器,例如記事本。
2.輸入以下代碼:“ C:\ Program Files \ MySQL \ MySQL Server 8.0 \ bin \ mysql.exe” --user = <用戶> --password = <密碼> --host = <host> --port = <端口>-數據庫= <數據庫名稱> --execute =“調用kill_process_param('%1')”
3.為用戶,密碼,主機,端口和數據庫名稱參數分配自己的值。
4.保存擴展名為.bat的文件。
現在,您需要使用參數運行bat文件。
結果,所有具有用戶登錄名(’test%’)的連接都將被殺死。
結論
知道如何在MySQL Server中終止進程可能是工具箱中的便捷工具。但是,我們建議您謹慎使用給定的方法。