From 3e373b946bd9f1e84eda5e49bdbdf82bdb036a45 Mon Sep 17 00:00:00 2001
From: "abby.huang" <78209557+abby-cyber@users.noreply.github.com>
Date: Tue, 14 Feb 2023 14:47:16 +0800
Subject: [PATCH] [wip]Operator br (#2585)
* add operator-br
* add operator-br
* more details
---
.../1.introduction-to-nebula-operator.md | 5 +-
.../10.backup-restore-using-operator.md | 216 ++++++++++++++++++
mkdocs.yml | 40 ++--
3 files changed, 242 insertions(+), 19 deletions(-)
create mode 100644 docs-2.0/nebula-operator/10.backup-restore-using-operator.md
diff --git a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md
index b562f0e7392..5dd31982180 100644
--- a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md
+++ b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md
@@ -22,6 +22,8 @@ NebulaGraph Operator 已具备的功能如下:
- **集群升级**:支持升级 {{operator.upgrade_from}} 版的 NebulaGraph 集群至 {{operator.upgrade_to}} 版。
+- **备份和恢复**:支持备份 NebulaGraph 集群的数据至兼容 S3 协议的存储服务中并支持恢复数据至集群中。更多信息参考[使用 NebulaGraph Operator 备份和恢复数据](10.backup-restore-using-operator.md)。
+
- **故障自愈**:NebulaGraph Operator 调用 NebulaGraph 集群提供的接口,动态地感知服务状态。一旦发现异常,NebulaGraph Operator 自动进行容错处理。更多信息参考[故障自愈](5.operator-failover.md)。
- **均衡调度**:基于调度器扩展接口,NebulaGraph Operator 提供的调度器可以将应用 Pods 均匀地分布在 NebulaGraph 集群中。
@@ -34,8 +36,7 @@ NebulaGraph Operator 不支持 v1.x 版本的 NebulaGraph,其与 NebulaGraph
| NebulaGraph 版本 |NebulaGraph Operator 版本 |
| ------------------- | ---------------- |
-| 3.0.0 ~ 3.4.0 |1.4.0|
-| 3.0.0 ~ 3.3.x |1.3.0|
+| 3.0.0 ~ 3.4.0 |1.3.0、1.4.0|
| 3.0.0 ~ 3.3.x |1.0.0、1.1.0、1.2.0|
| 2.5.x ~ 2.6.x |0.9.0|
| 2.5.x |0.8.0|
diff --git a/docs-2.0/nebula-operator/10.backup-restore-using-operator.md b/docs-2.0/nebula-operator/10.backup-restore-using-operator.md
new file mode 100644
index 00000000000..f6eb46845f1
--- /dev/null
+++ b/docs-2.0/nebula-operator/10.backup-restore-using-operator.md
@@ -0,0 +1,216 @@
+# 使用 NebulaGraph Operator 备份和恢复数据
+
+本文介绍如何对 Kubernetes 上的 NebulaGraph 集群进行数据备份和数据恢复。
+
+!!! enterpriseonly
+
+ 仅支持备份和恢复 Kubernetes 上的企业版 NebulaGraph 集群。
+
+## 原理介绍
+
+[NebulaGraph BR(企业版)](../backup-and-restore/nebula-br-ent/1.br-ent-overview.md)工具是 NebulaGraph 企业版数据备份和恢复的命令行工具。NebulaGraph Operator 基于 BR 工具来实现 Kubernetes 上的 NebulaGraph 集群数据的备份和恢复。
+
+备份数据时,NebulaGraph Operator 会创建一个 Job,然后将 NebulaGraph 集群中的数据备份到指定的存储服务上。
+
+恢复数据时,NebulaGraph Operator 会根据 NebulaRestore 资源对象定义的信息检查指定的备份 NebulaGraph 集群是否存在、远端存储的访问是否正常,并且会创建一个新的集群,然后将备份数据恢复到新创建的 NebulaGraph 集群中。更多信息参见[恢复流程图](https://github.com/vesoft-inc/nebula-operator/blob/v{{operator.release}}/doc/user/br_guide.md#restore-nebulagraph-cluster)。
+
+
+## 前提条件
+
+使用 NebulaGraph Operator 备份和恢复数据,需要满足以下条件:
+
+- Nebula Operator 版本 >= 1.4.0。
+- Kubernetes 上部署的企业版 NebulaGraph 集群正在运行。
+- 在创建集群的 YAML 中,设置了`spec.enableBR`为`true`。详细信息参见[]()。
+- 只支持使用 S3 协议的存储服务(例如 AWS S3,Minio 等)备份和恢复数据。
+- 集群中有足够的计算资源以恢复数据。
+
+## 备份数据
+
+### 备份说明
+
+- NebulaGraph Operator 支持全量备份和增量备份。
+- 数据备份过程中,指定图空间中的 DDL 和 DML 语句将会阻塞,我们建议在业务低峰期进行操作,例如凌晨 2 点至 5 点。
+- 执行增量备份的集群和指定的上一次备份的集群需为同一个,并且和指定的上一次备份的(存储桶)路径需相同。
+- 确保每次增量备份距离上一次备份的时间小于一个wal_ttl的时间。
+- 确保 Agent 有对应 NebulaGraph 安装目录和备份目录的读写权限。
+- 不支持备份指定图空间数据。
+
+### 全量备份
+
+当备份数据至兼容 S3 协议的存储服务上时,需要创建一个备份任务(Job),它会将全量 NebulaGraph 数据备份到指定的存储位置。
+
+全量备份任务(Job)的 YAML 示例如下:
+
+```yaml
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: nebula-full-backup
+spec:
+ parallelism: 1
+ ttlSecondsAfterFinished: 60
+ template:
+ spec:
+ restartPolicy: OnFailure
+ containers:
+ - image: vesoft/br-ent:v{{br_ent.release}}
+ imagePullPolicy: Always
+ name: backup
+ command:
+ - /bin/sh
+ - -ecx
+ - exec /usr/local/bin/nebula-br backup full
+ - --meta $META_ADDRESS:9559
+ - --storage s3://$BUCKET
+ - --s3.access_key $ACCESS_KEY
+ - --s3.secret_key $SECRET_KEY
+ - --s3.region $REGION
+ - --s3.endpoint https://s3.$REGION.amazonaws.com
+```
+
+### 增量备份
+
+除了`spec.template.spec.containers[0].command`指定的执行命令和 Job 名称不同外,增量备份的 YAML 文件与全量备份的 YAML 文件相同。增量备份的 YAML 示例:
+
+```yaml
+apiVersion: batch/v1
+kind: Job
+metadata:
+ name: nebula-incr-backup
+spec:
+ parallelism: 1
+ ttlSecondsAfterFinished: 60
+ template:
+ spec:
+ restartPolicy: OnFailure
+ containers:
+ - image: vesoft/br-ent:v{{br_ent.release}}
+ imagePullPolicy: Always
+ name: backup
+ command:
+ - /bin/sh
+ - -ecx
+ - exec /usr/local/bin/nebula-br backup incr
+ - --meta $META_ADDRESS:9559
+ - --base $BACKUP_NAME
+ - --storage s3://$BUCKET
+ - --s3.access_key $ACCESS_KEY
+ - --s3.secret_key $SECRET_KEY
+ - --s3.region $REGION
+ - --s3.endpoint https://s3.$REGION.amazonaws.com
+```
+
+### 参数说明
+
+主要参数说明如下:
+
+| 参数 |默认值| 说明 |
+| ------------- | ---- | ---- |
+| `spec.parallelism` |1 |并行执行的任务数。 |
+| `spec.ttlSecondsAfterFinished` | 60 | 在任务完成后,保留任务信息的时间。 |
+| `spec.template.spec.containers[0].image` | `vesoft/br-ent:{{br_ent.release}}`|NebulaGraph BR 企业版工具的镜像地址。 |
+| `spec.template.spec.containers[0].command`| - | 备份数据至兼容 S3 协议存储服务的命令。
有关命令中选项的描述,参见[参数说明](../backup-and-restore/nebula-br-ent/3.backup-data.md#_12)。 |
+
+
+有关 Job 的更多设置,参见 [Kubernetes Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/)。
+
+设置完备份任务(Job)的 YAML 文件后,执行以下命令启动备份任务:
+
+```bash
+kubectl apply -f .yaml
+```
+
+数据备份成功后,会在指定的存储位置生成备份文件,例如`BACKUP_2023_02_12_10_04_16`。
+
+## 恢复数据
+
+### 恢复说明
+
+- 数据恢复执行成功后,会创建一个新的集群,老的集群不会被删除,用户可自行决定是否删除老的集群。
+- 数据恢复会有一段时间的服务不可用,建议在业务低峰期进行操作。
+
+
+
+### 恢复过程
+
+当恢复备份在兼容 S3 协议服务上的数据时,需要创建一个 Secret,用于存储访问兼容 S3 协议的服务的凭证。然后创建一个恢复数据的资源对象(NebulaRestore),它会告诉 Operator 基于此资源对象定义的信息创建一个新的 NebulaGraph 集群,将备份数据恢复到新创建的集群中。
+
+基于备份文件`BACKUP_2023_02_12_10_04_16`恢复数据的 YAML 示例:
+
+```yaml
+apiVersion: v1
+kind: Secret
+metadata:
+ name: aws-s3-secret
+type: Opaque
+data:
+ access-key: QVNJQVE0WFlxxx
+ secret-key: ZFJ6OEdNcDdxenMwVGxxx
+---
+apiVersion: apps.nebula-graph.io/v1alpha1
+kind: NebulaRestore
+metadata:
+ name: restore1
+spec:
+ br:
+ clusterName: nebula
+ backupName: "BACKUP_2023_02_12_10_04_16"
+ concurrency: 5
+ s3:
+ region: "us-west-2"
+ bucket: "nebula-br-test"
+ endpoint: "https://s3.us-west-2.amazonaws.com"
+ secretName: "aws-s3-secret"
+```
+
+### 参数说明
+
+- Secret
+
+ |参数|默认值|说明|
+ |:---|:---|:---|
+ |`metadata.name`|-|Secret 的名称。|
+ |`type`|`Opaque`|Secret 的类型。参见[Types of Secret](https://kubernetes.io/docs/concepts/configuration/secret/#secret-types)。|
+ |`data.access-key`|-|访问兼容 S3 协议的存储服务的 AccessKey。|
+ |`data.secret-key`|-|访问兼容 S3 协议的存储服务的 SecretKey。|
+
+- NebulaRestore
+
+ |参数|默认值|说明|
+ |:---|:---|:---|
+ |`metadata.name`|-|资源对象 NebulaRestore 的名称。|
+ |`spec.br.clusterName`|-|备份集群的名称。|
+ |`spec.br.backupName`|-|备份文件的名称。基于这个备份文件恢复数据。|
+ |`spec.br.concurrency`|`5`|用来控制数据恢复时下载文件的并发数量。默认值`5`。|
+ |`spec.br.s3.region`|-| S3 存储桶所在的地理区域。|
+ |`spec.br.s3.bucket`|-|存储备份数据的 S3 存储桶路径。|
+ |`spec.br.s3.endpoint`|-|S3 存储桶的访问地址。|
+ |`spec.br.s3.secretName`|-|用于访问 S3 存储桶的凭证的 Secret 的名称。|
+
+设置完恢复数据的 YAML 文件后,执行以下命令启动恢复数据的任务:
+
+```bash
+kubectl apply -f .yaml
+```
+
+执行以下命令查看 NebulaRestore 对象的状态。
+
+```bash
+kubectl get rt -w
+```
+
+
diff --git a/mkdocs.yml b/mkdocs.yml
index 85fec3f09de..49fa068b492 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -91,10 +91,13 @@ plugins:
# - graph-computing/use-explorer.md
# - nebula-exchange/use-exchange/ex-ug-export-from-nebula.md
# - nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md
+# - nebula-operator/10.backup-restore-using-operator.md
# - synchronization-and-migration/replication-between-clusters.md
# - 20.appendix/8.about-license/
# - nebula-dashboard-ent/4.cluster-operator/operator/scale.md
-# - 6.monitor-and-metrics/3.bbox
+# - 6.monitor-and-metrics/3.bbox/
+# - backup-and-restore/nebula-br-ent/
+#
# ent.end
# comm.begin
# comm.end
@@ -504,6 +507,7 @@ nav:
- 安装 BR: backup-and-restore/nebula-br/2.compile-br.md
- 使用 BR 备份数据: backup-and-restore/nebula-br/3.br-backup-data.md
- 使用 BR 恢复数据: backup-and-restore/nebula-br/4.br-restore-data.md
+#ent
- NebulaGraph BR(企业版):
- BR(企业版)概述: backup-and-restore/nebula-br-ent/1.br-ent-overview.md
- 安装 BR: backup-and-restore/nebula-br-ent/2.install-tools.md
@@ -701,22 +705,24 @@ nav:
- 导出 NebulaGraph 数据: nebula-exchange/use-exchange/ex-ug-export-from-nebula.md
- Exchange 常见问题: nebula-exchange/ex-ug-FAQ.md
-# - NebulaGraph Operator:
-# - 什么是 NebulaGraph Operator: nebula-operator/1.introduction-to-nebula-operator.md
-# - 使用流程: nebula-operator/6.get-started-with-operator.md
-# - 部署 NebulaGraph Operator: nebula-operator/2.deploy-nebula-operator.md
-# - 部署 NebulaGraph集群:
-# - 使用 Kubectl 部署 NebulaGraph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md
-# - 使用 Helm 部署 NebulaGraph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md
-# - 配置 NebulaGraph 集群:
-# - 自定义 NebulaGraph 集群的配置参数: nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md
-# - 回收 PV: nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md
-# #ent
-# - 均衡扩容后的 Storage 数据: nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md
-# - 升级 NebulaGraph 集群: nebula-operator/9.upgrade-nebula-cluster.md
-# - 连接 NebulaGraph 数据库: nebula-operator/4.connect-to-nebula-graph-service.md
-# - 故障自愈: nebula-operator/5.operator-failover.md
-# - 常见问题: nebula-operator/7.operator-faq.md
+ - NebulaGraph Operator:
+ - 什么是 NebulaGraph Operator: nebula-operator/1.introduction-to-nebula-operator.md
+ - 使用流程: nebula-operator/6.get-started-with-operator.md
+ - 部署 NebulaGraph Operator: nebula-operator/2.deploy-nebula-operator.md
+ - 部署 NebulaGraph:
+ - 使用 Kubectl 部署 NebulaGraph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md
+ - 使用 Helm 部署 NebulaGraph 集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md
+ - 配置 NebulaGraph:
+ - 自定义 NebulaGraph 集群的配置参数: nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md
+ - 回收 PV: nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md
+#ent
+ - 均衡扩容后的 Storage 数据: nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md
+ - 升级 NebulaGraph: nebula-operator/9.upgrade-nebula-cluster.md
+ - 连接 NebulaGraph: nebula-operator/4.connect-to-nebula-graph-service.md
+#ent
+ - 备份与恢复: nebula-operator/10.backup-restore-using-operator.md
+ - 故障自愈: nebula-operator/5.operator-failover.md
+ - 常见问题: nebula-operator/7.operator-faq.md
- 图计算: