nebula怎么快速恢复快照

  • nebula 版本:v1.2.0
  • 部署方式(分布式 / 单机 / Docker / DBaaS):docker 单机
  • 硬件信息
    • HDD 512G
    • CPU、内存信息:4核 16G
  • 问题的具体描述
  • create snapshots
  • show snapshots
  • 我的问题是,这个快照文件在哪里,怎么通过恢复快照文件恢复数据库?
  • nebula的存储目录如下:
    image

https://docs.nebula-graph.com.cn/manual-CN/3.build-develop-and-administration/5.storage-service-administration/cluster-snapshot/#_2

能具体点么,我觉得文档没有描述的很清楚,我在/data 目录下没找到快照

看看这篇 blog 能否解答你的疑问:分布式图数据库 Nebula Graph 中的集群快照实践

image
我找到了快照的文件,有个问题就是,metat节点只有meta2的目录下有snapshot文件,storage目录下只有117目录下有snapshot,这个现象是对的么

checkpoints 应该是针对 leader 做的? 这个具体解释还要请 @bright-starry-sky 来解答一下。

官方文档:当前版本暂未提供快照恢复功能,需要用户根据实际的生产环境编写 shell 脚本实现。实现逻辑也比较简单,拷贝各 engine server 的快照到指定的文件夹下,并将此文件夹设置为 data_path,然后启动集群即可。
还有个问题,上面文档的描述,拷贝各 engine server 的快照到指定的文件夹下,并将此文件夹设置为 data_path,指的是storaged目录下的snapshot文件?将将此文件夹设置为 data_path,此文件夹是用户自定义么,我是修改docker-compose.yaml,设置storage节点为快照对应的文件夹,然后启动集群就可以了?

meta只对leader做snapshot,当前meta2就是leader,storage会对所有节点的part做snapshot。
关于snapshot的恢复,可以看到snapshot下的目录结构和data下的目录结构是一样的,这样的话根据实际业务场景选择不同的恢复方案,各有利弊,例如:

  • 修改data_path指向新的snapshot
  • 将snapshot复制到其他地方,并修改data_path
  • 直接用snapshot下的文件替换原data_path的文件
1 个赞

好的,我先试试,谢谢了

试了下你给的方案,可以了,不过有个问题,这样恢复快照,是不是只能停掉Nebula恢复快照了?

是的

还有个问题是这样的:

  • 测试服是在华南阿里云,5节点集群
  • 线上服务器是在华东阿里云,3节点集群
  • 测试服的Nebula图数据库入完所有数据后,做快照,通过oss上传快照,华东的服务器拉下来
  • 华东的3节点集群能否通过oss下载下来的快照文件恢复数据
  • 两个集群的节点数量不一致

1.0暂时还不支持,因为space 里面有part 对应到storage的机器ip 信息,换了环境 ip 不对 数据就读不出来,现在nebula 2.0正在做br 工具,后续ga 发布可以解决这个问题

快照数据里面有ip信息?换了环境就不行么。。。

是的,必须要离线恢复。

改IP到不是什么问题,如果目标节点比源节点少的话,可能会丢失部分part,源的part是分布在5个节点上,用其中的3个节点的snapshot恢复后,可能会导致数据丢失。

我看到修改IP的帖子也是你贡献的:

如果是迁移式的恢复,不需要停掉源库的5个节点,直接在线传snapshot就行。

但是目标库恢复快照一样要停掉吧,并且按照你说的,节点不一样,part的数据还会丢。。。

是的

1 个赞