MySQL管理工具MySQL Utilities — mysqlprocgrep 实际应用(38)

默北 MySQLMySQL管理工具MySQL Utilities — mysqlprocgrep 实际应用(38)已关闭评论6,658字数 812阅读2分42秒阅读模式

数据库管理员需要在夜间对数据库进行例行维护。有时,某些查询耗时长的应用程序通过锁阻止了该维护操作。当然,肯定是优先考虑应用程序,而取消例行维护作业。有时,我们需要一个快速的方法来生成一个程序来杀死某个相关的连接。这就是mysqlprocgrep 工具的用处。

实例

生成一个事件来杀死msaladin用户执行'my_admin_thingy'管理脚本的所有连接。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/

shell> mysqlprocgrep --sql-body \
          --match-command='my_admin_thingy%' --match-user='msaladin%'  --kill-connection
DECLARE kill_done INT;
DECLARE kill_cursor CURSOR FOR
  SELECT
        Id, User, Host, Db, Command, Time, State, Info
      FROM
        INFORMATION_SCHEMA.PROCESSLIST
      WHERE
          COMMAND LIKE 'my_admin_thingy%'
        AND
          USER LIKE 'msaladin%'
OPEN kill_cursor;
BEGIN
   DECLARE id BIGINT;
   DECLARE EXIT HANDLER FOR NOT FOUND SET kill_done = 1;
   kill_loop: LOOP
      FETCH kill_cursor INTO id;
      KILL CONNECTION id;
   END LOOP kill_loop;
END;
CLOSE kill_cursor;

上面的例子中的输出即可满足需求的SQL语句。有了这一点,我们可以创建一个存储过程,从事件中调用之,并定义一个维护的事件每天执行。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/

权限

用户必须有对mysql数据库的SELECT权限。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/

小技巧

如果使用正则表达式,可以指定–regexp选项来使用正则表达式,而不是数据库模式。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/ 文章源自运维生存时间-https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 01/04/2015 01:00:34
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysqlprocgrep-practical-application/