使用 TiDB Lightning 恢复 Google Cloud Storage (GCS) 上的备份数据

本文档介绍如何使用 TiDB LightningGoogle Cloud Storage (GCS) 上的备份数据恢复到 TiDB 集群。TiDB Lightning 是一款将全量数据高速导入到 TiDB 集群的工具,本文采用物理导入模式。有关 TiDB Lightning 的详细使用方式和配置参数,请参阅 TiDB Lightning 官方文档

以下示例展示了如何将 GCS 上的备份数据恢复到 TiDB 集群。

准备运行 TiDB Lightning 的节点池

你可以在现有节点池中运行 TiDB Lightning,也可以创建一个专用节点池。以下命令示例展示了如何创建一个新的节点池,请根据实际情况替换以下变量:

  • ${clusterName}:GKE 集群名称
gcloud container node-pools create lightning \ --cluster ${clusterName} \ --machine-type n2-standard-4 \ --num-nodes=1 \ --node-labels=dedicated=lightning

部署 TiDB Lightning Job

创建凭证 ConfigMap

将从 Google Cloud Console 下载的 service account key 文件保存为 google-credentials.json,然后使用以下命令创建 ConfigMap:

kubectl -n ${namespace} create configmap google-credentials --from-file=google-credentials.json

配置 TiDB Lightning Job

以下是 TiDB Lightning Job 的配置文件 (lightning_job.yaml) 示例,请根据实际情况替换以下变量:

  • ${name}:Job 名称
  • ${namespace}:Kubernetes 命名空间
  • ${version}:TiDB Lightning 镜像版本
  • ${storageClassName}:存储类名称
  • ${storage}:存储大小
  • TiDB Lightning 的相关参数,请参考 TiDB Lightning 配置参数
# lightning_job.yaml --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ${name}-sorted-kv namespace: ${namespace} spec: storageClassName: ${storageClassName} accessModes: - ReadWriteOnce resources: requests: storage: ${storage} --- apiVersion: v1 kind: ConfigMap metadata: name: ${name} namespace: ${namespace} data: config-file: | [lightning] level = "info" [checkpoint] enable = true [tidb] host = "basic-tidb" port = 4000 user = "root" password = "" status-port = 10080 pd-addr = "basic-pd:2379" --- apiVersion: batch/v1 kind: Job metadata: name: ${name} namespace: ${namespace} labels: app.kubernetes.io/component: lightning spec: template: spec: nodeSelector: dedicated: lightning affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/component operator: In values: - lightning topologyKey: kubernetes.io/hostname containers: - name: tidb-lightning image: pingcap/tidb-lightning:${version} command: - /bin/sh - -c - | /tidb-lightning \ --status-addr=0.0.0.0:8289 \ --backend=local \ --sorted-kv-dir=/var/lib/sorted-kv \ --d=gcs://external/testfolder?credentials-file=/etc/config/google-credentials.json \ --config=/etc/tidb-lightning/tidb-lightning.toml \ --log-file="-" volumeMounts: - name: config mountPath: /etc/tidb-lightning - name: sorted-kv mountPath: /var/lib/sorted-kv - name: google-credentials mountPath: /etc/config volumes: - name: config configMap: name: ${name} items: - key: config-file path: tidb-lightning.toml - name: sorted-kv persistentVolumeClaim: claimName: ${name}-sorted-kv - name: google-credentials configMap: name: google-credentials restartPolicy: Never backoffLimit: 0

创建 TiDB Lightning Job

执行以下命令创建 TiDB Lightning Job:

export name=lightning export version=v8.5.1 export namespace=tidb-cluster export storageClassName=<your-storage-class> export storage=250G envsubst < lightning_job.yaml | kubectl apply -f -

查看 TiDB Lightning Job 状态

运行以下命令查看 TiDB Lightning Job 的 Pod 状态:

kubectl -n ${namespace} get pod ${name}

查看 TiDB Lightning Job 日志

运行以下命令查看 TiDB Lightning Job 的日志输出:

kubectl -n ${namespace} logs pod ${name}

文档内容是否有帮助?