在一个700w的表中添加索引 ALTER TABLE `database_class`.`table_group` ADD INDEX `idx_id` (`myid`);

目前有6个tikv,其中一个kv节点是故障了,不在线,9个tidb节点,也有一个节点不在线,添加这个索引ALTER TABLE database_class.table_group ADD INDEX idx_id (myid);,一直没反应,不知道是和节点离线有没有关心,还是说和表大小有关系,应该从那里的日志入手去找报错啊,tidb tikv日志都没看到关于添加index的报错,求大神们指导

上面是tidb上的报错 是不是需要我 把
image
这个tikv恢复起来,或者 从集群中彻底删除,剔除,才可以添加索引

192.168.1.11是掉线的TiKV节点吗?

有可能有关,这个Tikv节点啥情况,现在在不动这个Tikv的情况下,可以试试把这个参数关了https://docs.pingcap.com/zh/tidb/v7.6/system-variables#tidb_ddl_enable_fast_reorg-从-v630-版本开始引入

是我只是改了下 tikv13:20160 就是192.168.1.11 这个ip 这个 tikv 挂掉了

我试下 大佬

700w数据 增加索引 就一直running 半个小时 都没用, [2024/02/13 13:45:28.280 +08:00] [INFO] [index.go:620] [“[ddl] run add index job”] [job=“ID:3864, Type:add index, State:running, SchemaState:none, SchemaID:88, TableID:2905, RowCount:0, ArgLen:6, start time: 2024-02-13 13:39:17.254 +0800 CST, Err:[ddl:-1][Lightning:KV:ErrCheckMultiIngest]check multi-ingest support error: rpc error: code = Unavailable desc = connection error: desc = “transport: Error while dialing: dial tcp 192.168.1.11:20160: i/o timeout”, ErrCount:59, SnapshotVersion:0, UniqueWarnings:0”] [indexInfo=“{“id”:6,“idx_name”:{“O”:" idx_id “,“L”:” idx_id “},“tbl_name”:{“O”:”“,“L”:”“},“idx_cols”:[{“name”:{“O”:“user_id”,“L”:“user_id”},“offset”:2,“length”:-1}],“state”:0,“backfill_state”:0,“comment”:”",“index_type”:1,“is_unique”:false,“is_primary”:false,“is_invisible”:false,“is_global”:false,“mv_index”:false}”] 报错,RowCount:0 一直显示是0 一行都没生效

通常的做法是将此TiKV进行缩容,此时会进入offline状态,处于该状态的 TiKV 会进行 leader 的 transfter 和 region balance ,当 leader_count/region_count 均显示 transfter 或 balance 完毕后,该 TiKV 会由 Offline 转为 Tombstone。此状态表示该 TiKV 已处于完全下线状态,可以使用 remove-tombstone 接口安全的清理该状态的 TiKV。然后再更改IP,完成后将此TiKV进行扩容。

是不是此TiKV上的region正在进行Leader选举?

把故障的tikv节点完全下线到 Tombstone状态应该就可以了。
确认故障节点的leader_count和region_count为0:
select store_id,address,leader_count ,region_count from information_schema.tikv_store_status;

“ 是我只是改了下 tikv13:20160 就是192.168.1.11 这个ip 这个 tikv 挂掉了”

请问一下,这是要修改IP么,如果楼主有需要修改IP的需求,需要对旧IP进行缩容和新IP扩容,不能直接修改tikv节点的IP,否则会出现一些异常状况。

而且查看添加索引进度,可以通过admin show ddl jobs 查看执行队列信息,也有可能是别的任务在阻塞着。先去看看DDL执行队列情况

1 个赞

ADMIN SHOW DDL JOBS;
看看这个添加索引的状态等信息?

SELECT * FROM mysql.tidb_mdl_view
查查有没有元数据锁?

两个思路?
1 把TIdb,TIKV的故障节点都下线掉,再试试。
2 看一下你要添加索引的数据分布情况,是不是表自己的问题

1 个赞