前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式 | ddl 失败在 dble 中排查过程

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

作者头像
爱可生开源社区
发布2020-06-01 15:14:00
3870
发布2020-06-01 15:14:00
举报

作者:冒飞

爱可生 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. 根据日志提示进一步到对应节点上查找原因。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景:对 shanging_4_t1 这张表执行 alter,结果 hang 住了
    • 分析第一步:查看 dble 日志看是否有报错?
      • 分析第二步:查看这个日志的上下文,找出这个阶段 dble 都做了什么,问题可能出现在哪个阶段?
        • 分析步骤三:连接日志中提示的出问题的 mysql 节点上,执行 show @@processlist
        • 总结
        • 当在 dble 上遇到 ddl 执行失败的时候,我们的排查步骤大致为:
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档