外观
GaussDB 全量备份
物理全量备份
工具介绍
- gs_basebackup:GaussDB提供的物理备份工具,用于执行基础备份
- gs_probackup:GaussDB提供的专业备份工具,支持全量备份、增量备份和PITR恢复
使用gs_basebackup执行物理全量备份
配置要求
- 确保数据库已启用归档模式
- 配置合适的WAL_LEVEL参数(建议设置为replica或logical)
- 创建用于备份的用户,并授予合适的权限
执行命令
bash
# 基本语法
gs_basebackup -D /backup/path -F p -X stream -v -P
# 示例命令
gs_basebackup -h 127.0.0.1 -p 5432 -U backupuser -W -D /backup/gaussdb/full_backup_$(date +%Y%m%d_%H%M%S) -F p -X stream -v -P参数说明
-D:指定备份文件的存储目录-F:指定备份文件格式,p表示普通文件,t表示tar格式-X:指定WAL日志的备份方式,stream表示流式备份-v:启用详细输出-P:显示备份进度-h:指定数据库主机地址-p:指定数据库端口-U:指定备份用户-W:提示输入密码
使用gs_probackup执行物理全量备份
初始化备份目录
bash
gs_probackup init -B /backup/gaussdb/probackup添加实例
bash
gs_probackup add-instance -B /backup/gaussdb/probackup -D /data/gaussdb/data -p 5432 -u omm执行全量备份
bash
gs_probackup backup -B /backup/gaussdb/probackup -b full -p 5432查看备份信息
bash
gs_probackup show -B /backup/gaussdb/probackup逻辑全量备份
工具介绍
- pg_dump:GaussDB提供的逻辑备份工具,用于备份单个数据库
- pg_dumpall:GaussDB提供的逻辑备份工具,用于备份整个数据库集群
使用pg_dump执行逻辑全量备份
备份单个数据库
bash
# 备份为SQL文件
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d mydb -f /backup/gaussdb/mydb_full_$(date +%Y%m%d_%H%M%S).sql
# 备份为自定义格式文件
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d mydb -F c -f /backup/gaussdb/mydb_full_$(date +%Y%m%d_%H%M%S).dump参数说明
-d:指定要备份的数据库名-f:指定备份文件的输出路径-F:指定备份文件格式,c表示自定义格式,d表示目录格式,t表示tar格式
使用pg_dumpall执行逻辑全量备份
备份整个集群
bash
pg_dumpall -h 127.0.0.1 -p 5432 -U postgres -f /backup/gaussdb/cluster_full_$(date +%Y%m%d_%H%M%S).sql全量备份最佳实践
备份前准备
- 检查数据库状态,确保数据库正常运行
- 清理过期备份,释放存储空间
- 检查磁盘空间,确保有足够的空间存储备份文件
- 通知相关人员,避免在备份期间执行大规模数据操作
备份过程监控
- 监控备份进度,确保备份任务正常执行
- 记录备份开始时间和结束时间
- 检查备份日志,查看是否有错误或警告信息
- 验证备份文件的完整性和一致性
备份存储策略
- 备份文件应存储在独立的存储设备上,避免与数据库数据存储在同一设备
- 采用异地存储策略,避免本地灾难导致备份丢失
- 定期将备份文件复制到离线存储介质,如磁带或云存储
- 遵循3-2-1备份原则:3份备份,2种不同介质,1份异地存储
备份频率建议
- 数据量较小的数据库:每周执行一次全量备份
- 数据量较大的数据库:每两周或每月执行一次全量备份
- 结合增量备份和日志备份,提高备份效率和数据安全性
全量备份恢复
物理全量备份恢复
使用gs_basebackup备份恢复
- 停止数据库服务
- 清理或重命名现有数据目录
- 从备份目录恢复数据文件
- 恢复WAL日志(如果需要)
- 启动数据库服务
使用gs_probackup备份恢复
bash
# 停止数据库服务
gs_ctl stop -D /data/gaussdb/data
# 清理现有数据目录
rm -rf /data/gaussdb/data/*
# 执行恢复
gs_probackup restore -B /backup/gaussdb/probackup -D /data/gaussdb/data --instance instance_name --backup backup_id
# 启动数据库服务
gs_ctl start -D /data/gaussdb/data逻辑全量备份恢复
恢复SQL格式备份
bash
# 创建数据库
createdb -h 127.0.0.1 -p 5432 -U postgres mydb
# 恢复备份
psql -h 127.0.0.1 -p 5432 -U postgres -d mydb -f /backup/gaussdb/mydb_full_20230101_120000.sql恢复自定义格式备份
bash
# 创建数据库
createdb -h 127.0.0.1 -p 5432 -U postgres mydb
# 恢复备份
pg_restore -h 127.0.0.1 -p 5432 -U postgres -d mydb /backup/gaussdb/mydb_full_20230101_120000.dump备份验证
完整性验证
- 检查备份文件大小是否合理
- 使用校验和工具验证备份文件的完整性
- 检查备份日志,确认备份过程没有错误
可恢复性验证
- 定期进行恢复测试,确保备份文件可以正常恢复
- 测试恢复后的数据库是否可以正常启动和运行
- 验证恢复后的数据完整性和一致性
自动化验证
- 编写脚本自动验证备份文件的完整性
- 设置监控告警,当备份验证失败时及时通知管理员
- 集成到CI/CD流程中,确保每次备份后都进行验证
常见问题(FAQ)
Q1: 执行物理全量备份时需要停止数据库服务吗?
A1: 不需要。GaussDB的物理备份工具(如gs_basebackup和gs_probackup)支持在线备份,可以在数据库运行状态下执行备份,不影响正常业务。
Q2: 如何优化物理全量备份的性能?
A2: 优化物理全量备份性能的方法包括:
- 使用并行备份,提高备份速度
- 启用压缩功能,减少备份文件大小
- 在业务低峰期执行备份
- 使用高速存储设备存储备份文件
- 调整备份参数,如增加缓冲区大小
Q3: 逻辑备份和物理备份的区别是什么?
A3: 逻辑备份和物理备份的主要区别包括:
- 备份对象:逻辑备份备份逻辑结构和数据,物理备份备份物理文件
- 备份速度:物理备份速度快,逻辑备份速度慢
- 恢复速度:物理恢复速度快,逻辑恢复速度慢
- 跨版本兼容性:逻辑备份跨版本兼容性好,物理备份跨版本兼容性差
- 选择性备份:逻辑备份支持选择性备份,物理备份不支持
Q4: 如何确定全量备份的频率?
A4: 确定全量备份频率时应考虑以下因素:
- 数据变化频率:数据变化越频繁,备份频率应越高
- 数据重要性:数据越重要,备份频率应越高
- 备份窗口:备份需要在业务低峰期进行,避免影响正常业务
- 存储成本:备份频率越高,占用的存储空间越大,存储成本越高
Q5: 备份文件如何加密?
A5: GaussDB支持对备份文件进行加密,具体方法包括:
- 使用gs_probackup工具的加密功能,在备份时指定加密密钥
- 使用第三方加密工具对备份文件进行加密
- 存储备份文件的存储设备启用加密功能
Q6: 如何监控备份任务的执行情况?
A6: 监控备份任务执行情况的方法包括:
- 查看备份日志,了解备份进度和状态
- 使用监控工具监控备份进程和资源使用情况
- 设置备份任务告警,当备份任务失败或超时时及时通知管理员
- 定期检查备份任务的执行结果和备份文件的完整性
Q7: 全量备份和增量备份的关系是什么?
A7: 全量备份是增量备份的基础,增量备份只备份自上次备份以来发生变化的数据。通常采用"全量备份+增量备份+日志备份"的组合策略,既保证了数据安全性,又提高了备份效率。
Q8: 如何处理备份文件的过期问题?
A8: 处理备份文件过期问题的方法包括:
- 制定备份保留策略,如保留最近4周的全量备份,保留到下一次全量备份的增量备份和日志备份
- 使用脚本自动清理过期备份文件
- 定期检查备份存储情况,及时清理无用的备份文件
- 考虑使用增量备份和日志备份替代部分全量备份,减少备份文件数量
