外观
TiDB 全量备份
全量备份是 TiDB 备份恢复体系中的重要组成部分,用于备份 TiDB 集群的所有数据。TiDB 提供了多种全量备份方式,包括使用 BR(Backup & Restore)工具、TiDB Operator 的备份功能以及第三方备份工具。本文档主要介绍使用 BR 工具进行 TiDB 全量备份的配置、操作步骤和最佳实践。
BR 工具介绍
BR(Backup & Restore)是 TiDB 官方提供的备份恢复工具,用于对 TiDB 集群进行全量备份和增量备份。BR 工具具有以下特点:
- 高效备份恢复:基于 SST 文件的直接备份和恢复,避免了 SQL 层面的转换,备份恢复速度快
- 分布式架构:支持分布式备份和恢复,充分利用集群资源
- 灵活的备份存储:支持将备份数据存储到本地磁盘、S3、GCS、Azure Blob Storage 等多种存储介质
- 增量备份支持:支持基于全量备份的增量备份,减少备份数据量和备份时间
- 加密和压缩:支持备份数据的加密和压缩,提高数据安全性和存储效率
BR 工具安装
1. 使用 TiUP 安装
bash
# 安装 BR
tiup install br
# 查看 BR 版本
tiup br --version2. 从源码编译
bash
# 克隆 TiDB 源码
mkdir -p $GOPATH/src/github.com/pingcap
cd $GOPATH/src/github.com/pingcap
git clone https://github.com/pingcap/tidb.git
# 进入 BR 目录
cd tidb/br
# 编译 BR
go build -o br
# 将 BR 移动到 PATH 目录
mv br /usr/local/bin/全量备份准备
1. 环境准备
- TiDB 版本:BR 工具的版本应与 TiDB 集群的版本保持一致
- 权限要求:执行 BR 备份命令的用户需要具有 TiDB 集群的管理员权限
- 存储介质:准备足够空间的存储介质,用于存储备份数据
- 网络连接:确保 BR 工具能够访问 TiDB 集群和存储介质
2. 配置文件准备
BR 工具支持通过配置文件指定备份参数,配置文件格式为 TOML。以下是一个示例配置文件:
toml
# br-backup.toml
[global]
# 日志级别
log-level = "info"
# PD 地址
pd = "127.0.0.1:2379"
[backup]
# 备份存储路径
storage = "local:///backup/full"
# 备份并发数
concurrency = 16
# 是否压缩备份数据
compression = true
# 压缩级别(1-9,默认为 6)
compression-level = 6执行全量备份
1. 基本语法
bash
tiup br backup full --pd <pd-address> --storage <storage-path> [options]2. 本地磁盘备份
2.1 单节点本地备份
bash
# 执行全量备份到本地磁盘
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full-$(date +%Y%m%d%H%M%S)2.2 分布式本地备份
bash
# 执行分布式全量备份到本地磁盘
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full-$(date +%Y%m%d%H%M%S) --concurrency 163. S3 备份
3.1 基本 S3 备份
bash
# 执行全量备份到 S3
tiup br backup full --pd 127.0.0.1:2379 --storage s3://tidb-backup/full-$(date +%Y%m%d%H%M%S) --s3.endpoint https://s3.amazonaws.com --s3.access-key <access-key> --s3.secret-access-key <secret-access-key>3.2 S3 备份(使用 IAM 角色)
bash
# 执行全量备份到 S3(使用 IAM 角色)
tiup br backup full --pd 127.0.0.1:2379 --storage s3://tidb-backup/full-$(date +%Y%m%d%H%M%S) --s3.endpoint https://s3.amazonaws.com --s3.iam-role <iam-role-arn>4. GCS 备份
bash
# 执行全量备份到 GCS
tiup br backup full --pd 127.0.0.1:2379 --storage gs://tidb-backup/full-$(date +%Y%m%d%H%M%S) --gcs.project-id <project-id> --gcs.credentials-file <credentials-file>5. Azure Blob Storage 备份
bash
# 执行全量备份到 Azure Blob Storage
tiup br backup full --pd 127.0.0.1:2379 --storage azure://tidb-backup/full-$(date +%Y%m%d%H%M%S) --azure.account-name <account-name> --azure.account-key <account-key>6. 使用配置文件执行备份
bash
# 使用配置文件执行全量备份
tiup br backup full --config br-backup.toml全量备份高级选项
1. 压缩备份数据
bash
# 执行压缩全量备份
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --compression --compression-level 92. 加密备份数据
bash
# 生成加密密钥
openssl rand -hex 32 > backup.key
# 执行加密全量备份
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --encrypt --key-file backup.key3. 指定备份范围
3.1 按数据库备份
bash
# 只备份指定数据库
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --db db1,db23.2 按表备份
bash
# 只备份指定表
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --table db1.t1,db2.t24. 调整并发数
bash
# 调整备份并发数
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --concurrency 325. 设置超时时间
bash
# 设置备份超时时间(单位:秒)
tiup br backup full --pd 127.0.0.1:2379 --storage local:///backup/full --timeout 3600查看备份状态
1. 实时查看备份进度
在执行 BR 备份命令时,BR 工具会实时输出备份进度信息,包括已备份的数据量、备份速度、剩余时间等。
2. 查看备份历史
bash
# 查看备份历史
tiup br list --pd 127.0.0.1:2379 --storage local:///backup3. 查看备份详情
bash
# 查看指定备份的详情
tiup br status --pd 127.0.0.1:2379 --storage local:///backup/full-20230101000000全量备份最佳实践
1. 备份策略设计
- 定期全量备份:根据业务需求和数据变化频率,制定定期全量备份计划,如每天、每周或每月执行一次全量备份
- 增量备份配合:在全量备份的基础上,定期执行增量备份,减少备份数据量和备份时间
- 备份保留策略:根据业务需求和存储成本,制定合理的备份保留策略,定期清理过期备份
- 多副本备份:将备份数据存储到多个不同的存储介质或地理位置,提高备份数据的安全性
2. 备份性能优化
- 合理设置并发数:根据 TiKV 集群的规模和资源情况,合理设置备份并发数,避免对生产集群造成过大压力
- 选择合适的备份时间:在业务低峰期执行备份操作,减少对生产集群的影响
- 使用压缩功能:启用备份数据压缩,减少备份数据量和存储成本
- 优化存储介质:使用高性能的存储介质,如 SSD,提高备份速度
3. 备份安全性
- 加密备份数据:对敏感数据进行加密备份,保护数据安全
- 访问控制:限制备份数据的访问权限,只有授权用户才能访问备份数据
- 定期验证备份:定期验证备份数据的完整性和可用性,确保备份数据可以正常恢复
- 备份日志审计:记录备份操作日志,便于审计和追溯
4. 备份监控和告警
- 监控备份进度:实时监控备份进度,及时发现备份异常
- 设置备份告警:当备份失败或超时,发送告警通知相关人员
- 记录备份日志:详细记录备份操作日志,便于后续分析和排查问题
常见问题(FAQ)
Q1: 全量备份会影响 TiDB 集群的性能吗?
A1: 全量备份会对 TiDB 集群的性能产生一定影响,主要体现在:
- 占用 TiKV 节点的 CPU、内存和磁盘 I/O 资源
- 增加网络流量
- 可能导致集群的读写延迟增加
建议在业务低峰期执行全量备份,或调整备份并发数,减少对生产集群的影响。
Q2: 如何估算全量备份的数据量?
A2: 可以通过以下方式估算全量备份的数据量:
- 查看 TiKV 节点的存储空间使用情况
- 使用
tiup cluster display命令查看集群的总数据量 - 参考历史备份的数据量
Q3: 全量备份失败怎么办?
A3: 全量备份失败后,可以通过以下步骤排查问题:
- 查看 BR 工具的日志,找出失败原因
- 检查 PD 地址是否正确
- 检查存储介质的空间是否充足
- 检查网络连接是否正常
- 检查 TiDB 集群的状态是否正常
Q4: 如何验证备份数据的完整性?
A4: 可以通过以下方式验证备份数据的完整性:
- 使用
tiup br validate命令验证备份数据的完整性 - 在测试环境中恢复备份数据,验证数据的可用性
- 比较备份前后的数据量和表结构
Q5: 全量备份需要多长时间?
A5: 全量备份的时间取决于以下因素:
- 数据量大小
- 备份并发数
- 存储介质的性能
- 网络带宽
- TiDB 集群的负载情况
一般来说,备份速度可以达到 100MB/s 到 1GB/s 不等。
Q6: 如何减少全量备份对生产集群的影响?
A6: 可以通过以下方式减少全量备份对生产集群的影响:
- 在业务低峰期执行备份
- 调整备份并发数,减少资源占用
- 使用 TiFlash 节点进行备份,避免影响 TiKV 节点的正常服务
- 采用增量备份配合全量备份的策略,减少全量备份的频率
Q7: 可以使用 BR 工具备份 TiDB 4.0 集群吗?
A7: BR 工具支持 TiDB 4.0 及以上版本的集群备份。对于 TiDB 4.0 以下版本的集群,可以使用 Dumpling 工具进行逻辑备份。
Q8: 如何将备份数据从本地磁盘迁移到云存储?
A8: 可以使用以下方式将备份数据从本地磁盘迁移到云存储:
- 使用云厂商提供的命令行工具,如 AWS CLI、gsutil、azcopy 等
- 使用第三方工具,如 rclone
- 配置 BR 工具直接备份到云存储
Q9: 全量备份支持断点续传吗?
A9: BR 工具不支持断点续传功能。如果备份过程中断,需要重新执行备份命令。
Q10: 如何清理过期的备份数据?
A10: 可以通过以下方式清理过期的备份数据:
- 手动删除过期的备份文件
- 使用脚本定期清理过期备份
- 配置存储介质的生命周期管理规则,自动清理过期备份
监控和故障排查
1. 关键监控指标
- 备份进度:实时监控备份进度,包括已备份的数据量、备份速度、剩余时间等
- 备份成功率:统计备份成功和失败的次数
- 备份时间:记录每次备份的开始时间、结束时间和耗时
- 备份数据量:记录每次备份的数据量大小
- 集群性能影响:监控备份过程中 TiDB 集群的性能指标,如 CPU 使用率、内存使用率、磁盘 I/O、网络流量等
2. 常见故障排查
2.1 备份失败 - PD 连接错误
可能原因:
- PD 地址错误
- PD 集群不可用
- 网络连接问题
解决方法:
- 检查 PD 地址是否正确
- 检查 PD 集群是否正常运行
- 检查网络连接是否正常
2.2 备份失败 - 存储介质错误
可能原因:
- 存储路径不存在
- 存储介质空间不足
- 存储介质权限不足
解决方法:
- 确保存储路径存在且有写入权限
- 检查存储介质的空间是否充足
- 检查存储介质的访问权限
2.3 备份失败 - TiKV 节点错误
可能原因:
- TiKV 节点不可用
- TiKV 节点负载过高
- TiKV 节点存储空间不足
解决方法:
- 检查 TiKV 节点是否正常运行
- 在业务低峰期重新执行备份
- 检查 TiKV 节点的存储空间是否充足
2.4 备份失败 - 超时
可能原因:
- 备份数据量过大
- 备份并发数设置不合理
- 存储介质性能不足
解决方法:
- 增加备份超时时间
- 调整备份并发数
- 使用性能更好的存储介质
