数据快照备份恢复问题

  1. 数据快照存储路径,本地和文档有区别,这个是版本原因造成的吗?
    看文档是说直接在/data数据目录下,但本地会细分到子文件夹中
    ├── data
    │ ├── metad
    │ │ └── nebula
    │ │-----└── 0
    │ │----------├── checkpoints
    │ │----------├── data
    │ │----------└── wal
    │ └── storage
    │-----└── nebula
    │----------├── 17
    │---------------├── checkpoints
    │---------------├── data
    │---------------└── wal
    │----------├── 34
    │---------------├── checkpoints
    │---------------├── data
    │---------------└── wal

  2. 将所有数据整体迁移到新机器上时,config文件除了ip信息外都未改动,为什么新机器启动服务后,会有原机器的host信息,这个是保存在./data/metad文件夹中了吗?那就是这个文件夹在恢复时不需要转移?
    (root@nebula) [dkg]> show hosts
    | Ip | Port | Status | Leader count | Leader distribution | Partition distribution |
    | 新的.101 | 44500 | online | 0 | No valid partition | No valid partition |
    | 新的.102 | 44500 | online | 0 | No valid partition | No valid partition |
    | 新的.103 | 44500 | online | 0 | No valid partition | No valid partition |
    | 旧的.82 | 44500 | offline | 0 | | xxx: 100,xxx: 100, xxx: 100,xxx: 100,xxx: 100|
    | Total | | | 0 | | xxx: 100,xxx: 100, xxx: 100,xxx: 100,xxx: 100 |

  3. 目前查询数据功能都还正常,但是无法使用balance data,报错
    (root@nebula) [dkg]> balance data
    [ERROR (-8)]: No valid host hold the partition

IP的问题,因为metaServer中记录了历史的host,迁到新机器上因为IP改动而启动失败。目前checkpoint尚未支持异构恢复。

应该不算异构吧,我本来打算是,数据完全复制到一个节点上,启动服务,再通过balance data进行数据再平衡到其它节点。这样一对一的恢复,看论坛另一个帖子应该是没问题的呀

现在数据库启动查询都没问题,然后也试过在复制数据那个节点上,把metad文件夹内容都删除了,再重新启动,但还是这样,是不是nebula程序文件夹也有东西需要一起删除才行?

每个问题后追加了回复,
关于第一个问题,如果我把Meta和storage设置到同一个data下,和你的结构是相似的,

请问能提供一下这个帖子的URL吗?从理论上来说,拷贝集群的一个节点,通过这个节点将数据balance到其它节点上的方案不可行。因为你所拷贝的节点中只有部分partition。

我拷贝的源机器,只有一个节点,所以是有全部数据信息的。所以一对一这样拷贝应该是可以的吧。

这个帖子后面有说是将数据从一台迁移到另一台上。

那我现在想将服务扩展,如果不通过dump再load的方式,可不可以先在旧节点上增加三个新的节点,再进行扩容->缩容的操作,把旧节点踢出去。

可以的,如果需要替换node或水平扩容,这是最好的方案。

这里有一篇文章,希望对你有所帮助
https://docs.nebula-graph.com.cn/manual-CN/3.build-develop-and-administration/5.storage-service-administration/storage-balance/

好,我重新启动下服务吧,还有,之前提到的checkpoint目录问题,我是参考文档里设置的目录,就是./data/storage和./data/metad形式,你们一般是怎样设置的,可以使checkpoint不在那么深的目录下,data_storage/storage 和 data_metad/metad这样?

可以将storage 和 meta的目录分开设置,例如
nebula-storaged.conf : --data_path=storage_dir
nebula-metad.conf : --data_path=meta_dir

什么意思,现在是分开的阿,现在是
–data_path=/data/nebula/data/storage
–data_path=/data/nebula/data/metad

是的,最优就是这样了,checkpoint 目录将会在第四层:
├── metad (你的data_path根目录)
│ │ └── nebula (nebula graph 预定义的目录,无法改变)
│ │-----└── 0 (space 目录,这个序号表示spaceID)
│ │----------├── checkpoints (checkpoint目录,这个目录中有子目录data和wal)
│ │----------├── data (data 目录)
│ │----------└── wal (write ahead log目录)