FinOps有望降低企业50%+的云成本! 了解详情
写点什么

华为云 MySQL 新增 MDL 锁视图特性,快速定位元数据锁问题(二)

  • 2020-01-15
  • 本文字数:1177 字

    阅读完需:约 4 分钟

MDL 锁视图好在哪?

下面通过两则案例来对 MDL 锁视图进行进一步的说明。


场景一:长时间未提交事务,阻塞 DDL,继而阻塞所有同表的操作



客户发现表 t2 的 truncate 一直被阻塞后,业务流程中对表 t2 的 select 操作也全部被阻塞。DDL 被阻塞后,客户立刻执行 show processlist:



但是通过 processlist 信息,只能看到 session 4 执行 truncate 操作时被其他 session 持有的 table metadata lock 阻塞,session 5 执行 select 操作时也同样被阻塞,无法确定哪个 session 阻塞了 session 4 和 session 5。


此时,如果盲目的去 kill 其他 session(2 或 3)会给线上业务带来很大风险,因此只能等待其他 session 释放该 MDL 锁。


而当客户引入 MDL 锁视图后,执行 SELECT * FROM INFORMATION_SCHEMA.METADATA_LOCK_INFO:



结合 show processlist 的结果,从元数据锁视图中可以明显看出,session 4 pending 在表 t2 的 metadata lock,session 3 持有表 t2 的 metadata lock,该 MDL 锁为事务级别,只要 session 3 的事务不提交,session 4 便会一直阻塞。因此,客户只需要在 session 3 中执行 commit 或 kill session 3,便可以让业务继续运行。


场景二:长时间持有 MDL 锁,导致全备失败



客户实例最近几次全备均失败,但是业务表现似乎正常,而且最近系统业务量不高,未出现明显问题。运维团队发现全备被阻塞后,立刻 show processlist,发现有多个活跃的用户 session:



全备是基于 xtrabackup,在执行真正的备份之前需要执行 lock tables for backup,但从 show processlist 中只能看到:lock tables for backup 时一直被某个 MDL 锁阻塞,全备超时失败;客户的多个 session 业务量很小,都处于 sleep 状态,于是客户继续执行 show open tables where in_use >=1:



发现有个表 t1 始终处于 in use 状态,所以猜测是用户某个 session 持有了该表 t1 的 MDL 锁未释放,导致 lock tables for backup 等待超时。但是结合 show processlist 仍然无法确定是哪个 session 持有表 t1 的 MDL 锁,想让全备执行成功,只能通知客户挨个断连 session 或者重启实例。



引入 MDL 锁视图后,客户执行 SELECT * FROM INFORMATION_SCHEMA.METADATA_LOCK_INFO:



结合 show processlist 的结果,从元数据锁视图中可以明显看出,session 4 pending 在全局 backup lock 上;session 2 持有全局的 backup lock,该 MDL 锁类型为 MDL_EXPLICIT,global 级别。因此,客户只需要在 session 2 显式调用 unlock tables 释放锁或者 kill session 2 即可让业务继续运行。


通过以上两个案例,MDL 锁视图的重要性不言而喻,它可以让客户和一线运维人员清晰地查看数据库各 session 持有和等待的元数据锁信息,从而找出数据库 MDL 锁等待的根因,准确地进行下一步决策,有效降低对业务的影响。


本文转载自华为云社区公众号。


原文链接:https://mp.weixin.qq.com/s/sxcRvNtPv-EcSDOeJub5qA


2020-01-15 15:34712

评论

发布
暂无评论
发现更多内容

Nacos 在 Apache APISIX API 网关中的服务发现实践

API7.ai 技术团队

nacos 注册中心 服务发现 API网关 APISIX

JWT Token在线编码生成

入门小站

工具

企业级 APIs 安全实践指南 (建议初中级工程师收藏)

领创集团Advance Intelligence Group

API

云服务器ECS选购指南及省钱法宝(强烈建议收藏)

阿里云弹性计算

玩转ECS 选购指南

【场景化集成方案】如何让企业快速集成钉钉各种能力

钉钉开发者

钉钉能力中心 钉钉官网 场景化能力包 场景化解决方案 应用集成方案

生态扩大进行中!Apache APISIX 集成 Splunk HTTP Event Collector

API7.ai 技术团队

API网关 Apache APISIX

第十五节:SpringBoot使用JPA访问数据库

入门小站

spring-boot

2022写作计划2月文章排行榜

TGO鲲鹏会

TGO鲲鹏会 写作计划

Window下Redis的安装和部署详细教程

明金同学

redis

Apache APISIX 集成 Open Policy Agent

API7.ai 技术团队

开源 后端 API网关 OPA Apache APISIX

选轻量应用服务器还是云服务器ECS?一图彻底搞懂

阿里云弹性计算

轻量应用 玩转ECS

Apache APISIX 集成 Google Cloud Logging

API7.ai 技术团队

Google 网关 APISIX Google Cloud

极速生成缩略图,Serverless 支撑赛事转播锁定冬奥亮点

Serverless Devs

学生外包管理系统架构设计文档

孙强

#架构实战营

如何使用 Apache APISIX CSRF 安全插件拦截跨站点伪造攻击

API7.ai 技术团队

CSRF API网关 Apache APISIX

Apache APISIX 新技能,代理 gRPC-Web 请求

API7.ai 技术团队

gRPC HTTP 网关 APISIX

千万级学生管理系统考试试卷存储方案

唐尤华

架构实战营

StarRocks 元数据管理及 FE 高可用机制

邸星星

BerkeleyDB-JE bdbje StarRocks元数据管理

Apache APISIX 集成 HashiCorp Vault,生态系统再添一员

API7.ai 技术团队

开源 安全 后端 API网关 APISIX

Apache APISIX 集成 Kafka 实现高效率实时日志监控

API7.ai 技术团队

kafka 开源 日志 网关 Apache APISIX

来看看字节跳动内部的数据血缘用例与设计

字节跳动数据平台

大数据 字节跳动 数据血缘

你知道钓鱼网站的形成步骤吗?一次网络钓鱼演练带你了解(增强安全意识)

H

网络安全 钓鱼网站

新插件上线,public API 处理能力更进一步

API7.ai 技术团队

HTTP APISIX APISIX 网关

斯图飞腾Stratifyd入选「2022爱分析·营销科技厂商全景报告」

Geek_2d6073

计算IIS

杉数科技

求解器 优化求解器 计算IIS 混合整数规划 杉数科技

常青藤开源科技加入,龙蜥社区再迎 HPC 和开源领域新伙伴

OpenAnolis小助手

Linux 开源 高性能计算

MASA Framework - DDD设计(2)

MASA技术团队

C# .net .net core 框架 Framework

从中心走向边缘——深度解析云原生边缘计算落地痛点

阿里巴巴云原生

阿里云 Kubernetes 云原生 边缘计算

万字通俗讲解何为复杂度

华为云开发者联盟

数据结构 时间复杂度 复杂度 空间复杂度 复杂度分许

生态扩大进行中!Apache APISIX 支持 Azure Functions 集成

API7.ai 技术团队

microsoft azure API网关 Apache APISIX

Blinn-Phong反射模型

CRMEB

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
华为云MySQL新增MDL锁视图特性,快速定位元数据锁问题(二)_语言 & 开发_华为云_InfoQ精选文章