一文上手图数据备份恢复工具 NebulaGraph BR

简介: 对数据库而言,容灾备份是不可或缺的部分。本文将以 BR 社区版为例,简单介绍 BR 的一些实现细节并通过上手练习来讲述如何使用 BR 进行 NebulaGraph 数据的备份恢复。

作者:NebulaGraph 工程师 Kenshin

NebulaGraph BR 开源已经有一段时间了,为了给社区用户提供一个更稳、更快、更易用的备份恢复工具,去年对其进行了比较大的重构。NebulaGraph BR(以下简称 BR)分为社区版和企业版两个版本,企业版在社区版功能的基础上,额外提供了增量备份的能力。而本文将以 BR 社区版为例,简单介绍 BR 的一些实现细节并通过上手练习来讲述如何使用 BR 进行 NebulaGraph 数据的备份恢复。

什么是 BR

BR 即 Backup & Restore 的简称,是一款对 NebulaGraph 集群数据(包括元信息和数据信息)备份到远端,并利用备份数据对集群进行恢复的工具。仓库地址在此:https://github.com/vesoft-inc/nebula-br

什么是 NebulaGraph Agent

NebulaGraph Agent 是一个只关心本机的无状态的 RPC 服务,与 metad 通信,提供备份文件上传和下载、服务起停等接口供 BR 调用。在开始备份恢复前,需要确保集群的每个节点上部署了一个 agent,可以通过 SHOW HOSTS AGENT 查看 agent 的状态。仓库地址在此:https://github.com/vesoft-inc/nebula-agent

整体架构如下图所示:

由于 NebulaGraph Agent 分布在集群的各个节点上,在备份恢复时,BR 带来的 CPU 和网络 IO 开销会分散到各台机器上,使其可以轻松应对大规模集群的备份恢复场景。

上手 BR

为了能让大家更快的熟悉 BR 工具,让我们从零开始,做一个简单的实操练习,来体验目前 nebula-br 支持的所有功能。

环境准备

首先,我们需要创建一个 NebulaGraph 集群,目前 BR 工具不支持在容器场景执行备份恢复,可以通过下载安装包的方式在虚拟机上安装,参考文档:https://docs.nebula-graph.com.cn/3.3.0/2.quick-start/3.quick-start-on-premise/2.install-nebula-graph/

在集群创建完成后,可以通过 nebula-console(NebulaGraph 的命令行工具)来连接它。

执行下面的命令,为集群导入一个 basketballplayer 的数据集:

(root@nebula) [(none)]> :play basketballplayer
Start loading dataset basketballplayer...
 
Load dataset succeeded!

在成功导入数据后,执行下面的命令来查看 basketballplayer 的点边统计

(root@nebula) [basketballplayer]> submit job stats
+------------+
| New Job Id |
+------------+
| 2          |
+------------+
...
 
(root@nebula) [basketballplayer]> show stats
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 51    |
| "Tag"   | "team"     | 30    |
| "Edge"  | "follow"   | 81    |
| "Edge"  | "serve"    | 152   |
| "Space" | "vertices" | 81    |
| "Space" | "edges"    | 233   |
+---------+------------+-------+ 
...

接着,我们下载 BR 工具的二进制文件:

wget https://github.com/vesoft-inc/nebula-br/releases/download/v3.3.0/br-3.3.0-linux-amd64

部署 NebulaGraph Agent 服务

在准备好集群环境后,需要在每台机器上安装并启动 NebulaGraph Agent服务

1. 下载 NebulaGrpah Agent 二进制文件

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

2. 启动 nebula-agent

nohup ./agent-0.2.0-linux-amd64 --agent="<agent_node_ip>:8888" --meta="<metad_node_ip>:9559" > nebula_agent.log 2>&1 &

该命令会启动一个监听 8888 端口的 nebula-agent 服务。--agent 的 port 可以自定义,--meta 的 ip、port 需要与集群 meta 保持一致。

可以在 nebula-console 中执行下面的命令查看 agent 的状态:

(root@nebula) [basketballplayer]> SHOW HOSTS AGENT
+-----------------+------+----------+---------+--------------+---------+
| Host            | Port | Status   | Role    | Git Info Sha | Version |
+-----------------+------+----------+---------+--------------+---------+
| "192.168.8.144" | 8888 | "ONLINE" | "AGENT" | "96646b8"    |         |
+-----------------+------+----------+---------+--------------+---------+
...

当集群中所有 agent 都 online 后,我们可以执行备份恢复命令:

使用 BR 备份数据

BR 目前支持备份 NebulaGraph 集群的数据到本地或者 S3 上。为了方便练习,我们采用本地备份的方式,在生产环境,我们推荐用户将数据备份到 S3 上。备份命令如下:

./br-3.3.0-linux-amd64 backup full --meta "192.168.8.144:9559" --storage "local:///home/nebula/backup"

该命令会对 Meta 服务的地址为 192.168.8.144:9559 的 NebulaGraph 集群进行全量备份,并将备份文件保存到本地的 /home/nebula/backup 目录下。

查看备份信息

备份完成后,我们可以通过下面的命令来查看备份信息:

./br-3.3.0-linux-amd64 show  --storage "local:///home/vesoft/backup"

+----------------------------+---------------------+------------------+-------------+------------+
|            NAME            |     CREATE TIME     | SPACES           | FULL BACKUP | ALL SPACES |
+----------------------------+---------------------+------------------+-------------+------------+
| BACKUP_2023_01_18_09_42_10 | 2023-01-18 17:42:10 | basketballplayer | true        | true       |
+----------------------------+---------------------+------------------+-------------+------------+ 

使用 BR 恢复数据

当集群数据出现问题时,我们可以使用 BR 基于之前备份的数据进行恢复。为了模拟数据丢失场景,可以执行下面的命令将 basketballplayer space 的数据清除。

(root@nebula) [basketballplayer]> DROP SPACE basketballplayer;
Execution succeeded (time spent 2253/3002 us)
...

将 space 删除后,执行下面命令进行数据恢复。

./br-3.3.0-linux-amd64 restore full --meta "192.168.8.144:9559" --storage "local:///home/vesoft/backup" --name BACKUP_2023_01_18_09_42_10

该命令会让 BR 从 /home/vesoft/backup/BACKUP_2023_01_18_09_42_10 读取备份数据,对 Meta 服务地址为 192.168.8.144:9559 的 NebulaGraph 集群进行恢复。

恢复完成后,我们可以通过 nebula-console 执行以下命令,查看恢复后的集群数据。理论上,此时的数据应该与备份之前的数据保持一致。

(root@nebula) [(none)]> use basketballplayer Execution succeeded (time spent 1130/1823 us)
...
 
(root@nebula) [basketballplayer]> submit job stats
+------------+
| New Job Id |
+------------+
| 3          |
+------------+
...
 
(root@nebula) [basketballplayer]> show stats
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 51    |
| "Tag"   | "team"     | 30    |
| "Edge"  | "follow"   | 81    |
| "Edge"  | "serve"    | 152   |
| "Space" | "vertices" | 81    |
| "Space" | "edges"    | 233   |
+---------+------------+-------+ 
...

清理备份数据

在恢复完成后,我们可以执行下面的命令清理本次的备份数据。

./br-3.3.0-linux-amd64 cleanup  --meta "192.168.8.144:9559" --storage "local:///home/vesoft/backup" --name BACKUP_2023_01_18_09_42_10

以上为本次 NebulaGraph 备份工具 nebula-br 的介绍。


谢谢你读完本文 (///▽///)

要来近距离体验一把 nebula-br 特性么?NebulaGraph 阿里云计算巢现 30 天免费使用中,点击链接来用用图数据库 NebulaGraph 和图数据备份 BR 吧~

想看 nebula-br 源码的小伙伴可以前往 GitHub 阅读、使用、(^з^)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呢~

目录
相关文章
|
8月前
|
JavaScript 前端开发 API
第二章 搭建TS环境
第二章 搭建TS环境
225 0
|
存储 Kubernetes NoSQL
使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph
本文详细记录了如何用 REK 安装好 K8s 环境之后,再在此基础上安装图数据库 NebulaGraph。
468 0
|
6月前
|
关系型数据库 MySQL 数据库
navicat 查看,设计并导出数据库 ER图
navicat 查看,设计并导出数据库 ER图
1030 5
|
7月前
|
Python
Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot
该文介绍了几种基于Mandelbrot集的衍生形态,包括Mandelbulb、MandelBox、Burning Ship和NebulaBrot。Mandelbulb是3D扩展,使用球坐标;MandelBox利用盒映射创造复杂形状;Burning Ship以复数模和实部迭代;NebulaBrot则结合多种分形特征。文中提供了简单的Python代码示例来生成这些图形,并提到了相关学习资源。
|
NoSQL 测试技术 数据库
nebula-br local-store 模式,快速搭建主备集群实践
单集群如何快速切换多集群模式?目前,NebulaGraph 集群复制有 3 种方式,如何在当中选中一种合适你的方式来搭建集群呢?
146 2
|
存储 NoSQL 算法
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
NebulaGraph 技术社区用户的实践优化心得集大成者,从数据建模开始,解决数据膨胀问题,再到软硬皆施搞定数据导入的速率,到最后的查询语句优化。一站式搞定数据库的性能问题。
712 0
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
|
弹性计算 监控 NoSQL
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
201 0
|
存储 数据可视化 算法
揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的
在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGraph Explorer 中集成图计算的基本实现原理。
502 0
|
SQL NoSQL 关系型数据库
有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据
数据处理是一大难题,如果你要从一个数据库迁移到另外一个数据库,这个问题一定会出现,只不过是成本高低问题。而本文则讲述了一个神奇的 ETL 工具它是如何处理不同结构的数据。
760 0
有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据
|
算法 测试技术 iOS开发
【第三篇】XiaoZaiMultiAutoAiDevices之运行流程
本框架大部分代码都是有详细的注释,配合此教程系列,把流程梳理通应该是没有什么问题。
120 0
【第三篇】XiaoZaiMultiAutoAiDevices之运行流程

热门文章

最新文章

下一篇
开通oss服务