dgtgsou
(Neo)
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】V6.5.5
【复现路径】添加索引,无法添加成功。
【遇到的问题:问题现象及影响】添加索引,无法添加成功。
1500行的表,添加索引1天未完成
admin show ddl jobs 一直显示 running状态
这张表做过压力测试,数据量从1500行增加到 1000万行
在1000万行的数据量上执行过添加2列的组合索引,然后一直卡着不动,最后执行了 admin cancel ddl jobs ,耗时8 小时后显示回滚成功
开始以为是数据量大的原因导致,后面进行了压测数据清理工作,数据量恢复到1500行,并进行了 analyze table xxx,数据信息显示的行数正常。
看下tidb server的日志呢,有没有error日志
1 个赞
1500行的表增加索引,正常应该是秒加成功;
看看日志,有无报错,有无DDL一直没有完成
zhanggame1
(Ti D Ber G I13ecx U)
4
数据清理工作怎么做的?
show table regions看看
WalterWj
(王军 - PingCAP)
5
tidb-server 滚动重启下,可能是哪里卡主了。升级到最新的 65x 版本吧
1 个赞
dgtgsou
(Neo)
6
其它表的DDL操作,正常执行,V6.5.5是可以并发执行的
dgtgsou
(Neo)
8
delete 10000行 循环删除,删除完成后,analyze table
WalterWj
(王军 - PingCAP)
9
难道是分区表,是不是分区很多?
硬件达标的话 1000w 表加索引 3min 也就加上了。不可能很慢的。
1 个赞
dgtgsou
(Neo)
10
硬件没有问题,其它3000万的表添加索引,虽然时间长点,但是可以正常添加完成。
dgtgsou
(Neo)
11
我这个版本是从 v5.4.3升到v6.5.5的,然后有个 /tmp/tidb 这个目录集群没有自动创建,当时报了这个目录不存在。Fast Online DDL 好像是这个新功能默认打开后,没有自动创建,但是我手动在所有tidb节点上都创建完成授权后,还是一样没有效果,总感觉它是一张大表,不像一张 1000行的小表。
DBAER
(66666)
12
mark 一下,后续需要关注一下,论坛有好多ddl 执行失败的
压测不止这张表吧,观察下操作系统的资源情况呢,比如磁盘容量。
dgtgsou
(Neo)
14
show table xxx regions;
结果明显多
生产库上 1500行 show table xxx regions 显示 有 2185行
测试库上 10614185行 show table xxx regions 显示 有 120行
当时有没有看有没有元数据锁?
select * from mysql.tidb_mdl_view;
zhanggame1
(Ti D Ber G I13ecx U)
16
delete 10000行 循环删除数据还在,自动compact可能要几天时间才能清理,所以慢。
建议create 新表 like 旧表;
然后insert into 新表 select * from 旧表;
删除旧表重命名新表,再试试建索引
dgtgsou
(Neo)
17
多谢,这是最后的方案了,现在想着要是能正常解决最好了。
小龙虾爱大龙虾
(Minghao Ren)
19
在添加索引时,执行 admin show ddl jobs 语句,当 state 在 write reorganization 阶段,ROW_COUNT 在持续增加的时候,证明在回填数据,创建索引正常,如果一直不是这状态,那就不对,查下mdl 锁吧,再不行就查日志,重启大法