作者: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 用户一起交换图数据库技术和利用技能,留下「你的名片」一起游玩呢~