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

TIDB版本:6.5.3
操作路径:
1.create 新建表
2. drop table
问题:
发现这张空表执行了2天都没执行完。
admin show ddl jobs中一直处于running状态,

尝试使用 admin cancel ddl jobs 停止该DDL,出现以下提示

使用TABLE_ID在INFORMATION_SCHEMA.tables中查询,
tidb_table_id=‘621893’ 没记录。

有没有办法强制删除这条DDL ?

mysql.tidb_mdl_view 先看下这个里面有什么内容

1 个赞

这个表里面没有任何记录信息, 我在想是不是delete的时候出问题 导致tables里面id记录被更新或者删除,引起DDL卡住。
日志中有发现

[2023/08/18 14:59:37.666 +08:00] [INFO] [syncer.go:333] [“[ddl] syncer check all versions, someone is not synced”] [info=“instance ip 10.10.10.86, port 4000, id c6ea2820-553e-4ba8-b3bb-693bd3695390”] [“ddl id”=622065] [ver=500071]
[2023/08/18 14:59:37.666 +08:00] [INFO] [syncer.go:333] [“[ddl] syncer check all versions, someone is not synced”] [info=“instance ip 10.10.10.247, port 4000, id e0f1f71b-20dc-44c3-93e8-92858dab03ac”] [“ddl id”=622065] [ver=500071]
[2023/08/18 14:59:37.666 +08:00] [INFO] [syncer.go:333] [“[ddl] syncer check all versions, someone is not synced”] [info=“instance ip 10.10.10.74, port 4000, id e8790a44-c60f-4bce-aaae-c9934bb82b17”] [“ddl id”=622065] [ver=500071]

官方的排查:

定位 DDL 执行卡住的问题

  1. 先排除 DDL 语句通常执行慢的可能原因。
  2. 使用以下任一方法找出 DDL owner 节点:
  • 通过 curl http://{TiDBIP}:10080/info/all 获取当前集群的 Owner

  • 通过监控 DDL > DDL META OPM 查看某个时间段的 Owner

  • 如果 Owner 不存在,尝试手动触发 Owner 选举:curl -X POST http://{TiDBIP}:10080/ddl/owner/resign

我估计得需要重启所有tidb server才行

2 个赞

得重启tidb-server才行

所有的tidb都重启过了…还是卡在这.

我感觉不是慢的原因 这表是个空表, 会不会是table_id 找不到了?

tidb server 重启是轮流的还是都停掉后再起的

两种试过, 也尝试过 全部关掉 先启动一个tidb-server。没啥效果

https://github.com/pingcap/tidb/issues/44687

github上有个类似的issue,最后一条回答指向了元数据锁。

https://docs.pingcap.com/zh/tidb/stable/metadata-lock#元数据锁的可观测性

按照文档中处理ddl阻塞的方式,操作一下试试看?可能之前kill掉的并不是造成现在阻塞的session。

如果还不行就把元数据锁的这个特性关闭算了。

在 v6.5.0 及之后的版本中,TiDB 默认开启元数据锁特性。当集群从 v6.5.0 之前的版本升级到 v6.5.0 及之后的版本时,TiDB 会自动开启元数据锁功能。如果需要关闭元数据锁,你可以将系统变量 [tidb_enable_metadata_lock](https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_enable_metadata_lock-%E4%BB%8E-v630-%E7%89%88%E6%9C%AC%E5%BC%80%E5%A7%8B%E5%BC%95%E5%85%A5) 设置为 OFF

没好办法,只能关tidb-server

关闭 TIDB-server 我也关过了…对我这情况好像不好使.

SELECT * FROM mysql.tidb_mdl_view 检查是否有记录

ddl还卡着呢?

最后怎么恢复的,我们现在也是这样6.5.1

重启所有tidb组件就行
tiup cluster restart tidb-test -R tidb
我也遇到了这个问题

1 个赞

后面解决了吗?

可以看下:
1 select * from mysql.tidb_mdl_info;
2 ip 10.10.10.74, port 4000 的 tidb 日志

1 个赞

最后咋解决的

到底恢复了没

后面恢复了没