使用BR恢复数据Graph
如果您使用BR备份了NebulaGraph的数据,可以通过备份文件进行数据恢复。本文介绍如何通过备份文件恢复数据。
警告:恢复过程中,目标集群上已有的数据会被删除,然后替换为备份文件中的数据。建议您提前备份目标集群上的数据。
注意:数据恢复需要离线进行。
准备工作Graph
- BR编译完成。如何编译BR,请参见Graph。
- 确认没有应用程序连接到待恢复数据的NebulaGraph集群。
- 确认集群的拓扑结构一致,即原集群和目标集群的主机数量一致。
- 确认进行数据恢复的备份文件夹名称。本文示例为
BACKUP_2020_12_21_01_17_53
。
-
确认目标集群中Meta服务器和Storage服务器的IP和端口。
- 在NebulaGraph的安装路径内查看
nebula-metad.conf
文件(例如/usr/local/nebula/etc/nebula-metad.conf
),确认Meta服务器的IP和端口。本文示例为192.168.8.161:9559
。
- 在NebulaGraph的安装路径内查看和
nebula-storaged.conf
文件(例如/usr/local/nebula/etc/nebula-storaged.conf
),确认Storage服务器的IP和端口。本文示例为192.168.8.161:9779
。
注意:确保配置文件中使用的是实际的IP地址,而不是
127.0.0.1
。 - 在NebulaGraph的安装路径内查看
- BR可以免密登录服务器,即您在BR机器上的账号可以通过SSH免密登录到Meta服务器和Storage服务器。详情请参见Graph。本文示例账号名称为
nebula
。注意:该账号必须有NebulaGraph安装目录的写权限。
- 如果您使用Alibaba Cloud OSS或Amazon S3保存备份文件,请确保Meta服务器、Storage服务器和BR机器都已安装相应的客户端。详情请参见Graph。
注意:请创建软链接方便使用ossutil命令。命令为
ln -s /<ossutil_tool_installation_path>/<ossutil64 or ossutil> /usr/local/bin/ossutil
,根据实际路径和系统替换内容。
- 如果您的备份文件保存在本地磁盘,需要将BR机器上备份的Meta文件手动合并到Meta服务器和Storage服务器的备份目录内(和meta、storage目录平级)。本文示例为
/home/user/backup/
。
操作步骤Graph
-
在
nebula-storage/util/br/config
目录内修改配置文件backup.yaml
。您可以参考如下配置,目录内也有示例文件restore_example.yaml
。meta_nodes: - # 配置一个Meta服务器的IP和端口 addrs: "192.168.8.161:9559" # 配置NebulaGraph的绝对安装路径 root: "/usr/local/nebula/" # 配置metad进程数据目录的绝对路径 data: "/usr/local/nebula/data/meta" # 配置可以免密登录服务器的账号名称,需要对备份存储目录有读写权限 user: "nebula" #- # 如果存在多个metad进程,请参考上述配置继续添加 # addrs: "192.168.8.161:9559" # root: "/usr/local/nebula/" # data: "/usr/local/nebula/data/meta" # user: "nebula" #- addrs: "192.168.8.161:9559" # root: "/usr/local/nebula/" # data: "/usr/local/nebula/data/meta" # user: "nebula" storage_nodes: - # 配置一个Storage服务器的IP和端口 addrs: "192.168.8.161:9779" # 配置NebulaGraph的绝对安装路径 root: "/usr/local/nebula/" # 配置storaged进程数据目录的绝对路径 data: "/usr/local/nebula/data/storage" # 配置可以免密登录服务器的账号名称,需要对备份存储目录有读写权限 user: "nebula" #- # 如果存在多个storaged进程,请参考上述配置继续添加 # addrs: "192.168.8.161:9779" # root: "/usr/local/nebula/" # data: "/usr/local/nebula/data/storage" # user: "nebula" #- addrs: "192.168.8.161:9779" # root: "/usr/local/nebula/" # data: "/usr/local/nebula/data/storage" # user: "nebula" # 设置备份文件的存储路径 # 如果是本地存储备份文件,请设置: backend: "local:///home/user/backup/" # 如果使用HDFS存储备份文件,请设置: # hdfs://namenode:port/nebulabackup # 如果使用Alibaba Cloud OSS存储备份文件,请设置: # backend: "oss://nebulabackup" # 如果使用Amazon S3存储备份文件,请设置: # backend: "s3://nebulabackup" # 设置要恢复的备份文件夹 backup_name: "BACKUP_2020_12_21_01_17_53"
-
切换到
nebula-storage/util/br/bin/
目录。cd nebula-storage/util/br/bin/
-
执行如下命令恢复数据。
./br restore full --config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"
restore full
: 表示恢复数据。--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"
: 填写配置文件的绝对路径,通过配置文件进行恢复。
注意:如果恢复过程中leader发生变更,会导致数据恢复出错,为保证数据正确性,请重新执行本步骤命令。
恢复成功后,您可以在NebulaGraph安装目录下的
data/storage
目录内找到数据文件,例如/usr/local/nebula/data/storage/
。 -
等待一段时间,直至Meta数据和Schema同步,您可以登录数据库验证数据。例如运行Graph 验证图空间中点和边的数量是否正确。
注意:恢复完成后,您需要注意以下两点:
- 如果执行
USE <space_name>
返回错误,建议您重启NebulaGraph服务。 - 如果查询数据时报错
Storage Error: part: 2, error code: -3.
,请检查Storage服务的状态,或者重启Storage服务后再次尝试查询。
- 如果执行
最后更新: 2021年4月21日