专栏首页爱可生开源社区分布式 | ddl 失败在 dble 中排查过程

分布式 | ddl 失败在 dble 中排查过程

作者:冒飞

爱可生 dble 项目测试组成员,负责 dble 相关测试工作,拥有多年数据库中间件测试经验,擅长故障排查及性能调优。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


思考一个问题:

当我们用 dble 执行一个 ddl hang 住时,我们该如何下手,如何找到这条 ddl hang 住的原因?是我们自己的操作导致还是踩中了 dble 的 bug ?

下面我们从一个简单的场景着手来分析这个问题:

场景:对 shanging_4_t1 这张表执行 alter,结果 hang 住了

分析第一步:查看 dble 日志看是否有报错?

结果找到这个告警,报错信息跟我们观察到的现象是一致的。

分析第二步:查看这个日志的上下文,找出这个阶段 dble 都做了什么,问题可能出现在哪个阶段?

如果日志信息比较多,我们可以简单删选一下。

命令:less dble.log|grep DDL

从上面的信息我们大概可以看出,这个语句要发往 4 个分片,且这条 ddl 在 dble 执行中包括 2 个步骤。

  • 步骤一:测试连接可用性
  • 步骤二:真正下发 ddl

日志中可以很明显的看出,步骤一验证连接都成功完成了,但其中一个节点执行语句的状态一直处于 start。

根据提示出问题的 connection 为 23,可以定位到问题所在的 dataNode:dn2。

同时可以找到在对应节点上的 mysql 的线程号:29。

分析步骤三:连接日志中提示的出问题的 mysql 节点上,执行 show @@processlist

可以看出该节点上的 ddl 在等待一把锁。

分析到这一步,我们大概已经知道该 ddl 执行 hang 住的原因了,是因为其中一个节点上该语句的在等待锁的释放,无法成功返回结果。

总结

当在 dble 上遇到 ddl 执行失败的时候,我们的排查步骤大致为:

1. 观察 dble 日志,查找是否有相关的报错或告警。

2. 查找报错或告警的上下文,简单的理解 dble 的处理机制,找到该问题出现的环节。

3. 根据日志提示进一步到对应节点上查找原因。

本文分享自微信公众号 - 爱可生开源社区(ActiontechOSS),作者:冒飞

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式 | dble 中分布式时间戳方式的全局序列

    爱可生 dble 项目团队成员,主要负责 dble 相关的日常测试工作,擅长对 dble 中出现的问题进行排查。热爱测试工作,余生欲将测试工作进行到底。

    爱可生开源社区
  • 分布式 | DBLE Release Notes 详细解读 2.20.04.0

    以下对 DBLE 2.20.04.0 版本的 Release Notes 进行详细解读。

    爱可生开源社区
  • 分布式 | DBLE 新全局表检查实现浅析

    爱可生 DBLE 核心研发成员,拥有丰富的分布式数据库中间件开发、咨询以及调优经验,擅长数据库中间件问题排查和处理,对线上中间件部分排错有深入的实践与认知。

    爱可生开源社区
  • Javascript是个好东西(广大人民的智慧是无穷的):

    图片发自简书App 1,面向对象? 其他编程语言对于面向对象要么支持,要么不支持,而js支持原型链,具体的实现要自己动手,实现的方式也是各种流派(相当于别人家的...

    zhaoolee
  • OpenGL 学习系列---观察矩阵

    在 OpenGL 投影矩阵 这篇文章中,讲述了 OpenGL 坐标系统中的投影矩阵,有两种类型的投影矩阵,分别是正交投影和透视投影。

    glumes
  • 从美图手机跨界颐和园,看智能手机如何玩IP定制才能C位出道?

    6月27日美图手机在北京颐和园发布美图T9标准版,并首次与颐和园合作推出美图T9颐和园限量版,其“机身图案灵感源自中国传统色彩——黛绿与碧绿,缀以朱砂,山为黛,...

    罗超频道
  • 揭秘3D打印的工业革命:你须知3D打印知识

    什么是3D打印? 3D打印,即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术。 3D打印...

    机器人网
  • 洛谷P2759 奇怪的函数(log 二分)

    attack
  • data_structure_and_algorithm -- 如何找到字符串中最长回文子串: python & java实现

    Given a string s, find the longest palindromic substring in s. You may assume th...

    MachineLP
  • grafana 介绍与安装、配置

    grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,基于商业友好的 Apache License 2.0 开源协议。是网络...

    用户5760343

扫码关注云+社区

领取腾讯云代金券