2.6升级到3.3通过快照迁移数据

在升级准备中解压 TAR 包的目的路径下,用此处bin目录中的新版二进制文件替换 NebulaGraph 安装路径下bin目录中的旧版二进制文件。

这是新meta的意思吧

2.6升级到3.3只需要替换二进制文件,并在meta中增加session_idle_timeout_secs、session_idle_timeout_secs配置项即可,具体步骤如下:

  1. 停止2.6的服务
  2. 将3.3 bin目录替换2.6 的bin目录
  3. 在meta中增加session_idle_timeout_secs、session_idle_timeout_secs配置项
  4. 重启服务

详见:升级 NebulaGraph 版本 - NebulaGraph Database 手册

2 个赞

好吧。2.6->3.0/3.1/3.2是要工具升级
但2.6->3.3是直接替换二进制。

那他用快照升级为什么不行呢,为什么一启动就给删了,这是什么情况?

2 个赞

会不会是用docker的原因

我2.6的环境里面执行

./db_upgrader
–src_db_path=/usr/local/nebula/data/storage
–dst_db_path=/usr/local/nebula/data/storage-v3
–upgrade_meta_server=192.168.66.79:49232,192.168.66.79:49233,192.168.66.79:49228
–upgrade_version=2:3

–upgrade_meta_server=192.168.66.79:49232,192.168.66.79:49233,192.168.66.79:49228
这个meta服务地址是3.3的,只启动了meta服务和graph服务

执行的结果还是space not found

[root@nebula-cluster-storaged-3 bin]# ./db_upgrader --src_db_path=/usr/local/nebula/data/storage --dst_db_path=/usr/local/nebula/data/storage-v3 --upgrade_meta_server=192.168.66.79:49255,192.168.66.79:49259,192.168.66.79:49256 --upgrade_version=2:3
===========================PARAMS============================
meta server: 192.168.66.79:49255,192.168.66.79:49259,192.168.66.79:49256
source data path: /usr/local/nebula/data/storage
destination data path: /usr/local/nebula/data/storage-v3
The size of the batch written: 100
upgrade data from version: 2:3
whether to compact all data: true
maximum number of concurrent parts allowed:10
maximum number of concurrent spaces allowed: 5
===========================PARAMS============================

I20221222 06:59:57.406024   802 DbUpgraderTool.cpp:112] Prepare phase begin
I20221222 06:59:57.406349   802 MetaClient.cpp:80] Create meta client to "192.168.66.79":49259
I20221222 06:59:57.406359   802 MetaClient.cpp:81] root path: , data path size: 0
I20221222 06:59:57.441632   802 MetaClient.cpp:3108] Load leader of "storaged0":9779 in 0 space
I20221222 06:59:57.441723   802 MetaClient.cpp:3108] Load leader of "storaged1":9779 in 0 space
I20221222 06:59:57.441730   802 MetaClient.cpp:3108] Load leader of "storaged2":9779 in 0 space
I20221222 06:59:57.441732   802 MetaClient.cpp:3114] Load leader ok
I20221222 06:59:57.445302   802 MetaClient.cpp:162] Register time task for heartbeat!
I20221222 06:59:57.445322   802 DbUpgraderTool.cpp:171] Prepare phase end
I20221222 06:59:57.445325   802 DbUpgraderTool.cpp:174] Upgrade phase begin
I20221222 06:59:57.445528   810 DbUpgraderTool.cpp:185] Upgrade from path /usr/local/nebula/data/storage to path /usr/local/nebula/data/storage-v3 begin
I20221222 06:59:57.446424   810 DbUpgrader.cpp:1169] Upgrade from path /usr/local/nebula/data/storage to path /usr/local/nebula/data/storage-v3 in DbUpgrader run begin
E20221222 06:59:57.446447   810 MetaClient.cpp:1393] Space 806 not found!
E20221222 06:59:57.447206   810 DbUpgrader.cpp:76] Space id 806 no found
E20221222 06:59:57.447214   810 DbUpgrader.cpp:59] Init /usr/local/nebula/data/storage space id 806 failed
W20221222 06:59:57.447221   810 DbUpgrader.cpp:1180] Upgrade from path /usr/local/nebula/data/storage space id 806 to path /usr/local/nebula/data/storage-v3 init failed
W20221222 06:59:57.447224   810 DbUpgrader.cpp:1182] Ignore upgrade /usr/local/nebula/data/storage space id 806
E20221222 06:59:57.447232   810 MetaClient.cpp:1393] Space 0 not found!
E20221222 06:59:57.447238   810 DbUpgrader.cpp:76] Space id 0 no found
E20221222 06:59:57.447244   810 DbUpgrader.cpp:59] Init /usr/local/nebula/data/storage space id 0 failed
W20221222 06:59:57.447250   810 DbUpgrader.cpp:1180] Upgrade from path /usr/local/nebula/data/storage space id 0 to path /usr/local/nebula/data/storage-v3 init failed
W20221222 06:59:57.447254   810 DbUpgrader.cpp:1182] Ignore upgrade /usr/local/nebula/data/storage space id 0
E20221222 06:59:57.447259   810 MetaClient.cpp:1393] Space 796 not found!
E20221222 06:59:57.447265   810 DbUpgrader.cpp:76] Space id 796 no found
E20221222 06:59:57.447271   810 DbUpgrader.cpp:59] Init /usr/local/nebula/data/storage space id 796 failed
W20221222 06:59:57.447278   810 DbUpgrader.cpp:1180] Upgrade from path /usr/local/nebula/data/storage space id 796 to path /usr/local/nebula/data/storage-v3 init failed
W20221222 06:59:57.447283   810 DbUpgrader.cpp:1182] Ignore upgrade /usr/local/nebula/data/storage space id 796
E20221222 06:59:57.447288   810 MetaClient.cpp:1393] Space 609 not found!
E20221222 06:59:57.447293   810 DbUpgrader.cpp:76] Space id 609 no found
E20221222 06:59:57.447299   810 DbUpgrader.cpp:59] Init /usr/local/nebula/data/storage space id 609 failed
W20221222 06:59:57.447305   810 DbUpgrader.cpp:1180] Upgrade from path /usr/local/nebula/data/storage space id 609 to path /usr/local/nebula/data/storage-v3 init failed
W20221222 06:59:57.447309   810 DbUpgrader.cpp:1182] Ignore upgrade /usr/local/nebula/data/storage space id 609
I20221222 06:59:57.447314   810 DbUpgrader.cpp:1196] Max concurrent spaces: 0
I20221222 06:59:57.447316   810 DbUpgrader.cpp:1206] Upgrade from path /usr/local/nebula/data/storage to path /usr/local/nebula/data/storage-v3 in DbUpgrader run end
I20221222 06:59:57.447319   810 DbUpgraderTool.cpp:193] Upgrade from path /usr/local/nebula/data/storage to path /usr/local/nebula/data/storage-v3 end
I20221222 06:59:57.447429   802 DbUpgraderTool.cpp:202] Upgrade phase end
[root@nebula-cluster-storaged-3 bin]# ls /usr/local/nebula/data/storage

