彩票走势图

logo dbForge Studio for MySQL教程
文档彩票走势图>>dbForge Studio for MySQL教程>>dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接


数据库或服务器的维护通常在晚上由数据库管理员执行。但是,这些例程有时会被长时间运行的查询或挂起锁的应用程序阻塞,挂起锁的时间比预期更长。

通常,应优先考虑应用程序,并且通常会取消维护例程,以免干扰应用程序。但是有时候,您的例程仍然被阻塞,或者由于某种原因在某个时间之前尚未完成,在这种情况下,您需要一种快速的方法来终止所涉及的连接。

在本文中,我们旨在考虑两种解决上述问题的方法。为此,我们将使用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

如何安排事件

要安排事件,请在对象资源管理器中右键单击它,然后从弹出窗口中选择“编辑事件”。在打开的向导中,您可以为事件配置开始和结束日期、重复发生以及其他相关选项。

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

在我们的示例中,我们想终止sakila数据库上test%用户的连接。

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

执行上述脚本后,所有具有用户登录名('test%')的连接都将被终止。

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

该方法的缺点在于,当改变用于选择会话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对其进行研究。

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

接下来,您需要创建一个BAT文件。

要创建BAT文件,请执行以下操作:

1、打开纯文本编辑器,例如记事本。

2、输入以下代码:

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" --user=--password=--host=--port=--database=--execute="CALL kill_process_param('%1')"

3、为用户、密码、主机、端口和数据库名称参数分配自己的值。

4、保存扩展名为.bat的文件。

现在,您需要在Windows任务调度程序的帮助下安排bat文件的执行。

dbForge Studio for MySQL入门教程:终止与MySQL数据库的某些连接

结果,所有具有用户登录名('test%')的连接都将被终止。

结论

知道如何在MySQL Server中终止进程可能是工具箱中的便捷工具。但是,我们建议您谨慎使用给定的方法。您可以下载dbForge Studio for MySQL试用版体验一下~


想要购买该产品请点击“在线订购”,想要了解更多产品信息请点击

850×682.png

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP