TDengine元数据损坏

【TDengine 使用环境】
预生产环境

【TDengine 版本】

3.3.6.13

【操作系统以及版本】

redhat 8.7

【部署方式】非容器部署

【集群节点数】

3

【集群副本数】

3

【描述业务影响】

业务系统相关查询数据报错,没法正常使用,这个集群有多个库只有使用的global_one_esg_new2有问题,而global_one_esg_new库没怎么使用是正常的

【问题复现路径/shan】做过哪些操作出现的问题

就正常重启,没做过其他事情,启动后就这样了

【遇到的问题:问题现象及影响】

 按照超级表查询oneesg_value报错,

  SELECT `ts`,`data_type`,`source_type`,`calc_value`,`string_value`,`update_time`,`written_time`,`valid`,`attachment`,`comment_info`,`interval_type`,`update_by`,`written_by`,`is_deleted`
  FROM `global_one_esg_new2`.`oneesg_value` limit 200;

如果指定子表查询就没问题,

SELECT `ts`,`data_type`,`source_type`,`calc_value`,`string_value`,`update_time`,`written_time`,`valid`,`attachment`,`comment_info`,`interval_type`,`update_by`,`written_by`,`is_deleted`
  FROM `global_one_esg_new2`.`oneesg_value` 
  where full_code = '21325.ESG-OUTPUT-YEAR-097'
像这个 where这个不带就报错,带上where 就没问题


有个子表oneesg_value_f42fa4c0e58bfedfbe3a314438f76ba8,使用 show tables;查询不到
但是可以执行
SELECT * FROM `global_one_esg_new2`.`oneesg_value_f42fa4c0e58bfedfbe3a314438f76ba8`

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

启动后,一致在刷新以下报错,下面只是一个vgroup的:

06/02 16:47:30.358632 00022900 C TDB ERROR tdb/btc-move-downward: invalid pgno.
06/02 16:47:30.358634 00022900 C TDB ERROR tdb/btc-move-to: btc move downward failed.
06/02 16:47:30.358636 00022900 C TDB ERROR tdb/btree-insert: btc move to failed with ret: -1.
06/02 16:47:30.358639 00022900 C MTA ERROR vgId:39, metaEntryTableUpsert failed at /root/tdengine/source/dnode/vnode/src/meta/metaEntry2.c:191 since Unknown error 65535, version:1222688 type:2 uid:4405929797887246278 name:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b
06/02 16:47:30.358642 00022900 C MTA ERROR vgId:39, metaHandleChildTableCreateImpl failed at /root/tdengine/source/dnode/vnode/src/meta/metaEntry2.c:1331 since Unknown error 65535, version:1222688 type:2 uid:4405929797887246278 name:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b
06/02 16:47:30.358644 00022900 C MTA ERROR vgId:39, metaHandleChildTableCreate failed at /root/tdengine/source/dnode/vnode/src/meta/metaEntry2.c:1389 since Unknown error 65535, version:1222688 type:2 uid:4405929797887246278 name:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b
06/02 16:47:30.358647 00022900 C MTA ERROR vgId:39, metaHandleEntry2 failed at /root/tdengine/source/dnode/vnode/src/meta/metaEntry2.c:2541 since Unknown error 65535, version:1222688 type:2 uid:4405929797887246278 name:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b
06/02 16:47:30.358650 00022900 C MTA ERROR vgId:39, metaCreateChildTable failed at /root/tdengine/source/dnode/vnode/src/meta/metaTable2.c:407 since Unknown error 65535, uid:4405929797887246278 name:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b suid:4403859238535214345 version:1222688
06/02 16:47:30.358653 00022900 C VND ERROR vgId:39 failed to create table:oneesg_value_b74f08ed72c77c8325ef2983c8a2279b, code:Unknown error 65535
06/02 16:47:30.358657 00022900 C VND ERROR vgId:39, process submit request failed since Unknown error 65535, ver:1222688

下面报错是执行以下超级表 sql 报的

SELECT `ts`,`data_type`,`source_type`,`calc_value`,`string_value`,`update_time`,`written_time`,`valid`,`attachment`,`comment_info`,`interval_type`,`update_by`,`written_by`,`is_deleted`   FROM `oneesg_value
` limit 200;

按照超级表查询oneesg_value报错,

SELECT `ts`,`data_type`,`source_type`,`calc_value`,`string_value`,`update_time`,`written_time`,`valid`,`attachment`,`comment_info`,`interval_type`,`update_by`,`written_by`,`is_deleted`
FROM `global_one_esg_new2`.`oneesg_value` limit 200;

按照超级表查询,具体报告的是什么错误?请将错误信息贴出来。

请将执行sql 失败的情况截图处理。

下面红色标记的就是查询报错日志

研发反馈是解决过这种问题,请升级到最新版本。

是升级到 3.4.1 吗,现在生产已经在用了,不敢贸然升级,我想问下,这种一般是什么原因导致的吗,我们看看能避免吗

我们表里有使用 decimal 类型,不知道是不是这个导致的

与这种数据类型没有关系。还是元数据处理方面的问题。

好的,如果不升级版本有办法避免吗?现在不太敢升级版本

暂时没有好办法。可以试试 taosd -r 启动一次,看看能不能修复。