TIDB DDL执行两天了,无法删除

重启所有TiDB没用, 我这边是停止所有TiDB, 等一分钟启动一个TiDB节点, 然后就恢复了。 最后启动所有TiDB节点

能找到这个sql的id,然后杀掉嘛

没解决, 这ddl 现在还在。

如果是 MDL 元数据锁的锅,可以在 ddl owner 节点的日志中搜索下 old running transaction block DDL 关键字看看,类似于下面的日志:

[2023/07/13 10:12:17.815 +08:00] [INFO] [session.go:4323] ["old running transaction block DDL"] ["table ID"=59840] [jobID=59901] ["connection ID"=3371080660529549211] ["elapsed time"=6h12m17.659493018s] 
1 个赞

找个维护时间tiup cluster restart xxxx -R tidb

tidb 的日志都还在吗?

这个和Oracle kill后台进程差不多,不知道tidb是否支持,重启大法肯定好使。

没有找到对应的日志

这个都尝试过了。

目前情况:
在INFORMATION_SCHEMA.TIKV_REGION_STATUS表中已经找不到
table_id 为 621893的记录了

是不是因为没有记录了 导致这个ddl卡住?
有没有办法主动创建这个table_id?

把这段时间(开始执行到现在)的tidb.log都上传下,让研发看看

把所有tidb 节点的日志都收集下,然后打包传上来…

可以用tiup diag 收集

tiup diag 是怎么使用 我日志有点大

https://docs.pingcap.com/zh/tidb/stable/clinic-user-guide-for-tiup#第-2-步采集数据

hello, 日志能弄出来吗?

日志太大了 先传当时前后2小时的日志

已经和题主沟通,通过用 ETCD 修改里面的 key 绕过去。

原因是往 ETCD 里写 MDL 时,由于网络之类的原因,违反了线性一致性。
比如说,往 ETCD 里写入 500070,结果超时,然后重试成功。
随后往 ETCD 里写入 500071。
结果最开始超时的 500070 又成功了,把预期的 500071 覆盖。

3 个赞

厉害 这也行

通过用 ETCD 修改里面的 key 绕过去 想问下这个是怎么实现的?