请问创建好快照之后,如何在一个新集群里恢复快照数据呢

是的,我在试这个功能的时候突然想到的,nebula checkpoint的机制是为了保证当前集群故障的情况下数据可以恢复到某一个时间点的情况,使用hard link确实是一个很优的选择,但是我们的需求,其实是线下构建数据推送到线上,这样的话应该是直接拷贝data目标比较合适

是的,我们准备再线下集群构建好图,这样是不会有写数据的,线上恢复这个图的话,也会先把集群流量摘除掉的

:+1:

试了一下直接拷贝data文件夹,从a机器拷贝到b机器,然后启动b机器的nebula后报错:
F0615 15:54:35.709440 23236 RocksEngine.cpp:95] Check failed: status.ok()
*** Check failure stack trace: ***
@ 0x11dc2cc google::LogMessage::Fail()
@ 0x11e0b52 google::LogMessage::SendToLog()
@ 0x11dbfca google::LogMessage::Flush()
@ 0x11dc7b8 google::LogMessageFatal::~LogMessageFatal()
@ 0x5e9db5 nebula::kvstore::RocksEngine::RocksEngine()
@ 0x5f1a79 nebula::kvstore::NebulaStore::newEngine()
@ 0x5f74e5 nebula::kvstore::NebulaStore::init()
@ 0x52845f nebula::storage::StorageServer::getStoreInstance()
@ 0x528bbd nebula::storage::StorageServer::start()
@ 0x4dd48d main
@ 0x7ff9f3a21d1f __libc_start_main
@ 0x5050f0 (unknown)
直接包kernel.coredump 问题了

看着像是meta server有问题, Heartbeat failed, status:RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused
F0615 15:53:54.269345 22998 RocksEngine.cpp:95] Check failed: status.ok() 但是我看端口状态meta是起来了的

好像是没起来,E0615 16:04:40.700304 23094 JobManager.cpp:83] [JobManager] load a invalid job from queue 0 启动JobManager失败

可以提供一下完整的操作步骤吗?

稍等一下,我卸载nebula又重新安装后,操作成功了,我先测试一下数据,稍后我和你沟通具体步骤,我大致知道哪个步骤有问题

好的,有问题随时沟通。

整个步骤,第一次:1:rpm安装nebula 2:拷贝其他机器的data文件夹到该机器 3:执行sudo /nebula.service start all。然后报错(有点遗忘是先启动服务后,然后关闭服务,再移动data文件再重新启动服务了)
第二次测试 1:rpm删除nebula 2:重新安装nebula 3:拷贝其他机器的data文件夹到该机器 4:修改storage配置增加local_config=true, 4:执行sudo /nebula.service start all。启动成功,数据正常

感觉像是storage配置问题,看代码也是 rocksdb::Status status = initRocksdbOptions(options);
CHECK(status.ok()); 这段代码在我第一次操作的时候报错,看着是初始化rocksdb出错

第二次测试的第2和第3步之间,源机器的集群服务是否关闭了?为了保证拷贝过程中没有写操作和wal的落盘,最好拷贝之前先关闭服务。

可以理解拷贝的是线下环境机器的数据,是没有读写的,我刚刚又试了一下,确实是storage配置的问题,不增加local_config=true启动会报我说的那个错,不知道是什么原因导致的,

:+1:
这个问题我们稍后也验证一下

好的,辛苦,有结论也麻烦在这里告知一下我

你好,我们使用这种方式(拷贝集群data文件下所有文件)去拷贝线下集群到线上集群,完成后启动线上集群,发现show hosts命令Status提示为offline,看文档是说storage没有连接上meta机器,请问一下是线下机器data会有机器信息么?导致无法启动

机器的数量大于等于replica数不是就可以了吗?为什么5个partition不能放在同一台机器上呢?如果我的replica_factor=3的话,是不是就以为着必须有4台及以上的节点才能做balance data remove $hostip:port操作?因为我昨天在3台机器,replica_factor=3的情况下balance data remove失败了。

以上的方案只是建议,可以根据实际情况制定迁移计划。另外可以参考raft的part之间同步的多半原则。

请问一下是不是multi raft group里的成员也有可能被分配到同一台storage server上?

没有足够的机器时会发生