文档首页 > > 最佳实践> MySQL> RDS for MySQL元数据锁MDL导致无法操作数据库的解决方法

RDS for MySQL元数据锁MDL导致无法操作数据库的解决方法

分享
更新时间:2020/07/02 GMT+08:00

MetaData Lock即元数据锁,MetaData Lock主要为了保证元数据的一致性,用于处理不同线程操作同一数据对象的同步与互斥问题。MySQL 5.5版本开始,引入了MDL锁,但是因为MDL锁,会导致表级别的锁,无论是读或者写操作,都无法进行,导致SQL的阻塞。本章介绍通过华为云数据管理服务(Data Admin Service,简称DAS)解决该问题。

操作步骤

  1. 登录管理控制台。
  2. 单击管理控制台左上角的,选择区域和项目。
  3. 选择数据库 > 关系型数据库。进入关系型数据库信息页面。
  4. “实例管理”页面,选择目标实例,单击操作列的“登录”,进入数据管理服务数据库登录界面。

    您也可以在“实例管理”页面,单击目标实例名称,在页面右上角,单击“登录”,进入数据管理服务数据库登录界面。

  5. 正确输入数据库用户名和密码,单击“登录”,即可进入您的数据库并进行管理。
  6. 在顶部菜单栏选择“SQL操作”>“SQL窗口”,打开一个SQL窗口。
  7. 在SQL窗口执行如下SQL查看数据库所有线程状态。

    show full processlist

    图1 执行结果

  8. 查看“State”列是否出现大量“Waiting for table metadata lock”“Waiting for table metadata lock”即表示出现阻塞,在对应的“Info”列可以查看到对应表的操作,找到正在对该表进行操作的会话,记录“Id”
  9. 在SQL窗口执行如下命令解锁MDL锁。

    kill Id

    图2 执行结果

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问