我把2.6的快照恢复到另外一个2.6的服务里面就不会被删,恢复到3.3的服务里面就会被删除

会不会是是我用的docker方式部署的服务,执行这些操作的时候都不能停机,所以我尝试用二进制包里的 binary upgrade 工具,放到2.6 storaged 里执行,期望是把数据升级成3.3的服务,然后把升级后的数据复制到3.3的服务中,试着去解决2.6的快照复制到3.3的服务中被删除的情况。

现在是第一步upgrade就不行,报space not found 但是我2.6的服务是正常的。

难道我需要用本地搭建一个2.6的服务,然后把快照备份到这个本地服务,然后升级本地服务到3.3,然后再把本地服务3.3的快照迁移到docker 3.3的服务里????

如果数据兼容,直接拉一份出来启动就行了

现在可能就是2.6的数据不兼容?我用快照去启动3.3的,其实是拉一份数据的操作是一样的啊

升级工具主要是为了生成tagless key,如果不使用tagless key的话,是无需使用升级工具的。
刚好3.3去除了tagless key,所以无需使用升级工具。
至于使用快照升级为什么不行,不是太确定,需要咨询一下客户具体的恢复步骤。

请问一下:

  1. 2.6和3.3现在是两个环境么?ip什么都发生了变化吗?
  2. 恢复快照的时候所有的meta都付覆盖了吗?

2.6和3.3现在是两个环境,两个不同的docker环境,IP发生了变化
恢复快照的时候所有的meta都覆盖了,恢复完就重启整个服务
采用的是这个方式恢复快照

我刚刚试了下,相同配置下,把2.6的/data/storage0 的数据直接复制到3.3的data/storage0下面,启动3.3后就自动把数据删除了,只剩下0

我怀疑你的快照就算在另外一个 2.6 集群中启动了也不能用。
在 3.3 中启动就被删除是因为,meta 内有个关键元信息记录了 part → host list,而这个 host list 还是原来集群的 host list。所以在新的集群中启动起来后,每个 storage 拉取元信息的时候,会发现自己 host 没有 space,就会把本地的 space 都删掉。

好像是用不了,
一直报E_RPC_FAILURE错误

但是基本的show 是可以的

这是因为 meta 的部分信息还能用

那我还有什么办法,来进行版本升级后的数据迁移啊?

可以停机原地升级吗?

我本地试验了一个方法,目前来说是有效的

把2.6的data复制到3.3的data

docker启动3.3的meta,meta没问题后,再用docker启动剩下的服务,发现数据都迁移好了,也能正常使用。

1 个赞