mysql kill process解决死锁

1、查看进程列表, 找到ID

show processlist;

+--------+--------+--------------------+----------+---------+------+----------+------------------+
| Id     | User   | Host               | db       | Command | Time | State    | Info             |
+--------+--------+--------------------+----------+---------+------+----------+------------------+
|      8 | remote | 10.16.30.96:36592  | activity | Sleep   |  239 |          | NULL             |
| 396749 | remote | 172.17.1.122:53028 | activity | Sleep   | 1966 |          | NULL             |
| 397104 | remote | 172.17.3.211:52666 | activity | Sleep   |    7 |          | NULL             |
| 397177 | remote | 172.17.3.211:52819 | activity | Sleep   | 7366 |          | NULL             |
| 397267 | remote | 172.17.1.122:55728 | activity | Sleep   | 5741 |          | NULL             |
| 397268 | remote | 172.17.1.122:55730 | activity | Sleep   | 7849 |          | NULL             |
| 397287 | remote | 172.17.3.150:57151 | activity | Sleep   | 7128 |          | NULL             |
| 397294 | remote | 172.17.3.68:53158  | activity | Sleep   | 2882 |          | NULL             |
| 397296 | remote | 172.17.3.68:53160  | NULL     | Sleep   | 6492 |          | NULL             |


2、 查询语句把表锁住了, 赶紧找出第一个Locked的thread_id, 在MySQL的shell里面执行.

kill  id


#!/bin/bash
mysql  - u   root  - e   " show processlist "  |  grep  - i   " Locked "  >>  locked_log . txt

for   line   in   ` cat locked_log.txt | awk '{print  $1 }' `
do  
   
echo   " kill  $line ; "  >>  kill_thread_id . sql
done

现在kill_thread_id.sql的内容像这个样子

kill   66402982 ;
kill   66402983 ;
kill   66402986 ;
kill   66402991 ;
.....

好了, 我们在mysql的shell中执行, 就可以把所有锁表的进程杀死了.

mysql > source   kill_thread_id . sql

当然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'`
do
   
mysqladmin kill ${id}
done
;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值