如何将一个机器的数据迁移到另一台机器

  • nebula 版本:v2.0
  • 部署方式(分布式 / 单机 / Docker / DBaaS):Docker

问题的具体描述:
想要将 v2-preview-nightly上的数据迁移到v2-nightly上 ,想请教一下,如何可以将数据迁移过来?

1 个赞

你那边是想升级服务版本吗?
如果是这样的话,你那边可以直接在 v2-preview-nightly 对应的docker-compose.yaml 文件中修改 image: 到v2-nightly,重新拉镜像启动就可以了

不是的,我是想将v2-preview-nightly机器上的数据迁移到 另一台安装v2-nightly 的机器上

最近一段时间 nebula-storage 的底层数据方式有较大的改动,你用的 v2-preview-nightly 版本,应该是 对应的 v2-alpha 的版本。目前的 v2-nightly 版本的数据格式已经不能直接做平滑的迁移了。

不知你们现在是在生产环境还是测试环境,现有的数据量有多大,个人更建议你把数据重新导入一次。

你可能会有疑问为什么同样是 v2 的不同版本,storage 的数据存储还不兼容?这里是考虑到以后不想让用户下次升级另外的特性时再次重导数据,故在 GA 之前将要做的存储修改一并完成。如果给你带来了困扰,请见谅!

好的,非常感谢,那我是否可以将数据导出再重新导入,

有什么好的方法能否将所有数据一次导出

抱歉,现在这种工具还没来及做。这里可以记个需求给 @jude-zhu

目前可能还是需要按照你导入到上个版本的方式来重新导入。

cc @steam

好的,非常感谢回复!

目前开发的迁移工具支持 both 1.x 和 2.0 RC => 2.0 ga

1 个赞

需求:计划搭建正式环境,将测试环境的数据导入到正式环境

测试环境:v2.0-ga (1*metad + 3*storaged + 2*graphd)
正式环境:v2.0.1 (3*metad + 3*storaged + 3*graphd)

请问这种场景下,采用什么样的数据迁移工具比较合适
@jude-zhu @yee

我们 @dingding 同学在本地测试一下你的场景,从 1 metad 到 3 metad。现在 meta 还不能直接像 storage 一样做扩容

把所有服务停掉,然后你将原来meta的数据目录拷一份到新加的两个meta上面,然后修改metad/storaged/graphd的配置文件,将meta_server_addrs配置修改为三个metad的地址。

那 storaged 的数据可以直接将 data 拷贝过去吗?还是需要经过工具转换?

你上面不是没有增加storage吗?假如是增加storage,你等meta增加之后,走扩容的流程,文档 Storage负载均衡 - Nebula Graph Database 内核手册 , 1.0 的文档详细点 负载均衡和数据迁移 - Nebula Graph 手册

测试环境与正式环境的机器是不一样的,相当于在 3 台新机器部署 Nebula Graph 服务,如何做数据迁移?

把整个集群的数据拷贝到新集群对应的机器上面,假如新集群的集群和测试集群的ip不一样,需要在meta扩容之后,执行下面的命令,向所有metad发送curl命令去修改storage的ip(新集群的storage端口不能和旧的不一致)。命令如下:

curl “http://metad_ip:metad_port/replace?from=old_storaged&to=new_storaged”

例如

curl -Gs "http://192.168.8.5:19559/replace?from=192.168.8.5&to=192.168.8.6"

上面的操作方式是临时的,后续我们会发布br工具,就不需要用户这么操作。

4 个赞

请问br工具什么时候发布呢