使用 Dumpling 备份 TiDB 数据到兼容 Amazon S3 的存储

本文档介绍如何使用 Dumpling 将部署在 AWS EKS 上的 TiDB 集群数据备份到兼容 Amazon S3 的存储。Dumpling 是一款数据导出工具,可将 TiDB 或 MySQL 中的数据导出为 SQL 或 CSV 格式,用于全量数据备份或导出。

准备 Dumpling 节点池

你可以在现有节点池中运行 Dumpling,也可以创建一个专用节点池。以下是创建新节点池的配置示例,请根据实际情况替换以下变量:

  • ${clusterName}:EKS 集群名称
# eks_dumpling.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: ${clusterName} region: us-west-2 availabilityZones: ['us-west-2a', 'us-west-2b', 'us-west-2c'] nodeGroups: - name: dumpling instanceType: c5.xlarge desiredCapacity: 1 privateNetworking: true availabilityZones: ["us-west-2a"] labels: dedicated: dumpling

执行以下命令创建节点池:

eksctl create nodegroup -f eks_dumpling.yaml

部署 Dumpling Job

本章节介绍如何配置、部署以及监控 Dumpling Job。

配置 Dumpling Job

Dumpling Job 的配置文件 (dumpling_job.yaml) 示例如下。使用前,请替换以下变量:

  • ${name}:Job 名称
  • ${namespace}:Kubernetes 命名空间
  • ${version}:Dumpling 镜像版本
  • Dumpling 的相关参数,请参考 Dumpling 主要选项表
# dumpling_job.yaml --- apiVersion: batch/v1 kind: Job metadata: name: ${name} namespace: ${namespace} labels: app.kubernetes.io/component: dumpling spec: template: spec: nodeSelector: dedicated: dumpling affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/component operator: In values: - dumpling topologyKey: kubernetes.io/hostname containers: - name: ${name} image: pingcap/dumpling:${version} command: - /bin/sh - -c - | /dumpling \ --host=basic-tidb \ --port=4000 \ --user=root \ --password='' \ --s3.region=${AWS_REGION} \ --threads=16 \ --rows=20000 \ --filesize=256MiB \ --database=test \ --filetype=csv \ --output=s3://bucket-path/ env: - name: AWS_REGION value: ${AWS_REGION} - name: AWS_ACCESS_KEY_ID value: ${AWS_ACCESS_KEY_ID} - name: AWS_SECRET_ACCESS_KEY value: ${AWS_SECRET_ACCESS_KEY} - name: AWS_SESSION_TOKEN value: ${AWS_SESSION_TOKEN} restartPolicy: Never backoffLimit: 0

创建 Dumpling Job

执行以下命令创建 Dumpling Job:

export name=dumpling export version=v8.5.1 export namespace=tidb-cluster export AWS_REGION=us-west-2 export AWS_ACCESS_KEY_ID=<your-access-key-id> export AWS_SECRET_ACCESS_KEY=<your-secret-access-key> export AWS_SESSION_TOKEN=<your-session-token> # 可选 envsubst < dumpling_job.yaml | kubectl apply -f -

查看 Dumpling Job 状态

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

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

查看 Dumpling Job 日志

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

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

文档内容是否有帮助?