fgedu.net.cn
目录
一、基础概念
1.1 备份类型
- 全量备份:备份整个数据库集群的数据
- 增量备份:备份自上次备份以来的变更数据
- 日志备份:备份TiDB的binlog日志
1.2 备份工具
- BR(Backup & Restore):TiDB官方备份恢复工具,支持全量和增量备份
- Dumpling:逻辑备份工具,支持导出SQL格式的数据
- TiDB Lightning:高速导入工具,用于恢复Dumpling导出的数据
1.3 恢复类型
- 全量恢复:使用全量备份恢复整个集群
- 增量恢复:在全量备份的基础上应用增量备份
- 点恢复:恢复到指定时间点的数据状态
- 单库/表恢复:只恢复特定数据库或表的数据
二、规划建议
2.1 备份策略规划
- 备份频率:根据数据重要性和变化频率确定备份频率
- 备份保留期:根据业务需求和存储容量确定备份保留时间
- 备份存储:选择安全、可靠的存储介质,如S3、NFS等
- 备份验证:定期验证备份的可用性和完整性
- 灾备方案:制定完善的灾难恢复计划
2.2 备份工具选择
- BR工具:适用于全量备份和增量备份,备份速度快,恢复速度快
- Dumpling:适用于逻辑备份,支持导出特定数据库或表,便于跨版本迁移
- 混合使用:结合使用BR和Dumpling,满足不同场景的需求
2.3 恢复策略规划
- 恢复时间目标(RTO):根据业务需求确定恢复时间目标
- 恢复点目标(RPO):根据业务需求确定数据丢失容忍度
- 恢复测试:定期进行恢复测试,确保备份的可用性
- 恢复流程:制定详细的恢复流程和操作步骤
三、实施方案
3.1 使用BR工具备份
全量备份
# 备份到本地存储
tiup br backup full --pd "192.168.1.10:2379" --storage "local:///tidb/backup/full/20240409"
# 备份到S3存储
tiup br backup full --pd "192.168.1.10:2379" --storage "s3://tidb-backup/full/20240409?access-key=AKIAxxxx&secret-access-key=xxxx"
Full backup < BackupFull >:
Total regions: 1000
Remote regions: 0
Average backup speed: 100 MB/s
Backup size: 10 GB
Backup path: local:///tidb/backup/full/20240409
Backup status: Success
Duration: 1m30s
增量备份
# 基于上次全量备份创建增量备份
tiup br backup incremental --pd "192.168.1.10:2379" --storage "local:///tidb/backup/incremental/20240410" --last-backup "local:///tidb/backup/full/20240409"
Incremental backup < BackupIncremental >:
Total regions: 500
Remote regions: 0
Average backup speed: 80 MB/s
Backup size: 2 GB
Backup path: local:///tidb/backup/incremental/20240410风哥提示:
Backup status: Success
Duration: 30s
3.2 使用BR工具恢复
全量恢复
# 从本地存储恢复
tiup br restore full --pd "192.168.1.10:2379" --storage "local:///tidb/backup/full/20240409"
# 从S3存储恢复
tiup br restore full --pd "192.168.1.10:2379" --storage "s3://tidb-backup/full/20240409?access-key=AKIAxxxx&secret-access-key=xxxx"
Full restore < RestoreFull >:
Total regions: 1000
Remote regions: 0
Average restore speed: 120 MB/s
Restore size: 10 GB
Restore path: local:///tidb/backup/full/20240409
Restore status: Success
Duration: 1m15s
增量恢复
# 先恢复全量备份
tiup br restore full --pd "192.168.1.10:2379" --storage "local:///tidb/backup/full/20240409"
# 再恢复增量备份
tiup br restore incremental --pd "192.168.1.10:2379" --storage "local:///tidb/backup/incremental/20240410"
3.3 使用Dumpling备份
导出全库
# 导出全库
tiup dumpling -h 192.168.1.13 -P 4000 -u root -p root123 --output ./backup/dumpling/20240409
[2024/04/09 10:00:00] [INFO] [dump.go:100] dump database `fgedudb` started [2024/04/09 10:00:05] [INFO] [dump.go:150] dump table `fgedu_users` started [2024/04/09 10:00:10] [INFO] [dump.go:150] dump table `fgedu_orders` started [2024/04/09 10:00:15] [INFO] [dump.go:200] dump database `fgedudb` completed [2024/04/09 10:00:15] [INFO] [main.go:100] dump completed, total rows: 100000, total size: 500 MB, duration: 15s
导出特定数据库
# 导出特定数据库
tiup dumpling -h 192.168.1.13 -P 4000 -u root -p root123 -B fgedudb --output ./backup/dumpling/20240409
导出特定表
# 导出特定表
tiup dumpling -h 192.168.1.13 -P 4000 -u root -p root123 -B fgedudb -T fgedu_users,fgedu_orders --output ./backup/dumpling/20240409
3.4 使用TiDB Lightning恢复
恢复全库
# 配置文件 tidb-lightning.toml
[lightning]
backend = "local"
tmp-dir = "/tmp/tidb-lightning"
[mydumper]
source-dir = "./backup/dumpling/20240409"
[tidb]
host = "192.168.1.13"
port = 4000
user = "root"
password = "root123"
db-name = "fgedudb"
# 执行恢复
tiup tidb-lightning -config tidb-lightning.toml
[2024/04/09 11:00:00] [INFO] [main.go:100] TiDB Lightning started [2024/04/09 11:00:05] [INFO] [mydumper.go:50] reading metadata [2024/04/09 11:00:10] [INFO] [table.go:100] processing table `fgedu_users` [2024/04/09 11:00:30] [INFO] [table.go:100] processing table `fgedu_orders` [2024/04/09 11:01:00] [INFO] [main.go:150] TiDB Lightning completed, total rows: 100000, total size: 500 MB, duration: 1m
四、实战案例
4.1 企业级备份策略
场景:大型企业生产环境,需要制定完善的备份策略,确保数据安全。
步骤1:制定备份计划
# 全量备份:每天凌晨2点执行
0 2 * * * tiup br backup full --pd "192.168.1.10:2379" --storage "s3://tidb-backup/full/$(date +\%Y\%m\%d)" --log-file /tidb/log/backup-full-$(date +\%Y\%m\%d).log
# 增量备份:每小时执行一次
0 * * * * tiup br backup incremental --pd "192.168.1.10:2379" --storage "s3://tidb-backup/incremental/$(date +\%Y\%m\%d\%H)" --last-backup "s3://tidb-backup/full/$(date +\%Y\%m\%d)" --log-file /tidb/log/backup-incremental-$(date +\%Y\%m\%d\%H).log
# 逻辑备份:每周日执行一次
0 3 * * 0 tiup dumpling -h 192.168.1.13 -P 4000 -u root -p root123 --output s3://tidb-backup/dumpling/$(date +\%Y\%m\%d) --log-file /tidb/log/backup-dumpling-$(date +\%Y\%m\%d).log
学习交流加群风哥QQ113257174
步骤2:配置备份存储
# 创建S3存储桶
aws s3 mb s3://tidb-backup
# 配置存储生命周期
aws s3api put-bucket-lifecycle-configuration --bucket tidb-backup --lifecycle-configuration file://lifecycle.json
# lifecycle.json
{
"Rules": [
{
"ID": "Delete old backups",
"Status": "Enabled",
"Filter": {
"Prefix": "full/"
},
"Expiration": {
"Days": 30
}
},
{
"ID": "Delete old incremental backups",
"Status": "Enabled",
"Filter": {
"Prefix": "incremental/"
},
"Expiration": {
"Days": 7
}
},
{
"ID": "Delete old dumpling backups",
"Status": "Enabled",
"Filter": {
"Prefix": "dumpling/"
},
"Expiration": {
"Days": 60
}
}
]
}
步骤3:验证备份
# 检查备份文件
aws s3 ls s3://tidb-backup/full/
# 验证备份完整性
tiup br validate --storage "s3://tidb-backup/full/20240409"
Validation result: Success Backup size: 10 GB Total regions: 1000 Backup files: 10
4.2 灾难恢复演练
场景:定期进行灾难恢复演练,确保备份的可用性和恢复流程的有效性。
步骤1:准备恢复环境
# 部署测试集群
tiup cluster deploy test-cluster v7.5.0 test-topology.yaml --user root -p
tiup cluster start test-cluster
步骤2:执行恢复操作
# 从全量备份恢复
tiup br restore full --pd "192.168.2.10:2379" --storage "s3://tidb-backup/full/20240409"
# 应用增量备份
tiup br restore incremental --pd "192.168.2.10:2379" --storage "s3://tidb-backup/incremental/2024040912"
# 验证恢复结果
mysql -h 192.168.2.13 -P 4000 -u root -p -e "SELECT COUNT(*) FROM fgedudb.fgedu_users;"
mysql -h 192.168.2.13 -P 4000 -u root -p -e "SELECT COUNT(*) FROM fgedudb.fgedu_orders;"
+----------+ | COUNT(*) | +----------+ | 50000 | +----------+ +----------+ | COUNT(*) | +----------+ | 100000 | +----------+
步骤3:记录恢复时间
# 记录恢复开始时间
start_time=$(date +%s)
# 执行恢复操作
tiup br restore full --pd "192.168.2.10:2379" --storage "s3://tidb-backup/full/20240409"
# 记录恢复结束时间
end_time=$(date +%s)
# 计算恢复时间
duration=$((end_time - start_time))
echo "恢复时间:$duration 秒"
恢复时间:450 秒
五、经验总结
5.1 备份最佳实践
- 定期备份:根据数据重要性和变化频率制定合理的备份计划
- 多重备份:使用不同的备份工具和存储介质
- 异地备份:将备份存储在不同的地理位置
- 备份验证:定期验证备份的可用性和完整性
- 备份监控:监控备份过程,确保备份成功完成
- 存储管理:合理管理备份存储空间,定期清理过期备份
5.2 恢复最佳实践
- 定期演练:定期进行恢复测试,熟悉恢复流程
- 恢复计划:制定详细的恢复计划和操作步骤
- 恢复验证:恢复后验证数据的完整性和一致性
- 恢复时间监控:记录恢复时间,确保满足RTO要求
- 故障演练:模拟各种故障场景,测试恢复能力
5.3 常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 备份失败 | 网络问题、存储问题、权限问题 | 检查网络连接、存储状态、权限设置 |
| 恢复失败 | 备份文件损坏、版本不兼容、空间不足 | 验证备份完整性、使用兼容版本、确保足够空间 |
| 备份速度慢 | 网络带宽不足、存储性能差 | 优化网络环境、使用高性能存储 |
| 恢复速度慢 | 网络带宽不足、存储性能差 | 优化网络环境、使用高性能存储 |
| 备份占用空间大 | 数据量大、备份频率高 | 合理设置备份频率、使用增量备份、配置存储生命周期 |
5.4 备份与恢复检查清单
| 检查项 | 配置要求 | 状态 |
|---|---|---|
| 备份计划 | 制定合理的备份计划,包括全量和增量备份 | □ |
| 备份存储 | 选择安全、可靠的存储介质 | □ |
| 备份验证 | 定期验证备份的可用性和完整性 | □ |
| 恢复测试 | 定期进行恢复测试 | □ |
| 恢复计划 | 制定详细的恢复计划和操作步骤 | □ |
| 监控告警 | 监控备份过程,设置告警 | □ |
| 存储管理 | 合理管理备份存储空间 | □ |
| 文档更新 | 及时更新备份与恢复文档 | □ |
更多视频教程www.fgedu.net.cn
© 2024 TiDB数据库培训文档
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
