From c6be4399d5f97c7cd589cd310747ad854ad72a9c Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Tue, 23 Feb 2021 17:41:02 +0800 Subject: [PATCH 1/4] added BR --- .../2.backup-restore/1.what-is-br.md | 86 +++++++++++++ .../2.backup-restore/2.complie-br.md | 32 +++++ .../2.backup-restore/3.br-backup-data.md | 116 ++++++++++++++++++ .../2.backup-restore/4.br-restore-data.md | 114 +++++++++++++++++ 4 files changed, 348 insertions(+) create mode 100644 docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md create mode 100644 docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md create mode 100644 docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md create mode 100644 docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md new file mode 100644 index 00000000000..9c2f0e61ed3 --- /dev/null +++ b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md @@ -0,0 +1,86 @@ +# 什么是Backup&Restore + +Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮助您备份Nebula Graph的图空间数据,或者通过备份文件恢复数据。 + +## 功能 + +- 支持备份一个或多个图空间的数据。 +- 支持基于本地磁盘(SSD或HDD)、阿里云对象存储(Alibaba Cloud OSS)或亚马逊对象存储(Amazon S3)中的备份文件恢复数据。 + +## 限制 + +- 仅Nebula Graph v2.0.0-RC或更新版本**支持**本功能。 +- 通过Docker Compose部署的Nebula Graph服务**不支持**本功能。 +- 数据备份仅支持全量备份,不支持增量备份。 +- 备份过程中,指定图空间中的DDL和DML语句将会阻塞,我们建议您在业务低峰期进行操作,例如凌晨2点至5点。 +- 数据恢复仅支持在相同拓扑的集群上进行,即原集群和目标集群的主机数量必须相同。 +- 数据恢复需要离线进行。 + +## 工作原理 + +### 备份 + +为了备份数据,BR会发送备份请求给leader的metad进程,触发备份。详细说明如下: + +1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 + >**注意**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 +2. BR发起请求创建备份文件。 +3. leader的metad进程被锁定。 + >**注意**:从此时起至第9步结束,您无法在指定图空间内执行任何nGQL的DDL语句。 +4. leader的metad进程阻塞指定图空间的写请求。 + >**注意**:从此时起至第7步结束,您无法在指定图空间内执行任何nGQL的DML语句,但是可以执行DQL语句。 +5. leader的metad进程发送请求至storaged进程,请求快照文件名称。 +6. leader的metad进程扫描本地RocksDB文件,输出为SST(Static Sorted Table)格式文件。 +7. leader的metad进程解除阻塞指定图空间的写请求。 + >**注意**:从此时起,您可以在指定图空间内执行nGQL的DML语句。 +8. leader的metad进程回应BR,包含的Meta数据和快照信息如下: + - thrift格式信息 + - 图空间分区信息 + - 每个分区的Raft日志提交ID + - 快照信息(每个快照存储进程的目录) + - Meta服务器SST格式文件名称 + - 备份文件名称 +9. leader的metad进程解除锁定。 + >**注意**:从此时起,您可以在指定图空间内执行任何nGQL的DDL语句。 +10. BR通过SSH登录至leader所在的Meta服务器和所有Storage服务器,然后备份文件。 +11. 如果使用的是Alibaba Cloud OSS或Amazon S3,BR会调用命令将备份文件上传至云存储中。 + >**注意**:本步骤会大量读取磁盘,建议使用万兆网络保证速率。如果上传过程中出现网络错误,备份会失败,必须重新执行备份操作。目前备份过程不支持断点续传。 +12. BR发起请求清理Storage服务器的快照,备份完成。 + +下图展示了备份的具体流程。 + +![The figure shows the backup procedure](../../figs/ng-ug-001.png "Implementation of backup") + +备份文件生成时会自动命名,命名格式为`BACKUP_YY_MM_DD_HH_mm_SS`: + +- `BACKUP`表示该文件是备份文件。 +- `YY_MM_DD_HH_mm_SS`表示该文件的生成时间。 + +### 恢复 + +>**警告**:恢复过程中,目标集群上已有的数据会被删除,然后替换为备份文件中的数据。建议您提前备份目标集群上的数据。 + +恢复过程的详细说明如下: + +1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 + >**注意**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 +2. BR从外部存储或云存储中下载Meta信息(非完整数据)。 +3. BR验证集群的拓扑结构,确保原集群和目标集群的主机数量一致。 +4. BR远程停止Meta服务和Storage服务。 +5. BR通过SSH登录至leader所在的Meta服务器和所有Storage服务器,然后删除现有的数据文件。 +6. 现有数据文件删除后,Meta服务器和所有Storage服务器从外部存储或云存储中下载备份文件。 +7. 备份文件下载完成后,BR启动Meta服务。 +8. BR调用`br restore`命令更改指定metad进程的分区信息。 +9. BR启动Storage服务,恢复过程完成。 + +下图展示了恢复的具体流程。 + +![The figure shows the restoration process](../../figs/ng-ug-002.png "Implementation of restoration") + +## 如何使用BR + +您可以按照如下步骤使用BR: + +1. [编译BR](2.compile-br.md) +2. [使用BR备份数据](3.br-backup-data.md) +3. [使用BR恢复数据](4.br-restore-data.md) \ No newline at end of file diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md new file mode 100644 index 00000000000..df9bbb4b990 --- /dev/null +++ b/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md @@ -0,0 +1,32 @@ +# 编译BR + +目前,BR还没有作为一个包提供。您需要先编译BR。 + +[//]: >**注意**:如果您需要将备份文件存储在本地,我们建议您在想要执行恢复操作的元服务器上编译BR。更多信息,请参见[从备份文件恢复数据](4.br-restore-data.md)。 + +## 准备工作 + +- 安装[Go](https://github.com/golang/go "Click to go to GitHub") 1.14或更新版本。 +- 安装make。 + +## 操作步骤 + +1. 克隆`nebula-storage`库至您的机器。 + + ```bash + git clone https://github.com/vesoft-inc/nebula-storage.git + ``` + +2. 进入`br`目录。 + + ```bash + cd nebula-storage/util/br + ``` + +3. 编译BR。 + + ```bash + make build && make test + ``` + +如果BR编译成功,您可以在`nebula-storage/util/br/bin/`目录内找到二进制文件`br`。 diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md new file mode 100644 index 00000000000..3bfc1a843ef --- /dev/null +++ b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md @@ -0,0 +1,116 @@ +# 使用BR备份数据 + +BR编译成功后,您可以备份指定图空间的数据,本文介绍如何使用BR备份数据。 + +## 准备工作 + +- BR编译完成。如何编译BR,请参见[编译BR](2.compile-br.md)。 + +- 确认Nebula Graph服务正在运行中。 + +- 确认需要备份的图空间名称。本文示例为`nba`。 + +- 确认Nebula Graph的绝对安装路径。本文示例为`/usr/local/nebula/`。 + +- 确认Meta服务器和Storage服务器的IP和端口。 + + - 在Nebula Graph的安装路径内查看`nebula-metad.conf`文件(例如`/usr/local/nebula/etc/nebula-metad.conf`),确认Meta服务器的IP和端口。本文示例为`192.168.8.161:9559`。 + + - 在Nebula Graph的安装路径内查看和`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服务器。详情请参见[SSH tunnels with keys](http://alexander.holbreich.org/ssh-tunnel-without-password/)。本文示例账号名称为`nebula`。 + +- 如果您使用Alibaba Cloud OSS或Amazon S3保存备份文件,请确保Meta服务器、Storage服务器和BR机器都已安装相应的客户端。详情请参见[Alibaba Cloud ossutil文档](https://www.alibabacloud.com/help/zh/doc-detail/120075.htm#concept-303829)和[Amazon S3 CLI文档](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3.html)。 + >**注意**:请创建软链接方便使用ossutil命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 + +- 如果您在本地保存备份文件,需要在Meta服务器、Storage服务器和BR机器上创建绝对路径相同的目录,并记录绝对路径,同时需要保证账号对该目录有写权限。本文示例为`/home/user/backup/`。 + >**注意**:在生产环境中,我们建议您将NFS (Network File System)存储设备挂载到Meta服务器、Storage服务器和BR机器上进行本地备份,或者使用Alibaba Cloud OSS、Amazon S3进行远程备份。否则当您需要通过本地文件恢复数据时,必须手动将这些备份文件移动到指定目录,会导致数据冗余和某些问题。更多信息,请参见[使用BR恢复数据](4.br-restore-data.md)。 + +## 操作步骤 + +1. 在`nebula-storage/util/br/config`目录内创建配置文件`backup.yaml`。您可以参考如下配置,目录内也有示例文件`backup_example.yaml`。 + + ```yaml + meta_nodes: + - # 配置一个Meta服务器的IP和端口 + addrs: "192.168.8.161:9559" + # 配置Nebula Graph的绝对安装路径 + 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" + # 配置Nebula Graph的绝对安装路径 + 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/" + # 如果使用Alibaba Cloud OSS存储备份文件,请设置: + # backend: "oss://nebulabackup" + # 如果使用Amazon S3存储备份文件,请设置: + # backend: "s3://nebulabackup" + + # 设置要备份的图空间 + # 如果需要备份多个图空间,请设置: + # space_names: ["space_name1", "space_name2", ..., "space_name"] + space_name: ["nba"] + ``` + +2. 切换到`nebula-storage/util/br/bin/`目录。 + + ```bash + cd nebula-storage/util/br/bin/ + ``` + +3. 执行如下命令备份数据。 + + ```bash + ./br backup full --config "/home/vesoft/nebula-storage/util/br/config/backup.yaml" + ``` + + - `backup full`: 表示备份数据。 + - `--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"`: 填写配置文件的绝对路径,通过配置文件进行备份. + +4. (可选)默认情况下,备份完成后,所有快照都会被删除。如果删除过程中出错,您可以执行如下命令手动删除快照。 + + ```bash + ./br cleanup --backup_name [backup file name] --meta 192.168.8.161:9559 + ``` + + - `cleanup`: 表示删除Meta服务器和Storage服务器上的所有临时文件,包括快照。 + - `--backup_name BACKUP_YY_MM_DD_HH_mm_SS`: 指定要删除的备份文件名称。 + - `--meta `: 指定Meta服务器的IP和端口。 + +## 下一步 + +备份文件生成后,您可以使用BR将备份文件的数据恢复到Nebula Graph中。具体操作,请参见[使用BR恢复数据](4.br-restore-data.md)。 + \ No newline at end of file diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md new file mode 100644 index 00000000000..654b2d1e7af --- /dev/null +++ b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md @@ -0,0 +1,114 @@ +# 使用BR恢复数据 + +如果您使用BR备份了Nebula Graph的数据,可以通过备份文件进行数据恢复。本文介绍如何通过备份文件恢复数据。 + +>**警告**:恢复过程中,目标集群上已有的数据会被删除,然后替换为备份文件中的数据。建议您提前备份目标集群上的数据。 + +>**注意**:数据恢复需要离线进行。 + +## 准备工作 + +- BR编译完成。如何编译BR,请参见[编译BR](2.compile-br.md)。 + +- 确认没有应用程序连接到待恢复数据的Nebula Graph集群。 + +- 确认集群的拓扑结构一致,即原集群和目标集群的主机数量一致。 + +- 确认进行数据恢复的备份文件名称。本文示例为`BACKUP_2020_12_21_01_17_53`。 + +- 确认目标集群中Meta服务器和Storage服务器的IP和端口。 + + - 在Nebula Graph的安装路径内查看`nebula-metad.conf`文件(例如`/usr/local/nebula/etc/nebula-metad.conf`),确认Meta服务器的IP和端口。本文示例为`192.168.8.161:9559`。 + + - 在Nebula Graph的安装路径内查看和`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服务器。详情请参见[SSH tunnels with keys](http://alexander.holbreich.org/ssh-tunnel-without-password/)。本文示例账号名称为`nebula`。 + >**注意**:该账号必须有Nebula Graph安装目录的写权限。 + +- 如果您使用Alibaba Cloud OSS或Amazon S3保存备份文件,请确保Meta服务器、Storage服务器和BR机器都已安装相应的客户端。详情请参见[Alibaba Cloud ossutil文档](https://www.alibabacloud.com/help/zh/doc-detail/120075.htm#concept-303829)和[Amazon S3 CLI文档](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3.html)。 + >**注意**:请创建软链接方便使用ossutil命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 + +- 如果您的备份文件保存在本地,需要在Meta服务器、Storage服务器和BR机器上创建绝对路径相同的目录,然后手动将备份文件移动到该目录下。本文示例为`/home/user/backup/`。 + +## 操作步骤 + +1. 在`nebula-storage/util/br/config`目录内修改配置文件`backup.yaml`。您可以参考如下配置,目录内也有示例文件`restore_example.yaml`。 + + ```yaml + meta_nodes: + - # 配置一个Meta服务器的IP和端口 + addrs: "192.168.8.161:9559" + # 配置Nebula Graph的绝对安装路径 + 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" + # 配置Nebula Graph的绝对安装路径 + 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/" + # 如果使用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/`目录。 + + ```bash + cd nebula-storage/util/br/bin/ + ``` + +3. 执行如下命令恢复数据。 + + ```bash + ./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发生变更,会导致数据恢复出错,为保证数据正确性,请重新执行本步骤命令。 + + 恢复成功后,您可以在Nebula Graph安装目录下的`data/storage`目录内找到数据文件,例如`/usr/local/nebula/data/storage/`。 + +4. 等待一段时间,直至Meta数据和Schema同步,您可以登录数据库验证数据。例如运行[`SHOW STATS`](../../3.ngql-guide/7.general-query-statements/6.show/14.show-stats/) 验证图空间中点和边的数量是否正确。 + + >**注意**:恢复完成后,您需要注意以下两点: + > + >- 如果执行`USE `返回错误,建议您重启Nebula Graph服务。 + >- 如果查询数据时报错`Storage Error: part: 2, error code: -3.`,请检查Storage服务的状态,或者重启Storage服务后再次尝试查询。 From e3daa3296c58692d927c46e443f078c4c8151e0c Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Tue, 23 Feb 2021 18:14:20 +0800 Subject: [PATCH 2/4] added BR --- docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md index 9c2f0e61ed3..f7decfbdee7 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md @@ -49,7 +49,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 下图展示了备份的具体流程。 -![The figure shows the backup procedure](../../figs/ng-ug-001.png "Implementation of backup") +![The figure shows the backup procedure](https://docs.nebula-graph.io/2.0/figs/ng-ug-001.png "Implementation of backup") 备份文件生成时会自动命名,命名格式为`BACKUP_YY_MM_DD_HH_mm_SS`: @@ -75,7 +75,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 下图展示了恢复的具体流程。 -![The figure shows the restoration process](../../figs/ng-ug-002.png "Implementation of restoration") +![The figure shows the restoration process](https://docs.nebula-graph.io/2.0/figs/ng-ug-002.png "Implementation of restoration") ## 如何使用BR From ebcf59a0650d27bebeab2bd6c0d3eaa8f694675f Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Wed, 24 Feb 2021 09:51:04 +0800 Subject: [PATCH 3/4] added BR --- .../2.backup-restore/1.what-is-br.md | 16 ++++++++-------- .../2.backup-restore/3.br-backup-data.md | 2 +- .../2.backup-restore/4.br-restore-data.md | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md index f7decfbdee7..7803d16a9a1 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md @@ -9,12 +9,12 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 ## 限制 -- 仅Nebula Graph v2.0.0-RC或更新版本**支持**本功能。 -- 通过Docker Compose部署的Nebula Graph服务**不支持**本功能。 +- Nebula Graph版本需要为v2.0.0-RC或更新版本。 - 数据备份仅支持全量备份,不支持增量备份。 -- 备份过程中,指定图空间中的DDL和DML语句将会阻塞,我们建议您在业务低峰期进行操作,例如凌晨2点至5点。 +- 数据备份过程中,指定图空间中的DDL和DML语句将会阻塞,我们建议您在业务低峰期进行操作,例如凌晨2点至5点。 - 数据恢复仅支持在相同拓扑的集群上进行,即原集群和目标集群的主机数量必须相同。 -- 数据恢复需要离线进行。 +- 数据恢复需要删除数据并重启,建议离线进行。 +- 备份或恢复部署在Docker中的数据时,需要做好网络配置,例如IP和端口的映射。 ## 工作原理 @@ -23,7 +23,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 为了备份数据,BR会发送备份请求给leader的metad进程,触发备份。详细说明如下: 1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 - >**注意**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 + >**说明**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 2. BR发起请求创建备份文件。 3. leader的metad进程被锁定。 >**注意**:从此时起至第9步结束,您无法在指定图空间内执行任何nGQL的DDL语句。 @@ -32,7 +32,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 5. leader的metad进程发送请求至storaged进程,请求快照文件名称。 6. leader的metad进程扫描本地RocksDB文件,输出为SST(Static Sorted Table)格式文件。 7. leader的metad进程解除阻塞指定图空间的写请求。 - >**注意**:从此时起,您可以在指定图空间内执行nGQL的DML语句。 + >**说明**:从此时起,您可以在指定图空间内执行nGQL的DML语句。 8. leader的metad进程回应BR,包含的Meta数据和快照信息如下: - thrift格式信息 - 图空间分区信息 @@ -41,7 +41,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 - Meta服务器SST格式文件名称 - 备份文件名称 9. leader的metad进程解除锁定。 - >**注意**:从此时起,您可以在指定图空间内执行任何nGQL的DDL语句。 + >**说明**:从此时起,您可以在指定图空间内执行任何nGQL的DDL语句。 10. BR通过SSH登录至leader所在的Meta服务器和所有Storage服务器,然后备份文件。 11. 如果使用的是Alibaba Cloud OSS或Amazon S3,BR会调用命令将备份文件上传至云存储中。 >**注意**:本步骤会大量读取磁盘,建议使用万兆网络保证速率。如果上传过程中出现网络错误,备份会失败,必须重新执行备份操作。目前备份过程不支持断点续传。 @@ -63,7 +63,7 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 恢复过程的详细说明如下: 1. 验证BR访问Meta服务器和Storage服务器的SSH登录信息。 - >**注意**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 + >**说明**:如果必须使用云存储,例如Alibaba Cloud OSS或Amazon S3,还需要验证它们的客户端安装和配置。 2. BR从外部存储或云存储中下载Meta信息(非完整数据)。 3. BR验证集群的拓扑结构,确保原集群和目标集群的主机数量一致。 4. BR远程停止Meta服务和Storage服务。 diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md index 3bfc1a843ef..710bda67537 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md @@ -98,7 +98,7 @@ BR编译成功后,您可以备份指定图空间的数据,本文介绍如何 ``` - `backup full`: 表示备份数据。 - - `--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"`: 填写配置文件的绝对路径,通过配置文件进行备份. + - `--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"`: 填写配置文件的绝对路径,通过配置文件进行备份。 4. (可选)默认情况下,备份完成后,所有快照都会被删除。如果删除过程中出错,您可以执行如下命令手动删除快照。 diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md index 654b2d1e7af..13b63b1b1ad 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md @@ -14,7 +14,7 @@ - 确认集群的拓扑结构一致,即原集群和目标集群的主机数量一致。 -- 确认进行数据恢复的备份文件名称。本文示例为`BACKUP_2020_12_21_01_17_53`。 +- 确认进行数据恢复的备份文件夹名称。本文示例为`BACKUP_2020_12_21_01_17_53`。 - 确认目标集群中Meta服务器和Storage服务器的IP和端口。 @@ -83,7 +83,7 @@ # 如果使用Amazon S3存储备份文件,请设置: # backend: "s3://nebulabackup" - # 设置要恢复的图空间 + # 设置要恢复的备份文件夹 backup_name: "BACKUP_2020_12_21_01_17_53" ``` @@ -100,7 +100,7 @@ ``` - `restore full`: 表示恢复数据。 - - `--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"`: 填写配置文件的绝对路径,通过配置文件进行恢复. + - `--config "/home/vesoft/nebula-storage/util/br/config/backup.yaml"`: 填写配置文件的绝对路径,通过配置文件进行恢复。 >**注意**:如果恢复过程中leader发生变更,会导致数据恢复出错,为保证数据正确性,请重新执行本步骤命令。 From 866abe7d4871cf7e539d9afc4ae00874fdb9c4a9 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Wed, 24 Feb 2021 17:21:26 +0800 Subject: [PATCH 4/4] added BR --- docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md | 4 ++-- docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md | 2 -- .../7.data-secrurity/2.backup-restore/3.br-backup-data.md | 2 ++ .../7.data-secrurity/2.backup-restore/4.br-restore-data.md | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md index 7803d16a9a1..596b50db9a2 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/1.what-is-br.md @@ -5,12 +5,12 @@ Backup&Restore(简称BR)是一款命令行界面(CLI)工具,可以帮 ## 功能 - 支持备份一个或多个图空间的数据。 -- 支持基于本地磁盘(SSD或HDD)、阿里云对象存储(Alibaba Cloud OSS)或亚马逊对象存储(Amazon S3)中的备份文件恢复数据。 +- 支持基于本地磁盘(SSD或HDD)、Hadoop分布式文件系统(HDFS)、阿里云对象存储(Alibaba Cloud OSS)或亚马逊对象存储(Amazon S3)中的备份文件恢复数据。 ## 限制 - Nebula Graph版本需要为v2.0.0-RC或更新版本。 -- 数据备份仅支持全量备份,不支持增量备份。 +- 数据备份暂时仅支持全量备份,不支持增量备份。 - 数据备份过程中,指定图空间中的DDL和DML语句将会阻塞,我们建议您在业务低峰期进行操作,例如凌晨2点至5点。 - 数据恢复仅支持在相同拓扑的集群上进行,即原集群和目标集群的主机数量必须相同。 - 数据恢复需要删除数据并重启,建议离线进行。 diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md b/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md index df9bbb4b990..29adf279458 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/2.complie-br.md @@ -2,8 +2,6 @@ 目前,BR还没有作为一个包提供。您需要先编译BR。 -[//]: >**注意**:如果您需要将备份文件存储在本地,我们建议您在想要执行恢复操作的元服务器上编译BR。更多信息,请参见[从备份文件恢复数据](4.br-restore-data.md)。 - ## 准备工作 - 安装[Go](https://github.com/golang/go "Click to go to GitHub") 1.14或更新版本。 diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md index 710bda67537..bab3fa2f30d 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/3.br-backup-data.md @@ -74,6 +74,8 @@ BR编译成功后,您可以备份指定图空间的数据,本文介绍如何 # 设置备份文件的存储路径 # 如果在本地存储备份文件,请设置: backend: "local:///home/user/backup/" + # 如果使用HDFS存储备份文件,请设置: + # hdfs://namenode:port/nebulabackup # 如果使用Alibaba Cloud OSS存储备份文件,请设置: # backend: "oss://nebulabackup" # 如果使用Amazon S3存储备份文件,请设置: diff --git a/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md index 13b63b1b1ad..104b18f657e 100644 --- a/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md +++ b/docs-2.0/7.data-secrurity/2.backup-restore/4.br-restore-data.md @@ -30,7 +30,7 @@ - 如果您使用Alibaba Cloud OSS或Amazon S3保存备份文件,请确保Meta服务器、Storage服务器和BR机器都已安装相应的客户端。详情请参见[Alibaba Cloud ossutil文档](https://www.alibabacloud.com/help/zh/doc-detail/120075.htm#concept-303829)和[Amazon S3 CLI文档](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3.html)。 >**注意**:请创建软链接方便使用ossutil命令。命令为`ln -s // /usr/local/bin/ossutil`,根据实际路径和系统替换内容。 -- 如果您的备份文件保存在本地,需要在Meta服务器、Storage服务器和BR机器上创建绝对路径相同的目录,然后手动将备份文件移动到该目录下。本文示例为`/home/user/backup/`。 +- 如果您的备份文件保存在本地磁盘,需要将BR机器上备份的Meta文件手动合并到Meta服务器和Storage服务器的备份目录内(和meta、storage目录平级)。本文示例为`/home/user/backup/`。 ## 操作步骤 @@ -78,6 +78,8 @@ # 设置备份文件的存储路径 # 如果是本地存储备份文件,请设置: backend: "local:///home/user/backup/" + # 如果使用HDFS存储备份文件,请设置: + # hdfs://namenode:port/nebulabackup # 如果使用Alibaba Cloud OSS存储备份文件,请设置: # backend: "oss://nebulabackup" # 如果使用Amazon S3存储备份文件,请设置: