Nebula Graph - 使用 BR 进行全量图谱数据备份和恢复

一、BR 工具

BRBackup&Restore)是 NebulaGraph 中一款命令行界面(CLI)工具,可以帮助备份图空间中的数据和恢复数据。使用 BR 工具备份和恢复 NebulaGraph 时,还需要安装 NebulaGraph Agent 服务。Agent 是集群中每台机器的一个守护进程,用于启停 NebulaGraph 服务和上传、下载备份文件。

支持:

  • 一键操作备份和恢复数据。
  • 支持基于以下备份文件恢复数据:
    • 本地磁盘(SSDHDD),建议仅在测试环境使用。
    • 兼容亚马逊对象存储(Amazon S3)云存储服务接口,例如:阿里云对象存储(Alibaba Cloud OSS)、MinIOCeph RGW 等。
  • 支持备份并恢复整个 NebulaGraph 集群。
  • (实验性功能)支持备份指定图空间数据。

限制:

  • NebulaGraph 版本需要为 v3.x
  • 数据备份仅支持全量备份,不支持增量备份。
  • Listener 暂时不支持备份,且全文索引也不支持备份。
  • 如果备份数据到本地磁盘,备份的文件将会放置在每个服务器的本地路径中。也可以在本地挂载 NFS 文件系统,以便将备份数据还原到不同的主机上。
  • 备份图空间只能恢复到原集群,不能跨集群恢复,并且集群的 Storage 主机数量及 IP 需一致。还原指定图空间时将清除集群中其余所有图空间。
  • 数据备份过程中,所有图空间中的 DDLDML 语句将会阻塞,我们建议在业务低峰期进行操作,例如凌晨 2 点至 5 点。
  • 数据恢复期间有一段时间服务会被停止。
  • 不支持在容器部署的 NebulaGraph 集群中使用 BR

官方介绍地址:https://docs.nebula-graph.com.cn/3.6.0/backup-and-restore/nebula-br/1.what-is-br/

下面通过实验一起学习下如何使用 BR 工具,在开始前需要部署好 NebulaGraph 服务,并保证服务运行良好:

在这里插入图片描述

在这里插入图片描述

如果不熟悉服务的搭建,可以参考下面这篇文章:

Nebula Graph - 集群模式部署

安装 BR

BRNebulaGraph 有版本兼容关系,参考如下表:

NebulaGraph版本BR 社区版本Agent 版本
3.5.x ~ 3.6.03.6.03.6.x ~ 3.7.0
3.3.0 ~ 3.4.x3.3.00.2.0 ~ 3.4.0
3.0.x ~ 3.2.x0.6.10.1.0 ~ 0.2.0

由于我安装的 NebulaGraph 集群是使用的 3.0.0 版本的,因此这里 br 使用 0.6.0 版本,Agent 使用 0.2.0 版本。

可以在任意一台机器中安装,下载 BR

wget https://github.com/vesoft-inc/nebula-br/releases/download/v0.6.0/br-0.6.0-linux-amd64

修改文件名称为br

mv br-0.6.0-linux-amd64 br

添加可执行权限:

chmod +x br

查看版本:

./br version

安装 Agent

NebulaGraph Agent 需要在每台机器中都要安装。

下载 Agent

wget https://github.com/vesoft-inc/nebula-agent/releases/download/v0.2.0/agent-0.2.0-linux-amd64

修改名称为agent

mv agent-0.2.0-linux-amd64 agent

添加可执行权限:

chmod +x agent

启动 Agent

nohup ./agent --agent="10.234.222.39:8888" --meta="10.234.222.40:9559" --ratelimit=1048576 > nebula_agent.log 2>&1 &

其中:

  • –agentAgent 所在机器的 IP 地址和访问端口。
  • –meta:集群中任一 Meta 服务所在机器的 IP 地址和访问端口。
  • –ratelimit:可选项,限制文件上传和下载的速度,防止带宽被占满导致其他服务不可用。单位:Bytes

查看 Agent 的运行状态:

SHOW HOSTS AGENT;

在这里插入图片描述

二、创建测试空间和数据

在实践备份和恢复前,创建个测试空间和测试数据:

创建空间:

create space test(partition_num=15, replica_factor=1, vid_type=fixed_string(30));

使用空间:

use test;

创建 TAG

create tag team(team_name string, persion_num int);
create tag game(name string);

创建关系:

create edge info(num int);

创建索引:

create tag index if not exists team_index on team (team_name (20));

添加测试数据:

insert vertex team(team_name, persion_num) values "team_1":("team_1", 42);
insert vertex team(team_name, persion_num) values "team_2":("team_2", 45);
insert vertex team(team_name, persion_num) values "team_3":("team_3", 60);
insert vertex game(name) values "game_1":("game_1");
insert vertex game(name) values "game_2":("game_2");
insert vertex game(name) values "game_3":("game_3");

insert edge info(num) values "team_1" -> "game_1":(95);
insert edge info(num) values "team_2" -> "game_2":(96);
insert edge info(num) values "team_2" -> "game_3":(97);
insert edge info(num) values "team_3" -> "game_3":(95);

测试查询数据:

match (v:team)-[e:info]->(v1:game) return v,e,v1 limit 10

在这里插入图片描述

三、数据备份

使用 br 备份数据:

备份到本地,注意:如果 meta 是部署的集群,最好通过 nfs 共享目录存储备份,或者备份到 Minio :

./br backup full --meta "10.234.222.40:9559" --spaces "test" --storage "local:///data/nebula/backup/"

或者备份到 Minio :

./br backup full --meta "10.234.222.40:9559" --s3.endpoint "http://10.234.222.36:9000" --storage="s3://bucket-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default

在这里插入图片描述

看到 Backup succeed. 即备份成功,其中 --spaces 指定了备份的空间,如果不指定则备份全部空间。

查看备份信息:

./br show --storage "local:///data/nebula/backup/"

或者查看 minio 上的备份:

./br show --s3.endpoint "http://10.234.222.36:9000" --storage="s3://bucket-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default

在这里插入图片描述

其中 NAME 信息在备份时需要使用。

四、恢复

将上面创建的 test 空间删除:

drop space test;

开始恢复:

./br restore full --meta "10.234.222.40:9559" --storage "local:///data/nebula/backup/" --name BACKUP_2024_03_15_15_31_00

或者从 minio 上恢复:

./br restore full --meta "172.25.222.87:9559" --s3.endpoint "http://10.234.222.36:9000" --storage="s3://bucket-test/backup/" --s3.access_key=minioadmin --s3.secret_key=minioadmin --s3.region=default --name BACKUP_2024_03_17_16_37_07

其中 --name 就是上面备份信息中的 NAME 字段。

在这里插入图片描述
看到 Restore succeed. 表示恢复成功,验证是否恢复:

match (v:team)-[e:info]->(v1:game) return v,e,v1 limit 10

在这里插入图片描述

恢复后,如果需要删除备份文件可以进行下面操作:

./br cleanup --meta "10.234.222.40:9559" --storage "local:///data/nebula/backup/" --name BACKUP_2024_03_15_15_31_00
  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小毕超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值