【TiDB 使用环境】生产环境
【TiDB 版本】8.1
【操作系统】redhat7.6
【部署方式】lxc,ssd+nvme
【集群数据量】几百G
【集群节点数】7个tikv节点
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
同样的DDL操作,在测试环境执行秒级完成,但线上环境却执行了40多分钟,线上环境已经停止了更新操作只保留查询服务。测试环境的数据是从正式环境导入,数据量相当。要修改的2张表记录都是3亿多,A表字段少些没有大字段,B表有1个longtext大字段和多个长varchar字段。A和B表在测试环境都是秒级完成。A表在正式环境用了3分钟,B表用了40多分钟。对比过2套环境的参数,基本都是使用的默认参数没有做特别修改。
测试环境只有4个TIKV节点都是ssd的。
A表是执行 add column createTime
datetime DEFAULT CURRENT_TIMESTAMP
B表是执行 add column insertTime
datetime DEFAULT CURRENT_TIMESTAMP
线上库有部署CDC,分别同步数据到MySQL和异机房TiDB集群,在做DDL操作前都先暂停了CDC同步,另外临时关闭tidb_gc_enable,防止操作时间太长导致后续CDC中断。这个操作在测试库上面也测试过线关闭在DDL,也是很快
另外收集了一下B表的region分布,线上是有7000多个region,测试是有5000多个region
,从region看并没有较大差异。
另外各个节点当时的io也不忙
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【复制黏贴 ERROR 报错的日志】
没有报错,就是2套环境,执行时间差异太大,似乎测试环境没有因为新字段带动态缺省值触发数据回填,而线上库却触发了。
看tidb节点大量日志有如下:
2025/06/19 00:33:13.620 +08:00] [INFO] [syncer.go:352] [“syncer check all versions, someone is not synced”] [category=ddl] [info=“ins
tance ip 10.18.160.170, port 4000, id eb5abdf5-d0fe-4513-bd55-2f72d63729d3”] [“ddl job id”=235] [ver=226]
2025/06/19 00:42:00.116 +08:00] [INFO] [syncer.go:352] [“syncer check all versions, someone is not synced”] [category=ddl] [info=“ins tance ip 10.18.160.170, port 4000, id eb5abdf5-d0fe-4513-bd55-2f72d63729d3”] [“ddl job id”=235] [ver=226] [2025/06/19 00:42:00.224 +08:00] [INFO] [ddl_worker.go:1454] [“wait latest schema version changed(get the metadata lock if tidb_enable _metadata_lock is true)”] [category=ddl] [ver=226] [“take time”=8m46.656811475s] [job=“ID:235, Type:add column, State:running, SchemaS tate:delete only, SchemaID:108, TableID:213, RowCount:0, ArgLen:4, start time: 2025-06-19 00:33:13.507 +0800 CST, Err:, ErrCount: 0, SnapshotVersion:0, LocalMode: false”] [2025/06/19 00:42:00.230 +08:00] [INFO] [ddl_worker.go:1206] [“run DDL job”] [worker=“worker 1, tp general”] [category=ddl] [jobID=235 ] [conn=2725483390] [category=ddl] [job=“ID:235, Type:add column, State:running, SchemaState:delete only, SchemaID:108, TableID:213, R owCount:0, ArgLen:0, start time: 2025-06-19 00:33:13.507 +0800 CST, Err:, ErrCount:0, SnapshotVersion:0, LocalMode: false”] [2025/06/19 00:42:00.242 +08:00] [INFO] [domain.go:280] [“diff load InfoSchema success”] [currentSchemaVersion=226] [neededSchemaVersi on=227] [“start time”=1.498309ms] [gotSchemaVersion=227] [phyTblIDs=“[213]”] [actionTypes=“[5]”] [diffTypes=“["add column"]”] [2025/06/19 00:42:00.245 +08:00] [INFO] [domain.go:886] [“mdl gets lock, update self version to owner”] [jobID=235] [version=227] [2025/06/19 00:42:00.290 +08:00] [INFO] [syncer.go:390] [“syncer check all versions, someone is not synced, continue checking”] [categ ory=ddl] [ddl=/tidb/ddl/all_schema_by_job_versions/235/eb5abdf5-d0fe-4513-bd55-2f72d63729d3] [currentVer=226] [latestVer=227]
【其他附件:截图/日志/监控】
B表数据
A表数据