问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MYSQL锁死怎么办?

发布网友 发布时间:2022-04-24 15:06

我来回答

2个回答

懂视网 时间:2022-04-29 21:48

RECORD LOCKS space id 122 page no 3 n bits 80 index `PRIMARY` of table `test`.`t` trx id 307463 lock_mode X

RECORD LOCKS space id 122 page no 4 n bits 80 index `idx_name` of table `test`.`t` trx id 307463 lock_mode X

RECORD LOCKS space id 122 page no 4 n bits 80 index `idx_name` of table `test`.`t` trx id 307463 lock_mode X locks gap before rec

mysql> show processlist;

+------+------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+-----------+---------------+

| Id   | User | Host                | db   | Command     | Time  | State                                                                 | Info             | Rows_sent | Rows_examined |

+------+------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+-----------+---------------+

| 4256 | root | localhost           | test | Sleep       | 72573 |                                                                       | NULL             |         7 |             7 |

| 4375 | repl | 172.16.52.131:49285 | NULL | Binlog Dump | 75947 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL             |         0 |             0 |

| 5294 | root | localhost           | test | Sleep       | 72553 |                                                                       | NULL             |         0 |             0 |

| 9060 | root | localhost           | test | Query       |     0 | init                                                                  | show processlist |         0 |             0 |

| 9289 | root | localhost           | NULL | Sleep       |    40 |                                                                       | NULL             |         0 |             0 |

+------+------+---------------------+------+-------------+-------+-----------------------------------------------------------------------+------------------+-----------+---------------+

5 rows in set (0.00 sec)


mysql> select * from t;

+----+----------+------+

| i  | name     | age  |

+----+----------+------+

|  1 | zhangsna |   20 |

|  2 | zhangsna |   20 |

|  3 | c        |   23 |

|  4 | c        |   23 |

|  5 | e        | NULL |

|  6 | f        | NULL |

| 19 | xiaoming |   23 |

+----+----------+------+

7 rows in set (0.00 sec)

判断:

  1. 通过innodb status发现对t表上了表锁:TABLE LOCK table `test`.`t` trx id 307463 lock mode IX

  2. 通过select * from t发现该表有7行:7 rows in set (0.00 sec)

  3. 通过show processlist发现有一个会话的Rows_sent | Rows_examined为7 7 ,ID为4526


通过判断kill掉id为4526会话:

mysql> kill 4256;

Query OK, 0 rows affected (0.00 sec)

在执行delete操作,顺利执行:

mysql> delete from t;

Query OK, 7 rows affected (0.01 sec)


本文出自 “浮生凤年” 博客,请务必保留此出处http://liuzhanbin.blog.51cto.com/10060150/1647320

MySQL锁检测-kill

标签:锁

热心网友 时间:2022-04-29 18:56

通过代码解锁。

代码如下    

1set global max_connections=4000;

增加允许的最大连接数,先让前台网站可以正常工作。

回过头google :mysql unauthenticated user

果然,遇到此类问题的人很多,问题在于mysql的反向ip地址解析,配置参数里加上skip-name-resolve就可以。

补充


一、查看进程运行情况(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 251 ||| 38 | root | localhost:13991 | chf | Sleep | 251 ||+—-+——+—————–+——————–+———+——+———–+3 rows in set (0.00 sec)

二、构造表被锁现象
1)锁住表(会话1)

代码如下    

1mysql>LOCK TABLES chf.disc02 READ;或者–LOCK TABLES chf.disc02 WRITE;

2)执行dml操作(会话2)

代码如下    

1mysql>delete from chf.disc02 limit 1;–会话处于卡死状态

3)查询进程运行情况(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 41 | root | localhost:14358 | chf | Query | 5 | Locked|| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 343 ||| 38 | root | localhost:13991 | chf | Sleep | 343 ||+—-+——+—————–+——————–+———+——+———–+

4 rows in set (0.01 sec)
说明:发现进程id为41的进程状态为Locked
三、解锁操作
1)删掉被锁进程(会话1)

代码如下    

1mysql> kill 41;

出现现象(会话2)
ERROR 2013 (HY000): Lost connection to MySQL server ring query
2)查看进程(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 298 ||| 38 | root | localhost:13991 | chf | Sleep | 298 ||+—-+——+—————–+——————–+———+——+———–+3 rows in set (0.01 sec)

四、批量解锁

代码如下    

1mysql> select concat(‘kill ‘,id,’;') kill_process from processlist a where a.state=’Locked’;+————–+| kill_process |+————–+| kill 43; || kill 42; |+————–+2 rows in set (0.01 sec)

Note:
1)可以使用show processlist查看当前用户连接
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;
2)在构造锁的会话中,使用unlock tables;也可以解锁

总结一下原因,大概如下:

因为mysql默认会根据客户端的ip地址反向解析,用于用户登录授权之用。不过正常情况下,很少会有人这样用。ip地址反向解析是很慢的,尤其是高负荷的mysql,每秒种几百次甚至更高的请求,这个请求压到本地的dns服务器上,dns服务器说不定会怀疑你在恶意请求,然后不理你了,然后这些登录请求就挂在那里,后面的连接还持续,然后越积越多,然后就达到mysql的最大连接数据*了,然后新的连接就直接被拒,得到连接数过多的消息。

因为mysql配置文件使用的之前的配置文件,当时跟web同服务器,所以不存在这个问题。

这也正好解释了为什么phpMyAdmin里看mysqld状态时,有很多失败的连接,它们应该就是因反解析失败而被拒的。

参考资料

MySQL解锁.壹聚教程[引用时间2018-1-21]

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
招商银行公司治理 高等教育学高等教育学的高校 上海在职考研 纸嫁衣2奘铃村无法播放广告 不能看广告解决方法 纸嫁衣5好玩吗 详细游戏分析 纸嫁衣2要钱吗 是免费游戏还是付费游戏 活杀的鲫鱼如何保鲜 我想把XP换成win7的系统,有没有详细的教程以及应注意哪些? 我现在是XP... 小腿肌肉没劲怎么回事 为什么建议要多吃新鲜蔬菜水果补充人体所需矿物质呢? 如何用phpmyadmin查看MYSQL数据库死进程 mysql中运行了查死锁命令,结果如下 mysql 怎么查看死锁的记录 mysql在哪个文件查看锁死表信息?谢谢,或者如何查看 MySQL双表查询,卡死 怎么把电视连接投影仪 急!!! 用投影机看电视要连接电视机吗?还是直接连接天线? 投影仪与电脑和电视盒的连接 电视线怎么连接投影仪? 电视如何连接投影仪? 怎样做布丁视频 布丁怎么做视频 简单的芒果布丁做法 煤气灶打开的时候着一会就会自己熄火,什么原因 煤气灶在燃烧过程中经常熄火是啥原因? 煤气灶最近老是烧着一会就自动熄火 怎么回事 中国现有哪些品牌签字笔(包括国外品牌)? 安踏集团自曝一副总监被拘,该名总监究竟做了什么违法的事儿? 安踏微信商城是骗子吗?之后再也不回了。这客服 为啥微信扫码支付后,会有优惠券出现,比如买的是熟食,优惠券却是安踏100面额的,不解 安踏领了优惠券为什么微信支付还是原价? mysql 查询导致卡死 怎样把坏的MySQL查询找到并杀死 mysql 查看表 是否有死锁 数据库mysql用着用着死掉了怎么办 腐竹西红柿怎么做好吃又简单 番茄烧腐竹怎么做好吃呢? 腐竹可以做汤吗? 腐竹鸡蛋西红柿大白菜混合住会拉肚子吗? 西红柿腐竹银耳牛肉可以一起炖吗? 专利申请流程与时间是怎么样的 专利申请流程 费用 时间 专利申请流程及时间 申请发明专利的基本流程及时间介绍 抖音作品授权今日头条要收费吗? 今日头条APP上投广告怎么样收费 在抖音里,下载头条用钱吗? 想在今日头条,抖音上打广告怎么做? 北京有招律师助理的吗 一般北京的律师助理工资是多少啊? 抖音极速版下载今日头条怎么的十元