V7.1 加索引报错“8214 - Cancelled DDL job”

【 TiDB 使用环境】生产环境
【 TiDB 版本】V7.1.2
【复现路径】ALTER TABLE aaa.bbb ADD INDEX ccc ( ddd );
【遇到的问题:问题现象及影响】 8214 - Cancelled DDL job

QQ截图20241210094958

ALTER TABLE aaa.bbb ADD INDEX ccc ( ddd ) ;

复现几率很高,表只有几万行。

创建空表,再alter加索引,不会出现这种情况。

往空表中insert一条数据(全表此时仅一条数据),再alter加索引,复现故障。

为啥要加ASC呢 ? 去掉试试

无关,一样报错。

ALTER TABLE aaa.bbb ADD INDEX ccc ( ddd ) ;

是所有的表都会有这问题吗?这字段是什么数据类型

看 tidb ddl owner 的 tidb.log 日志

集群没有启用TLS吧, 会话级关闭这个变量 tidb_ddl_enable_fast_reorg ,用传统加索引方式 看看报错吗

3 个赞
1229 - Variable 'tidb_ddl_enable_fast_reorg' is a GLOBAL variable and should be set with SET GLOBAL
set global tidb_ddl_enable_fast_reorg = off

再添加索引,成功了

BUG?

1 个赞

之前有碰到有个tikvnode 本地可用空间不足 10%,且开启 fast_ddl 的情况下,加索引报错这个的

怀疑过,后来tikv扩容,所有node,都在 85%左右,还是加索引失败,而且很多小表也是失败。

1 个赞

集群没启用TLS是吧。 你可以测试试试最新的7.1.6上有这问题没

没开启TLS。

升级等V8.5

admin show ddl 命令确认下 ddl leader 节点,然后看看加索引报错时的tidb 日志

[2024/12/10 11:53:23.188 +08:00] [ERROR] [engine.go:143] ["[ddl-ingest] ingest data into storage error"] [error="the remaining storage capacity of TiKV(x.x.x.x:20160) is less than 10%; please increase the storage capacity of TiKV and try again"] ["job ID"=35265] ["index ID"=4]
[2024/12/10 11:53:23.188 +08:00] [ERROR] [ddl_worker.go:943] ["[ddl] run DDL job error"] [worker="worker 3, tp add index"] [error="the remaining storage capacity of TiKV(x.x.x.x:20160) is less than 10%; please increase the storage capacity of TiKV and try again"]

以后新特性期待加大压缩率

还是空间问题,另外这个10%限制有点一刀切的意思。你说的这个加大压缩率是啥? 8.5的压缩率也不会提升吧,rocksdb每层算法也没变 ,你说的是那个每日compaction吗

就是存储空间的压缩,三副本,很费磁盘的。8.5我当然指望不上这个了。期待明年V9

这说明你的集群资源有点紧张了

数据没提交,锁住了吧?

  1. tidb_ddl_enable_fast_reorg 关闭加成功,可能就是因为磁盘问题,他需要用临时空间

image

2.6.5版本之后,默认开启了 元数据锁,也有可能和这个有关系, tidb_enable_metadata_lock

你的tikv多大磁盘, 数据量有多少 ,你的是不是mvcc有点多 需要手动compact下