取消DDL语句一直在cancelling

【 TiDB 使用环境】生产环境
【 TiDB 版本】从5.4升级到7.5
已升级几个月,前几天突然无法创建表,通过ADMIN SHOW DDL JOBS查看堵塞的DDL信息,然后采用 ADMIN CANCEL DDL JOBS xxx,xxx,xxx。。。把所有等待的DDL全部取消掉,但是他一直在cancelling。

我也采用https://docs.pingcap.com/zh/tidb/stable/sql-faq#定位-ddl-执行卡住的问题这种方式选举新的owner,但是还是无法取消,有什么办法吗?

谢谢!

当前最靠谱的解决方式是重启所有tidb-server

好像很多这个场景,都是重启

试试大佬的办法
1、 检查mysql.tidb_mdl_view kill阻塞进程
2、 关闭所有tidb server , 然后再启动

tidb似乎还没有类似oacle event trace 这类事件追踪功能。 要是条件允许, 找个空闲时间点重启节点吧。

DDL操作无法执行和取消 - :ringer_planet: TiDB 技术问题 - TiDB 的问答社区 (asktug.com)

看看这个问题

重启大法

重启tidb server

确实,一般重启tidb节点比较靠谱,注意是重启tidb节点,不是重启tidb集群

restart所有tidb server

去看看ddl owner日志

空闲时间重启看能恢复不

这是TiDB的Bug吗?虽说重启可以,但是生产不是说重启就能重启的。

restart所有tidb server

生产环境不能乱重启吧,看看有没研发大佬看看

等着吧,估计数据量太大,等待回滚。

是不是还是锁元数据了,看看还有其他在执行的也kill掉试试

升级不够友好,劝退很多用户 :face_exhaling:

1 个赞

这题我会,我的经验:

  1. 重启所有TIDB节点(实践过一次)
  2. 看下owner节点的日志,是不是有报schema not sync 类似的日志。我的经验是某个节点上相关表有大的DML操作,找到并kill掉这个DML就好了

重启大法