使用 BR 在 Amazon S3 备份和恢复数据

TiDB 的备份恢复功能 Backup & Restore (BR) 支持将 Amazon S3 或支持 S3 协议的其他文件存储作为外部存储。

使用场景

使用 AWS S3 保存备份数据,方便你将部署在 AWS EC2 上的 TiDB 集群数据快速备份到 AWS S3 中,或者从 S3 中快速恢复出来一个 TiDB 集群。

配置访问 S3 权限

进行备份恢复之前需要先配置访问 S3 的权限。

S3 目录访问权限

在备份之前,为 BR 访问 S3 中的备份目录设置相应的访问权限。

  • 备份时 TiKV 和 BR 需要的最小权限,赋予备份数据目录 s3:ListBuckets3:PutObjects3:AbortMultipartUpload
  • 恢复时 TiKV 和 BR 需要的最小权限,赋予备份数据目录 s3:ListBuckets3:GetObject

如果你还没有创建备份数据保存目录,可以参照 AWS 官方文档在指定的 Region 区域中创建一个 S3 桶 Bucket;如果有需要,还可以参照 AWS 官方文档在 Bucket 中创建一个文件夹 Folder

配置访问 S3 的账户

推荐使用以下两种方式配置 S3 的账户。

  • 为运行 TiKV 和 BR 的 EC2 实例关联一个配置了访问 S3 访问权限的 IAM role,正确设置后,BR 可以直接访问对应的 S3 中的备份目录,而不需要额外的设置。

    1. br backup full --pd "${PDIP}:2379" --storage "s3://${Bucket}/${Folder}" --s3.region "${region}"
  • 通过 br 命令行参数设置访问 S3 的 access-keysecret-access-key, 同时设置 --send-credentials-to-tikv=true 将 access key 从 BR 传递到每个 TiKV 上。

    1. br backup full --pd "${PDIP}:2379" --storage "s3://${Bucket}/${Folder}?access-key=${accessKey}&secret-access-key=${secretAccessKey}" --s3.region "${region}" --send-credentials-to-tikv=true

在通常情况下,为了避免 access-key 等密钥信息记录在命令行中被泄漏,推荐使用为 EC2 实例关联 IAM role 的方法。

备份数据到 S3

  1. br backup full \
  2. --pd "${PDIP}:2379" \
  3. --storage "s3://${Bucket}/${Folder}?access-key=${accessKey}&secret-access-key=${secretAccessKey}" \
  4. --s3.region "${region}" \
  5. --send-credentials-to-tikv=true \
  6. --ratelimit 128 \
  7. --log-file backuptable.log

上述命令中,

  • --s3.region:表示 S3 存储所在的区域。
  • --send-credentials-to-tikv:表示将 S3 的访问权限传递给 TiKV 节点。

从 S3 恢复集群数据

  1. br restore full \
  2. --pd "${PDIP}:2379" \
  3. --storage "s3://${Bucket}/${Folder}?access-key=${accessKey}&secret-access-key=${secretAccessKey}" \
  4. --s3.region "${region}" \
  5. --ratelimit 128 \
  6. --send-credentials-to-tikv=true \
  7. --log-file restorefull.log

探索更多

如需了解 BR 支持的其他外部存储,请参阅外部存储