暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiDB DDL 问题排查

原创 wzf0072 2023-11-25
570

TiDB  DDL 问题排查

  • 1.1 修改 decimal 字段长度时报错 "ERROR 1105 (HY000): unsupported modify decimal column precision"。TiDB 暂时不支持修改 decimal 字段长度。

  • 1.2 TiDB DDL job 卡住不动/执行很慢(通过 admin show ddl jobs 可以查看 DDL 进度):

    • 原因 1:与外部组件 (PD/TiKV) 的网络问题。

    • 原因 2:早期版本(v3.0.8 之前)TiDB 内部自身负载很重(高并发下可能产生了很多协程)。

    • 原因 3:早期版本(v2.1.15 & v3.0.0-rc1 之前)PD 实例删除 TiDB key 无效的问题,会导致每次 DDL 变更都需要等 2 个 lease(很慢)。

    • 其他未知原因,上报 bug。

    • 解决方法:原因 1 需要检查与外部组件的网络问题;原因 2 和 3 已经修复,需要升级到高版本;其他原因,可选择以下兜底方案进行 DDL owner 迁移。

    • DDL owner 迁移方案:

      • 如果与该 TiDB 集群可以网络互通,执行重新进行 owner 选举命令:curl -X POST http://{TiDBIP}:10080/ddl/owner/resign

      • 如果与该 TiDB 集群不可以网络互通,需旁路下线,通过 tidb-ctl 工具,从 PD 集群的 etcd 中直接删除 DDL owner,之后也会重新选举:tidb-ctl etcd delowner [LeaseID] [flags] + ownerKey

  • 1.3 TiDB 日志中报 information schema is changed 的错误:

    • 报错的详细原因以及解决办法参见触发 Information schema is changed 错误的原因。

    • 背景知识:schema version 的增长数量与每个 DDL 变更操作的 schema state 个数一致,例如 create table 操作会有 1 个版本变更,add column 操作会有 4 个版本变更(详情可以参考 online schema change),所以太多的 column 变更操作会导致 schema version 增长得很快。

  • 1.4 TiDB 日志中报 information schema is out of date 的错误:

    • 原因 1:执行 DML 的 TiDB 被 graceful kill 后准备退出,且此 DML 对应的事务执行时间超过一个 DDL lease,在事务提交的时候会报此错。

    • 原因 2:TiDB 在执行 DML 时,有一段时间连不上 PD 和 TiKV,导致 TiDB 在一个 DDL Lease(默认 45s)内没有加载新的 schema,或者 TiDB 断开与 PD 之间带 keep alive 设置的连接。

    • 原因 3:TiKV 压力大或网络超时,通过监控 Grafana -> TiDB 和 TiKV 节点的负载情况来确认是否是该原因。

    • 解决方法:第 1 种原因,在 TiDB 启动时手动重试该 DML 即可;第 2 种原因,需要检查 TiDB 实例和 PD 及 TiKV 的网络波动情况;第 3 种原因,需要检查 TiKV 为什么繁忙,参考 4. TiKV 问题。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论