diff --git a/TOC.md b/TOC.md index e3e95c428331..1c80b19a8d43 100644 --- a/TOC.md +++ b/TOC.md @@ -381,7 +381,13 @@ + 运维 - [销毁 TiDB 集群](/tidb-in-kubernetes/maintain/destroy-tidb-cluster.md) - [维护 TiDB 集群所在节点](/tidb-in-kubernetes/maintain/kubernetes-node.md) - - [备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore.md) + + 备份与恢复 + - [基于 Helm Charts 的备份恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md) + + 基于 CRD 的备份恢复 + - [备份 TiDB 集群到 GCS](/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md) + - [恢复 GCS 上的备份数据](/tidb-in-kubernetes/maintain/backup-and-restore/restore-gcs.md) + - [备份 TiDB 集群到兼容 S3 的存储](/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md) + - [恢复 S3 兼容存储上的备份数据](/tidb-in-kubernetes/maintain/backup-and-restore/restore-s3.md) - [恢复 Kubernetes 上的 TiDB 集群数据](/tidb-in-kubernetes/maintain/lightning.md) - [收集日志](/tidb-in-kubernetes/maintain/log-collecting.md) - [集群故障自动转移](/tidb-in-kubernetes/maintain/auto-failover.md) diff --git a/reference/tools/user-guide.md b/reference/tools/user-guide.md index d7627ffb5afe..56ac3cc9d3de 100644 --- a/reference/tools/user-guide.md +++ b/reference/tools/user-guide.md @@ -28,7 +28,7 @@ TiDB 生态工具可以分为几种: - Loader 的输入:Mydumper 输出的文件 - Loader 的输出:以 SQL 形式写入 TiDB - 适用 TiDB 版本:所有版本 -- Kubernetes 支持:[备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore.md) +- Kubernetes 支持:[备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md) #### 全量导入工具 TiDB Lightning @@ -90,7 +90,7 @@ TiDB 生态工具可以分为几种: - Mydumper 的输入:MySQL/TiDB 集群 - Mydumper 的输出:SQL 文件 - 适用 TiDB 版本:所有版本 -- Kubernetes 支持:[备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore.md) +- Kubernetes 支持:[备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md) #### 增量导出工具 TiDB Binlog diff --git a/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md b/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md index c8d2a85636aa..28dc2e1b48cb 100644 --- a/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md +++ b/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md @@ -1,12 +1,14 @@ --- -title: 在 Kubernetes 上备份 TiDB 集群到 GCS +title: 备份 TiDB 集群到 GCS category: how-to --- -# 在 Kubernetes 上备份 TiDB 集群到 GCS +# 备份 TiDB 集群到 GCS 本文档详细描述了如何将 Kubernetes 上 TiDB 集群的数据备份到 [Google Cloud Storage (GCS)](https://cloud.google.com/storage/docs/) 上。本文档中的“备份”,均是指全量备份(Ad-hoc 全量备份和定时全量备份),底层通过使用 [`mydumper`](/reference/tools/mydumper.md) 获取集群的逻辑备份,然后再将备份数据上传到远端 GCS。 +本文使用的备份恢复方式基于 TiDB Operator 新版(v1.1 及以上)的 CRD 实现的。基于 Helm Charts 的备份恢复方式可参考[基于 Helm Charts 实现的 TiDB 集群备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md)。 + ## Ad-hoc 全量备份 Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) 对象来描述一次备份。TiDB Operator 根据这个 `Backup` 对象来完成具体的备份过程。如果备份过程中出现错误,程序不会自动重试,此时需要手动处理。 @@ -36,7 +38,7 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) {{< copyable "shell-regular" >}} ```shell - kubectl create secret generic backup-demo1-tidb-secret --from-literal=user=root --from-literal=password= --namespace=test1 + kubectl create secret generic backup-demo1-tidb-secret --from-literal=password= --namespace=test1 ``` ### 备份数据到 GCS @@ -59,6 +61,11 @@ metadata: name: demo1-backup-gcs namespace: test1 spec: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret gcs: secretName: gcs-secret projectId: @@ -66,9 +73,6 @@ spec: # storageClass: STANDARD_IA # objectAcl: private # bucketAcl: private - storageType: gcs - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret storageClassName: local-storage storageSize: 10Gi ``` @@ -118,17 +122,13 @@ GCS 支持以下几种 bucket ACL 策略: 更多 `Backup` CR 字段的详细解释: -`.spec.metadata.namespace`:备份 TiDB 集群所在的 namespace。 - -`.spec.storageType`:备份的存储类型。目前主要有 S3 和 GCS 两种。 - -`.spec.cluster`:备份 TiDB 集群的名字。 - -`.spec.tidbSecretName`:访问 TiDB 集群所需凭证的 secret。 - -`.spec.storageClassName`:备份时指定所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值,这个值默认为 `standard`。 - -`.spec.storageSize`:备份时指定所需的 PV 大小。该值应大于备份 TiDB 集群数据的大小。 +* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。 +* `.spec.from.host`:待备份 TiDB 集群的访问地址。 +* `.spec.from.port`:待备份 TiDB 集群的访问端口。 +* `.spec.from.user`:待备份 TiDB 集群的访问用户。 +* `.spec.from.tidbSecretName`:待备份 TiDB 集群所需凭证的 secret。 +* `.spec.storageClassName`:备份时指定所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值,该值默认为 `standard`。 +* `.spec.storageSize`:备份时指定所需的 PV 大小。该值应大于备份 TiDB 集群数据的大小。 ## 定时全量备份 @@ -163,6 +163,11 @@ spec: maxReservedTime: "3h" schedule: "*/2 * * * *" backupTemplate: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret gcs: secretName: gcs-secret projectId: @@ -170,9 +175,6 @@ spec: # storageClass: STANDARD_IA # objectAcl: private # bucketAcl: private - storageType: gcs - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret storageClassName: local-storage storageSize: 10Gi ``` diff --git a/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md b/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md index d91f3c49a37a..6a780b81aa05 100644 --- a/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md +++ b/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md @@ -1,11 +1,13 @@ --- -title: 在 Kubernetes 上备份 TiDB 集群到兼容 S3 的存储 +title: 备份 TiDB 集群到兼容 S3 的存储 category: how-to --- -# 在 Kubernetes 上备份 TiDB 集群到兼容 S3 的存储 +# 备份 TiDB 集群到兼容 S3 的存储 -这篇文档详细描述了如何将 Kubernetes 上的 TiDB 集群数据备份到兼容 S3 的存储上。本文档中的“备份”,均是指全量备份(Ad-hoc 全量备份和定时全量备份)。底层通过使用 [`mydumper`](/reference/tools/mydumper.md) 获取集群的逻辑备份,然后在将备份数据上传到兼容 S3 的存储上。 +本文详细描述了如何将 Kubernetes 上的 TiDB 集群数据备份到兼容 S3 的存储上。本文档中的“备份”,均是指全量备份(Ad-hoc 全量备份和定时全量备份)。底层通过使用 [`mydumper`](/reference/tools/mydumper.md) 获取集群的逻辑备份,然后在将备份数据上传到兼容 S3 的存储上。 + +本文使用的备份恢复方式基于 TiDB Operator 新版(v1.1 及以上)的 CRD 实现。基于 Helm Charts 实现的备份恢复方式可参考[基于 Helm Charts 实现的 TiDB 集群备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md)。 ## Ad-hoc 全量备份 @@ -36,7 +38,7 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) {{< copyable "shell-regular" >}} ```shell - kubectl create secret generic backup-demo1-tidb-secret --from-literal=user=root --from-literal=password= --namespace=test1 + kubectl create secret generic backup-demo1-tidb-secret --from-literal=password= --namespace=test1 ``` ### 备份数据到兼容 S3 的存储 @@ -59,6 +61,11 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) name: demo1-backup-s3 namespace: test1 spec: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret s3: provider: aws secretName: s3-secret @@ -66,9 +73,6 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) # storageClass: STANDARD_IA # acl: private # endpoint: - storageType: s3 - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret storageClassName: local-storage storageSize: 10Gi ``` @@ -91,13 +95,15 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR) name: demo1-backup-s3 namespace: test1 spec: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret s3: provider: ceph secretName: s3-secret endpoint: http://10.0.0.1:30074 - storageType: s3 - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret storageClassName: local-storage storageSize: 10Gi ``` @@ -136,17 +142,13 @@ Amazon S3 支持以下几种 storageClass 类型: 更多 `Backup` CR 字段的详细解释: -`.spec.metadata.namespace`: 备份 TiDB 集群所在的 namespace。 - -`.spec.storageType`: 代表备份的存储类型,目前主要有 S3 和 GCS。 - -`.spec.cluster`: 备份 TiDB 集群的名字。 - -`.spec.tidbSecretName`: 访问 TiDB 集群所需密码的 secret。 - -`.spec.storageClassName`: 备份时所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值,这个值默认为 `standard`。 - -`.spec.storageSize`: 备份时指定所需的 PV 大小。这个值要大于备份 TiDB 集群的数据大小。 +* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。 +* `.spec.from.host`:待备份 TiDB 集群的访问地址。 +* `.spec.from.port`:待备份 TiDB 集群的访问端口。 +* `.spec.from.user`:待备份 TiDB 集群的访问用户。 +* `.spec.from.tidbSecretName`:待备份 TiDB 集群所需凭证的 secret。 +* `.spec.storageClassName`: 备份时所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值,该值默认为 `standard`。 +* `.spec.storageSize`: 备份时指定所需的 PV 大小。该值须大于备份 TiDB 集群的数据大小。 更多支持的兼容 S3 的 `provider` 如下: @@ -192,6 +194,11 @@ Amazon S3 支持以下几种 storageClass 类型: maxReservedTime: "3h" schedule: "*/2 * * * *" backupTemplate: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret s3: provider: aws secretName: s3-secret @@ -199,9 +206,6 @@ Amazon S3 支持以下几种 storageClass 类型: # storageClass: STANDARD_IA # acl: private # endpoint: - storageType: s3 - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret storageClassName: local-storage storageSize: 10Gi ``` @@ -229,13 +233,15 @@ Amazon S3 支持以下几种 storageClass 类型: maxReservedTime: "3h" schedule: "*/2 * * * *" backupTemplate: + from: + host: + port: + user: + secretName: backup-demo1-tidb-secret s3: - provider: ceph - secretName: s3-secret - endpoint: http://10.0.0.1:30074 - storageType: s3 - cluster: demo1 - tidbSecretName: backup-demo1-tidb-secret + provider: ceph + secretName: s3-secret + endpoint: http://10.0.0.1:30074 storageClassName: local-storage storageSize: 10Gi ``` diff --git a/tidb-in-kubernetes/maintain/backup-and-restore.md b/tidb-in-kubernetes/maintain/backup-and-restore/charts.md similarity index 90% rename from tidb-in-kubernetes/maintain/backup-and-restore.md rename to tidb-in-kubernetes/maintain/backup-and-restore/charts.md index 15b797efac0c..094ee59f79b4 100644 --- a/tidb-in-kubernetes/maintain/backup-and-restore.md +++ b/tidb-in-kubernetes/maintain/backup-and-restore/charts.md @@ -1,11 +1,19 @@ --- -title: Kubernetes 上的 TiDB 集群备份恢复 +title: 基于 Helm Charts 实现的 TiDB 集群备份恢复 category: how-to +aliases: ['/docs-cn/dev/tidb-in-kubernetes/maintain/backup-and-store/'] --- -# Kubernetes 上的 TiDB 集群备份与恢复 +# 基于 Helm Charts 实现的 TiDB 集群备份与恢复 -这篇文档详细描述了如何对 Kubernetes 上的 TiDB 集群进行数据备份和数据恢复。 +本文详细描述了如何对 Kubernetes 上的 TiDB 集群进行数据备份和数据恢复。本文使用的备份恢复方式是基于 Helm Charts 实现的。 + +TiDB Operator 1.1 及以上版本推荐使用基于 CRD 的备份恢复方式实现,详情可参阅以下文档: + +- [备份 TiDB 集群到 GCS](/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md) +- [恢复 GCS 上的备份数据](/tidb-in-kubernetes/maintain/backup-and-restore/restore-gcs.md) +- [备份 TiDB 集群到兼容 S3 的存储](/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md) +- [恢复 S3 兼容存储上的备份数据](/tidb-in-kubernetes/maintain/backup-and-restore/restore-s3.md) Kubernetes 上的 TiDB 集群支持两种备份策略: diff --git a/tidb-in-kubernetes/maintain/backup-and-restore/restore-gcs.md b/tidb-in-kubernetes/maintain/backup-and-restore/restore-gcs.md new file mode 100644 index 000000000000..fe064398945f --- /dev/null +++ b/tidb-in-kubernetes/maintain/backup-and-restore/restore-gcs.md @@ -0,0 +1,83 @@ +--- +title: 恢复 GCS 上的备份数据 +category: how-to +--- + +# 恢复 GCS 上的备份数据 + +本文详细描述了将 Kubernetes 上通过 TiDB Operator 备份的 TiDB 集群数据恢复的具体操作过程。底层通过使用 [`loader`](/reference/tools/loader.md) 来进行集群恢复。 + +本文使用的备份方式基于 TiDB Operator 新版(v1.1 及以上)的 CRD 实现的。基于 Helm Charts 实现的备份恢复方式可参考[基于 Helm Charts 实现的 TiDB 集群备份与恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md)。 + +以下示例将存储在 [Google Cloud Storage (GCS)](https://cloud.google.com/storage/docs/) 上指定路径中的集群备份数据恢复到 TiDB 集群。 + +## 环境准备 + +1. 下载文件 [`backup-rbac.yaml`](https://github.com/pingcap/tidb-operator/blob/master/manifests/backup/backup-rbac.yaml),并执行以下命令在 `test2` 这个 namespace 中创建恢复备份所需的 RBAC 相关资源: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl apply -f backup-rbac.yaml -n test2 + ``` + +2. 创建 `restore-demo2-tidb-secret` secret,该 secret 存放用来访问 TiDB 集群的 root 账号和密钥: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=password= --namespace=test2 + ``` + +## 将指定备份恢复到 TiDB 集群 + +1. 创建 restore custom resource (CR),将指定的备份数据恢复至 TiDB 集群: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl apply -f restore.yaml + ``` + + `restore.yaml` 文件内容如下: + + ```yaml + --- + apiVersion: pingcap.com/v1alpha1 + kind: Restore + metadata: + name: demo2-restore + namespace: test2 + spec: + to: + host: + port: + user: + secretName: restore-demo2-tidb-secret + gcs: + projectId: + secretName: gcs-secret + path: gcs:// + storageClassName: local-storage + storageSize: 1Gi + ``` + +2. 创建好 `Restore` CR 后可通过以下命令查看恢复的状态: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl get rt -n test2 -owide + ``` + +以上示例将存储在 GCS 上指定路径 `spec.gcs.path` 的备份数据恢复到 TiDB 集群 `spec.to.host`。关于 GCS 的配置项可以参考 [backup-gcs.yaml](/tidb-in-kubernetes/maintain/backup-and-restore/backup-gcs.md#备份数据到-gcs) 中的配置。 + +更多 `Restore` CR 字段的详细解释如下: + +* `.spec.metadata.namespace`: `Restore` CR 所在的 namespace。 +* `.spec.to.host`:待恢复 TiDB 集群的访问地址。 +* `.spec.to.port`:待恢复 TiDB 集群访问的端口。 +* `.spec.to.user`:待恢复 TiDB 集群的访问用户。 +* `.spec.to.tidbSecretName`:待恢复 TiDB 集群所需凭证的 secret。 +* `.spec.storageClassName`:指定恢复时所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值(默认为 `standard`)。 +* `.spec.storageSize`:恢复集群时指定所需的 PV 大小。该值应大于备份 TiDB 集群数据的大小。 diff --git a/tidb-in-kubernetes/maintain/backup-and-restore/restore-s3.md b/tidb-in-kubernetes/maintain/backup-and-restore/restore-s3.md new file mode 100644 index 000000000000..1f0caed29447 --- /dev/null +++ b/tidb-in-kubernetes/maintain/backup-and-restore/restore-s3.md @@ -0,0 +1,84 @@ +--- +title: 恢复 S3 兼容存储上的备份数据 +category: how-to +--- + +# 恢复 S3 兼容存储上的备份数据 + +本文描述了将 Kubernetes 上通过 TiDB Operator 备份的数据恢复到 TiDB 集群的操作过程。底层通过使用 [`loader`](/reference/tools/loader.md) 来恢复数据。 + +本文使用的备份方式基于 TiDB Operator 新版(v1.1 及以上)的 CRD 实现。基于 Helm Charts 实现的备份恢复方式可参考[基于 Helm Charts 实现的 TiDB 集群备份恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md)。 + +以下示例将兼容 S3 的存储(指定路径)上的备份数据恢复到 TiDB 集群。 + +## 环境准备 + +1. 下载文件 [`backup-rbac.yaml`](https://github.com/pingcap/tidb-operator/blob/master/manifests/backup/backup-rbac.yaml),并在 `test2` 这个 namespace 中创建恢复备份所需的 RBAC 资源,所需命令如下: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl apply -f backup-rbac.yaml -n test2 + ``` + +2. 创建 `restore-demo2-tidb-secret` secret,该 secret 存放用来访问 TiDB 集群的 root 账号和密钥: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=password= --namespace=test2 + ``` + +## 将指定备份恢复到 TiDB 集群 + +1. 创建 restore custom resource (CR),将指定的备份数据恢复至 TiDB 集群: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl apply -f restore.yaml + ``` + + `restore.yaml` 文件内容如下: + + ```yaml + --- + apiVersion: pingcap.com/v1alpha1 + kind: Restore + metadata: + name: demo2-restore + namespace: test2 + spec: + to: + host: + port: + user: + secretName: restore-demo2-tidb-secret + s3: + provider: ceph + endpoint: http://10.233.2.161 + secretName: ceph-secret + path: s3:// + storageClassName: local-storage + storageSize: 1Gi + ``` + +2. 创建好 `Restore` CR 后可通过以下命令查看恢复的状态: + + {{< copyable "shell-regular" >}} + + ```shell + kubectl get rt -n test2 -owide + ``` + +以上示例将兼容 S3 的存储(`spec.s3.path` 路径下)中的备份数据恢复到 TiDB 集群 (`spec.to.host`)。有关兼容 S3 的存储的配置项,可以参考 [backup-s3.yaml](/tidb-in-kubernetes/maintain/backup-and-restore/backup-s3.md#备份数据到兼容-s3-的存储)。 + +更多 `Restore` CR 字段的详细解释: + +* `.spec.metadata.namespace`:`Restore` CR 所在的 namespace。 +* `.spec.to.host`:待恢复 TiDB 集群的访问地址。 +* `.spec.to.port`:待恢复 TiDB 集群的访问端口。 +* `.spec.to.user`:待恢复 TiDB 集群的访问用户。 +* `.spec.to.tidbSecretName`:待恢复 TiDB 集群所需凭证的 secret。 +* `.spec.storageClassName`:指定恢复时所需的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 指定的值(默认为 `standard`)。 +* `.spec.storageSize`:指定恢复集群时所需的 PV 大小。该值应大于备份 TiDB 集群的数据大小。 diff --git a/tidb-in-kubernetes/maintain/backup-and-restore/restore.md b/tidb-in-kubernetes/maintain/backup-and-restore/restore.md deleted file mode 100644 index 33e8934ccae4..000000000000 --- a/tidb-in-kubernetes/maintain/backup-and-restore/restore.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: 恢复备份数据到 Kubernetes 上的 TiDB 集群 -category: how-to ---- - -# 恢复备份数据到 Kubernetes 上的 TiDB 集群 - -本文档详细描述了如何将 Kubernetes 上通过 TiDB Operator 备份的 TiDB 集群数据恢复的具体操作过程。底层通过使用 [`loader`](/reference/tools/loader.md) 来进行集群恢复。 - -为了更好地说明如何进行恢复,本文档提供了以下示例。示例假设备份数据来源于 Kubernetes `test1` 这个 namespace 中的 TiDB 集群 `demo1`,并将其中的一个备份数据恢复到 Kubernetes `test2` 这个 namespace 中的 TiDB 集群 `demo2`。下面是具体的操作过程: - -## 恢复备份的环境准备 - -1. 下载文件 [`backup-rbac.yaml`](https://github.com/pingcap/tidb-operator/blob/master/manifests/backup/backup-rbac.yaml),并执行以下命令在 `test2` 这个 namespace 中创建恢复备份所需的 RBAC 相关资源: - - {{< copyable "shell-regular" >}} - - ```shell - kubectl apply -f backup-rbac.yaml -n test2 - ``` - -2. 创建 `restore-demo2-tidb-secret` secret,该 secret 存放用来访问 TiDB 集群的 root 账号和密钥: - - {{< copyable "shell-regular" >}} - - ```shell - kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=password= --namespace=test2 - ``` - -## 将指定备份恢复到 TiDB 集群 - -1. 创建 restore custom resource (CR),将指定的备份数据恢复至 TiDB 集群: - - {{< copyable "shell-regular" >}} - - ```shell - kubectl apply -f restore.yaml - ``` - - `restore.yaml` 文件内容如下: - - ```yaml - --- - apiVersion: pingcap.com/v1alpha1 - kind: Restore - metadata: - name: demo2-restore - namespace: test2 - spec: - cluster: demo2 - ## specify a backup CR name to represent restore tidb cluster test2/demo2 from this backup - backup: demo1-backup-schedule-2019-08-15t02-01-00 - secretName: restore-demo2-tidb-secret - backupNamespace: test1 - storageClassName: rook-ceph-block - storageSize: 10Gi - ``` - -2. 创建好 `Restore` CR 后可通过以下命令查看恢复的状态: - - {{< copyable "shell-regular" >}} - - ```shell - kubectl get rt -n test2 -owide - ``` - -`Restore` CR 各个字段的详细解释: - -`.spec.metadata.namespace`: 需要恢复的目标 TiDB 集群所在的 namespace。 - -`.spec.cluster`:需要恢复的目标 TiDB 集群的名字。 - -`.spec.backupNamespace`:备份集群所在的 namespace。因为目前需通过备份源 `Backup` CR 来获取恢复逻辑中所需的远端存储访问信息,所以恢复操作中需要备份源所在的 namespace 信息。 - -`.spec.backup`:备份源的一个 `Backup` CR 名字。可以通过以下命令获取备份集群下的备份条目,然后从中选择一个要恢复的 `backup` 进行恢复即可。 - -{{< copyable "shell-regular" >}} - -```shell -kubectl get bk -n test1 -``` - -`.spec.secretName`:访问需恢复的目标 TiDB 集群所需凭证的 secret。 - -`.spec.storageClassName`:恢复备份数据时需要指定使用的 PV 类型。如果不指定该项,则默认使用 TiDB Operator 启动参数中 `default-backup-storage-class-name` 所指定的值,这个值默认为 `standard`。 - -`.spec.storageSize`:恢复集群时指定所需的 PV 大小。这个值应大于备份 TiDB 集群数据的大小。 diff --git a/tidb-in-kubernetes/reference/configuration/storage-class.md b/tidb-in-kubernetes/reference/configuration/storage-class.md index 3f4f8d8cd845..8fd6db3d49c5 100644 --- a/tidb-in-kubernetes/reference/configuration/storage-class.md +++ b/tidb-in-kubernetes/reference/configuration/storage-class.md @@ -113,7 +113,7 @@ Kubernetes 当前支持静态分配的本地存储。可使用 [local-static-pro > **注意:** > - > 该步骤中创建的目录个数取决于规划的 TiDB 集群数量、每个集群内的 Pump 数量及备份方式。1 个目录会对应创建 1 个 PV。每个 Pump 会使用 1 个 PV,每个 drainer 会使用 1 个 PV,每次 [Ad-hoc 全量备份](/tidb-in-kubernetes/maintain/backup-and-restore.md#ad-hoc-全量备份)会使用 1 个 PV,所有[定时全量备份](/tidb-in-kubernetes/maintain/backup-and-restore.md#定时全量备份)会共用 1 个 PV。 + > 该步骤中创建的目录个数取决于规划的 TiDB 集群数量、每个集群内的 Pump 数量及备份方式。1 个目录会对应创建 1 个 PV。每个 Pump 会使用 1 个 PV,每个 drainer 会使用 1 个 PV,每次 [Ad-hoc 全量备份](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md#ad-hoc-全量备份)会使用 1 个 PV,所有[定时全量备份](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md#定时全量备份)会共用 1 个 PV。 - 给 PD 数据使用的盘,可以参考[步骤](https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/blob/master/docs/operations.md#sharing-a-disk-filesystem-by-multiple-filesystem-pvs)挂载盘,创建目录,并将新建的目录以 bind mount 方式挂载到 `/mnt/sharedssd` 目录,后续创建 `shared-ssd-storage` `StorageClass`。 diff --git a/tidb-in-kubernetes/tidb-operator-overview.md b/tidb-in-kubernetes/tidb-operator-overview.md index 56e94a4f8061..911235dac9bb 100644 --- a/tidb-in-kubernetes/tidb-operator-overview.md +++ b/tidb-in-kubernetes/tidb-operator-overview.md @@ -57,7 +57,7 @@ TiDB Operator 提供了多种方式来部署 Kubernetes 上的 TiDB 集群: + [TiDB 集群扩缩容](/tidb-in-kubernetes/scale-in-kubernetes.md) + [TiDB 集群升级](/tidb-in-kubernetes/upgrade/tidb-cluster.md#升级-tidb-版本) + [TiDB 集群配置变更](/tidb-in-kubernetes/upgrade/tidb-cluster.md#更新-tidb-集群配置) -+ [TiDB 集群备份恢复](/tidb-in-kubernetes/maintain/backup-and-restore.md) ++ [TiDB 集群备份恢复](/tidb-in-kubernetes/maintain/backup-and-restore/charts.md) + [配置 TiDB 集群故障自动转移](/tidb-in-kubernetes/maintain/auto-failover.md) + [监控 TiDB 集群](/tidb-in-kubernetes/monitor/tidb-in-kubernetes.md) + [TiDB 集群日志收集](/tidb-in-kubernetes/maintain/log-collecting.md)