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

一文上手图数据备份恢复工具 NebulaGraph BR的更多相关文章

  1. 混合云存储组合拳:基于云存储网关与混合云备份的OSS数据备份方案

    前言 阿里云对象存储(OSS)用户众多.很多用户因为业务或者合规性需求,需要对OSS内的数据做备份,无论是线上备份,还是线下备份.用户可以选择使用OSS的开放API,按照业务需求,做数据的备份,也可以 ...

  2. HDFS各个进程存储在磁盘上的数据含义和注意事项

    本文地址:http://www.cnblogs.com/qiaoyihang/p/6293402.html (一)Namenode的目录结构 HDFS进行初次格式化之后将会在$dfs.namenode ...

  3. Rsync数据备份工具

    Rsync数据备份工具 1.Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步(windows和Linux之间 Mac和 Linux Linux和Linux),可实现全量备 ...

  4. innobackupex不停库的数据备份并恢复到别的服务器上【转】

    1.innobackupex原理: 备份原理 1).首先会开启一个后台检测进程,实时检测myql redo的变化,一旦发现redo中有新日志写入,立即将日志记入后台日志文件xtrabackup_log ...

  5. 什么是Github的元数据metadata以及如何备份github上的数据

    github被微软收购后,提供的工具种类是越来越多了,大大提高了我们程序员日常工作的效率. 今天我偶然发现,我们可以一键把自己整个github上的数据,不仅仅是代码,还包含每个仓库里创建的issue都 ...

  6. 用rsync备份一台linux服务器上的数据

    rsync是安装完linux后都会自带的,在机器上运行rsync命令看是否有安装即可 备份到远程服务器 这里介绍的rsync的用途是备份一台linux服务器上的数据到另外一台机器 环境 将需要备份机器 ...

  7. 将Oracle数据库数据每天备份恢复一次数据到另一台服务器上两份数据

    1.创建用户,授权,创建测试数据 创建用户 CREATE USER test identified by 123; 授权 grant dba to test; 创建测试数据 create table ...

  8. ocp11g培训内部教材_053课堂笔记(043)_数据备份

    053:数据库高级管理: 目录 第一部分:数据库备份与恢复... 4 第一章:备份恢复概述... 4 1.1 备份的意义: 4 1.2 数据库故障的类型:... 4 1.3 制定你的备份和恢复的计划. ...

  9. Linux常用备份恢复工具

    在 Linux 中可以通过各种各样的方法来执行备份.所涉及的技术从非常简单的脚本驱动的方法,到精心设计的商业化软件.备份可以保存到远程网络设备.磁带驱动器和其他可移动媒体上.备份可以是基于文件的或基于 ...

  10. Linux文件系统应用---系统数据备份和迁移(用户角度)

    1   前言 首先承诺:对于从Windows系统迁移过来的用户,困扰大家的  “Linux系统下是否可以把系统文件和用户文件分开到C盘和D盘中” 的问题也可以得到完满解决. 之前的文章对Linux的文 ...

随机推荐

  1. RN 动态渲染列表

    写在组件中 想要图片出来还应该给图片宽高哈!! alignItems: 'center', //水平居中 动态渲染列表 返回的是一个数组 网络图片的渲染方式 <Image source={{ur ...

  2. iphone(ios)不同设备的内存和游戏不闪退峰值

    ios内存限制 不同内存的苹果机型上(1G,2G,3G,4G-),游戏内存的峰值一般最高多少能保证不闪退? 一般来讲最保险的就是不超过机器总内存的50%,具体每个机型的内存限制在列出在下面. 原贴:& ...

  3. MySQL 存储过程与函数(精简笔记)

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RD ...

  4. MySQL8.0清空binlog

    环境 centos7.9 mysql  Ver 8.0.32 登录MySQL,查看binlog日志 #查看binlog日志开启状态,log_bin值为ON表示开启状态 mysql> show v ...

  5. centos7.9离线升级openssl和openssh9.2

    前言 最近有几台服务器漏扫出了关于openssh的漏洞,升级完后顺便记录一下. 环境 CentOS Linux release 7.9.2009 (Core) 开始升级 准备工作 下载安装包: zli ...

  6. Python Fire:自动生成命令行接口

    命令行程序是平时写一些小工具时最常用的方式. 为了让命令行程序更加灵活,我们常常会设置一些参数,根据参数让程序执行不同的功能.这样就不用频繁的修改代码来执行不同的功能. 随着命令行程序功能的丰富,也就 ...

  7. 【题解】U388218 数数

    数数 题目描述 给定 n 个不超过 1.5×10⁹ 的自然数.求这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果. 输入格式 输入的第 1 行是整数 n ,表示自然数的个数. 第 2 ...

  8. .NET中使用BootstrapBlazor组件库Table实操篇

    前言 Table表格在后台管理应用中使用的是相当频繁的,因此找一个功能齐全的前端框架对于我们而言是非常必要的,因为封装完善的前端框架能够大大提升我们的工作对接效率.今天我们主要来讲解一下在.NET中使 ...

  9. Oracle迁移到MySQL时数据类型转换问题

    最近在做"去O"(去除Oracle数据库)的相关工作,需要将Oracle表结构转换成MySQL的表结构.这里面最重要的一点就是字段数据类型的变化. 1.ORACLE常用的数据类型与 ...

  10. ABC 304

    T4 在一个平面上有一块面积无限的蛋糕,给出 \(n\) 颗草莓的所在位置和 \(a\,(b)\) 条平行与 \(x\,(y)\) 轴的切刀位置. 切刀会把蛋糕沿 \(x\,(y)\) 轴切开.因此一 ...