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 - 图计算: