美文网首页
Mysql系列~查杀会话

Mysql系列~查杀会话

作者: 开心的蛋黄派 | 来源:发表于2023-12-11 20:03 被阅读0次

MDL锁DDL查杀

    SELECT concat('kill ', i.trx_mysql_thread_id, ';') FROM information_schema.innodb_trx i,(SELECT MAX(time) AS max_time FROM information_schema.processlist WHERE state = 'Waiting for table metadata lock' AND (info LIKE 'alter%' OR info LIKE 'create%' OR info LIKE 'drop%' OR info LIKE 'truncate%' OR info LIKE 'rename%')) p WHERE timestampdiff(second, i.trx_started, now()) > p.max_time;

  一旦未提交事务执行完成,是无法通过innodb_trx查到具体的SQL, 此SQL生成的KILL SESSION 是查询到DDL之前的未提交事务,kill后就可以使DDL正常执行了,最好看看具体的操作,防止误杀

SQL执行查杀

 SELECT CONCAT('kill ',id,';') FROM `information_schema`.`PROCESSLIST` where Command='Query' and time > 60 INTO OUTFILE '/tmp/kill_id.sql'; #查询会话

  SELECT CONCAT('kill ',id,';') FROM `information_schema`.`PROCESSLIST` where Command='Sleep and time > 60 and user not in ('root') INTO OUTFILE '/tmp/kill_id.sql'; #休眠会话

 source /tmp/kill_id.sql

PT-KILL查杀

pt-kill --host=127.0.0.1 --port=3306 --user=root --password='root' --match-db='test' --match-info "select|SELECT" --busy-time 60 --victims all --interval 10 --daemonize --kill --log=pt_select_test.log

--print 是只打印,可以先打印后续再kill

 --kill  打印并kill

--match-user  " user1" 匹配某个用户

--match-info  "select|SELECT" 匹配查询语句

--match-host "1.1.1.1" 匹配具体host

--match-State "Create index " 匹配某种状态

--match-info "selec * from“ 匹配kill具体的sql语句

变量设置

 设置max_execution_time=60000 针对普通查询自动查杀,但是对于存储过程类的无效 

相关文章

网友评论

      本文标题:Mysql系列~查杀会话

      本文链接:https://www.haomeiwen.com/subject/qaiawdtx.html