有个数据节点被损坏,现在需要保留历史数据,请问需要怎么处理

【TDengine 使用环境】
生产环境

【TDengine 版本】

3.3.6.9

【操作系统以及版本】

centos7.9

【部署方式】容器/非容器部署

docker

【集群节点数】

1

【集群副本数】

【描述业务影响】

vnode3_bad:一般是 vnode 目录损坏,正常目录为 vnode3,异常后生成 vnode3_bad,导致整个服务器不可用

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

删除过超级表的一个字段后出现

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

【资源配置】

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

如果服务可用性比数据完整性更重要,或者你使用的是开源版且无法通过restore 恢复,可以采取“丢车保帅”的应急措施。

  1. 备份数据 :备份所有相关的数据目录 。
  2. 核心思路 :直接删除损坏的vnode目录,让TDengine跳过这个损坏的部分,但这会导致该vnode上存储的数据永久丢失
  3. 操作步骤 (参考类似问题处理):
  • 进入Docker容器或数据挂载目录,找到损坏的vnode3_bad 目录。
  • 将其删除或移走 。系统启动后,如果发现目录不存在,有可能会尝试创建新的正常vnode目录,或者跳过它,从而使服务恢复可用。
  • 警告 :这是一种非常规操作。在删除前,请务必确认该vnode上的数据是否可以接受丢失。有用户在遇到类似“Sync leader is restoring”问题时,通过删除WAL目录恢复了服务,但明确指出了数据会丢失

用的是开源版,单机部署,只有一个数据节点,删了节点全部数据就没了,目前是保留了数据挂载目录,迁移到另外一台服务器后,重装了相同的版本,挂载了原来的数据目录,还是报错,09/03 11:59:55.342620 00000227 C TSD ERROR vgId:3 tsdbSttFileReadBlockData failed at /data/release/main/TDinternal/community/source/dnode/vnode/src/tsdb/tsdbSttFileRW.c:234 since Failed to compress msg
09/03 11:59:55.342636 00000227 C TSD ERROR vgId:3 tsdbCommitTSData failed at /data/release/main/TDinternal/community/source/dnode/vnode/src/tsdb/tsdbCommit2.c:139 since Failed to compress msg
09/03 11:59:55.342639 00000227 C TSD ERROR vgId:3 tsdbCommitFileSet failed at /data/release/main/TDinternal/community/source/dnode/vnode/src/tsdb/tsdbCommit2.c:371 since Failed to compress msg
09/03 11:59:55.342640 00000227 C TSD ERROR vgId:3 tsdbCommitBegin failed at /data/release/main/TDinternal/community/source/dnode/vnode/src/tsdb/tsdbCommit2.c:675 since Failed to compress msg
09/03 11:59:55.342642 00000227 C VND ERROR vgId:3, vnodeCommitImpl failed at line 444 since Failed to compress msg
09/03 11:59:55.342644 00000227 C VND FATAL vgId:3, failed to commit vnode since success

磁盘坏导致文件损坏,又只有一个节点,那么这个单副本的情况下,那就无法恢复了。