使用 TiDB Lightning 恢复 GCS 上的备份数据
本文描述了将 Kubernetes 上通过 TiDB Operator 备份的数据恢复到 TiDB 集群的操作过程。底层通过使用 TiDB Lightning 来进行集群恢复。
本文使用的恢复方式基于 TiDB Operator 新版(v1.1 及以上)的 CustomResourceDefinition (CRD) 实现。基于 Helm Charts 实现的备份和恢复方式可参考基于 Helm Charts 实现的 TiDB 集群备份与恢复。
以下示例将存储在 Google Cloud Storage (GCS) 上指定路径上的集群备份数据恢复到 TiDB 集群。
环境准备
下载文件
backup-rbac.yaml
,并执行以下命令在test2
这个 namespace 中创建恢复所需的 RBAC 相关资源:kubectl apply -f backup-rbac.yaml -n test2
创建
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
数据库账户权限
权限 | 作用域 |
---|---|
SELECT | Tables |
INSERT | Tables |
UPDATE | Tables |
DELETE | Tables |
CREATE | Databases, tables |
DROP | Databases, tables |
ALTER | Tables |
将指定备份数据恢复到 TiDB 集群
创建 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
创建好
Restore
CR 后可通过以下命令查看恢复的状态:kubectl get rt -n test2 -owide
以上示例将存储在 GCS 上指定路径 spec.gcs.path
的备份数据恢复到 TiDB 集群 spec.to.host
。关于 GCS 的配置项可以参考 backup-gcs.yaml 中的配置。
更多 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 类型。.spec.storageSize
:恢复集群时指定所需的 PV 大小。该值应大于备份 TiDB 集群数据的大小。
注意:
TiDB Operator 会创建一个 PVC,用于数据恢复,备份数据会先从远端存储下载到 PV,然后再进行恢复。如果恢复完成后想要删掉这个 PVC,可以参考删除资源先把恢复 Pod 删掉,然后再把 PVC 删掉。
故障诊断
在使用过程中如果遇到问题,可以参考故障诊断。