首页云计算 正文

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

2024-12-18 3 0条评论

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

实例

生成一个事件来杀死msaladin用户执行’my_admin_thingy’管理脚本的所有连接。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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语句。有了这一点,我们可以创建一个存储过程,从事件中调用之,并定义一个维护的事件每天执行。

权限

用户必须有对mysql数据库的SELECT权限。

小技巧

如果使用正则表达式,可以指定–regexp选项来使用正则表达式,而不是数据库模式。

文章转载来自:trustauth.cn

文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/217453.html 发布于 2024-12-18
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码