你正在查看已归档的 TiDB 文档,该文档不再更新。

查看最新 LTS 版本文档

使用 TiDB Lightning 恢复 GCS 上的备份数据

本文描述了将 Kubernetes 上通过 TiDB Operator 备份的数据恢复到 TiDB 集群的操作过程。

本文使用的恢复方式基于 TiDB Operator v1.1 及以上的 CustomResourceDefinition (CRD) 实现,底层通过使用 TiDB Lightning TiDB-backend 来恢复数据。

目前,TiDB Lightning 支持三种后端: Importer-backendLocal-backendTiDB-backend。关于这三种后端的区别和选择,请参阅 TiDB Lightning 文档。如果要使用 Importer-backend 或者 Local-backend 导入数据,请参阅使用 TiDB Lightning 导入集群数据

以下示例将存储在 Google Cloud Storage (GCS) 上指定路径上的集群备份数据恢复到 TiDB 集群。

环境准备

  1. 下载文件 backup-rbac.yaml,并执行以下命令在 test2 这个 namespace 中创建恢复所需的 RBAC 相关资源:

    kubectl apply -f backup-rbac.yaml -n test2
  2. 远程存储访问授权。

    参考 GCS 账号授权授权访问 GCS 远程存储。

  3. 创建 restore-demo2-tidb-secret secret,该 secret 存放用来访问 TiDB 集群的 root 账号和密钥:

    kubectl create secret generic restore-demo2-tidb-secret --from-literal=user=root --from-literal=password=${password} --namespace=test2

数据库账户权限

权限作用域
SELECTTables
INSERTTables
UPDATETables
DELETETables
CREATEDatabases, tables
DROPDatabases, tables
ALTERTables

将指定备份数据恢复到 TiDB 集群

  1. 创建 restore custom resource (CR),将指定的备份数据恢复至 TiDB 集群:

    kubectl apply -f restore.yaml

    restore.yaml 文件内容如下:

    --- apiVersion: pingcap.com/v1alpha1 kind: Restore metadata: name: demo2-restore namespace: test2 spec: to: host: ${tidb_host} port: ${tidb_port} user: ${tidb_user} secretName: restore-demo2-tidb-secret gcs: projectId: ${project_id} secretName: gcs-secret path: gcs://${backup_path} # storageClassName: local-storage storageSize: 1Gi

    以上示例将存储在 GCS 上指定路径 spec.gcs.path 的备份数据恢复到 TiDB 集群 spec.to.host。关于 GCS 的配置项可以参考 GCS 字段介绍

    更多 Restore CR 字段的详细解释参考 Restore CR 字段介绍

  2. 创建好 Restore CR 后可通过以下命令查看恢复的状态:

    kubectl get rt -n test2 -owide

故障诊断

在使用过程中如果遇到问题,可以参考故障诊断