【发布时间】:2018-08-10 15:56:46
【问题描述】:
我的 MySQL 服务器出现意外状态。我有一个单独的连接执行一个查询,它在“等待表元数据锁定”中停留了很长时间(超过 1643 秒)。该查询是我系统中一个非常繁忙的表上的 DROP INDEX。
其实这个命令我已经试过很多次了。首先,数据库很忙,并且还有其他连接执行多个操作(都读取和写入)。我认为可能是这个原因,所以我依次尝试了:
- 杀死在同一个表和同一个“等待表元数据锁”上运行 Query 的任何进程
- 使用 Sleep 命令杀死甚至进程
- 从远程主机中删除所有进程和所有授权(在此之后只有 root 可以连接并且没有其他用户连接,它自己的应用程序与数据库断开连接)
- 取消并重新运行命令(加强这将是唯一的活动命令)
即使在那种状态下,问题也持续了几分钟。唯一活着的进程查询是:
ID: 2398884
USER: root
HOST: localhost
DB: zoom
COMMAND: Query
TIME: 1643
STATE: Waiting for table metadata lock
INFO: DROP INDEX index_x ON tb.schema
之后我们决定重启mysqld。当服务器回来时,问题就消失了。我能够运行 drop index 命令。
我还没有发现任何有类似情况的人。在某些情况下这是正常的吗?我试图找到which transaction is causing a “Waiting for table metadata lock”.,但无法识别任何人。
注意:除了删除索引和我自己的根连接来检查进度和状态之外,还有 Binlog Dump 复制查询正在运行
【问题讨论】:
标签: mysql