跳转至

使用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

  • 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

  1. 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"
    
  2. 切换到nebula-storage/util/br/bin/目录。

     cd nebula-storage/util/br/bin/
    
  3. 执行如下命令恢复数据。

    ./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/

  4. 等待一段时间,直至Meta数据和Schema同步,您可以登录数据库验证数据。例如运行Graph 验证图空间中点和边的数量是否正确。

    注意:恢复完成后,您需要注意以下两点:

    • 如果执行USE <space_name>返回错误,建议您重启NebulaGraph服务。
    • 如果查询数据时报错Storage Error: part: 2, error code: -3.,请检查Storage服务的状态,或者重启Storage服务后再次尝试查询。

最后更新: 2021年4月21日