使用 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}
使用 Dumpling 备份 TiDB 数据到兼容 Amazon S3 的存储更新于 4/24/2025, 9:06:48 AM: add dumpling-lightning-job (#2732) (#2750)