Nebula能否在data目录删除指定图谱空间数据

  • nebula 版本:v2.6.1
  • 部署方式:分布式
  • 安装方式:RPM
  • 硬件信息
    • 磁盘 500G
    • CPU 8核、内存信息 16G
  • 问题的具体描述
    按照 执行多次alter tag后nebula崩溃(稳定复现) 的描述复现崩溃后,无法启动服务。我试过清空整个data目录是可以重启的,但是会把其他图谱空间的数据也清掉。我知道是哪个图谱空间有问题,有没有办法定位到这个图谱空间对应的文件夹,删除其数据?

在 Storage 服务的配置文件中设置 auto_remove_invalid_space=true,然后 Drop Space 就好了。参见文档:DROP SPACE - Nebula Graph Database 手册

注意,开启了 auto_remove_invalid_space=true,Drop 的空间数据会被清理掉。

加上配置后,执行启动命令 /usr/local/nebula/scripts/nebula.service start all,graphd和storaged两个服务还是无法启动

你图空间删掉了,然后 meta 服务起来了,但是 storage 和 graph 没起来是嘛

不是,我无法启动 graphd,所以没办法登录 nebula-console,也就没法执行 drop space 语句。

鸡蛋问题啊。- -。你等等,我找个研发同学来。

graphd 跟数据没有关系,不能启动 graphd 有 error 的日志吗?

graphd-stderr.log和graphd-stdout.log 都是空的

不过确实是 执行多次alter tag后nebula崩溃(稳定复现) 数据变更之后导致的 graphd 起不来。

把安装目录里的 pids 下的文件清空之后再试试呢?

还是不行。执行步骤如下:

  1. 停止所有服务 /usr/local/nebula/scripts/nebula.service stop all
  2. 删掉 pids 目录下三个文件
  3. 启动服务 /usr/local/nebula/scripts/nebula.service start all

最终只有 meta 服务起来了,且 graphd 的 stderr.log 和 stdout.log 均为空。

能否认为 927 这个目录对应 2月17日 进行的所有操作,如果删除了,不影响服务的启动和之前的所有数据?
image

没用,起不来,现在想搞定得把meta里的数据通过写工具把多余的数据删掉,那个bug在master已经修掉了,可能升级也行。

1 个赞

“写工具把多余的数据删掉”这个具体咋操作?

这个会比较麻烦,得理解 meta 的数据格式,然后写一个读写 rocksdb 的读写小脚本,直接打开 metad 使用的 rocksdb,将对应的数据删掉。会比较麻烦,如果你懂 rocksdb,我们可以提供下需要删除的 key。

1 个赞

:thinking: 要不升级下版本号吧。升级到 3.0,这个版本中 bug 已经修好了。

略懂

:thinking:这个pr改动也不多,自己改一下重新编译再启动服务应该就可以了吧

是不是用 ldb 去写/删特定格式的key就可以?可以提供一下要删除的 key 么?

不知道我这个会不会帮助到一点(不过我的例子里读的是storage data 不是 meta)

https://gist.github.com/wey-gu/921ade08cccbe285a5f3c34dbc3329de