SuperAPI AI 工具集

data-backup-patterns

部署与运维

查看项目

更新于 10-15 09:40

技能介绍

概述

Data Backup Patterns 是一套围绕数据备份与恢复的实践模式集合,目标是用自动化、可测试、可恢复的方式保护数据。资料以策略框架、代码示例和反模式清单的形式组织,覆盖数据库、文件系统与云存储三类场景。

备份策略框架

3-2-1 规则:数据的 3 份副本(1 份主数据 + 2 份备份)、2 种不同的存储介质/类型、1 份异地副本。

备份类型对比:

类型 速度 存储占用 恢复 建议频率
全量(Full) 慢 大 快 每周
增量(Incremental) 快 小 慢(依赖链) 每日
差异(Differential) 中 中 中(依赖上次全量) 每日
快照(Snapshot) 即时 视情况 快 每小时

数据库备份

PostgreSQL:提供的 bash 脚本使用 pg_dump 以 custom 格式、压缩级别 9 导出为 .sql.gz 文件,并通过 pg_restore --list 校验备份有效性,最后输出文件大小。

时间点恢复(WAL 归档):在 postgresql.conf 中开启 archive_mode = on,配置 archive_command 将 WAL 文件复制到归档目录;恢复时通过 restore_command 与 recovery_target_time 恢复到指定时间点。

Redis:可用 redis-cli BGSAVE 触发 RDB 快照;或在 redis.conf 中设置 appendonly yes、appendfsync everysec 启用 AOF 以实现时间点恢复。

文件系统备份

基于 rsync:脚本通过 rsync -av --delete --link-dest 利用硬链接实现增量备份,每次备份生成带时间戳的目标目录,并更新 latest 符号链接指向最新备份。

排除规则:资料给出了 .backup-exclude 示例,排除 .git/、node_modules/、.venv/、__pycache__/、*.pyc、.env.local、*.secret、tmp/、.build/ 等目录与文件。

加密

GPG:使用 gpg --symmetric --cipher-algo AES256 加密备份文件,恢复时用 gpg --decrypt 解密。

age(现代替代方案):用 age-keygen -o key.txt 生成密钥对,使用 age -r <公钥> 加密、age -d -i key.txt 解密。

轮换策略

资料提供了 Python 类 BackupRotator,接收备份目录与保留数量参数(keep_daily=7、keep_weekly=4、keep_monthly=12)。其 rotate() 方法按修改时间排序备份文件,保留最近的每日备份,并为每周、每月各挑选最接近目标时间的备份,其余文件删除。

云存储

S3 兼容上传:脚本使用 aws s3 cp 上传备份,指定 --storage-class STANDARD_IA 与 --sse AES256 服务端加密,路径前缀按年月组织。资料建议在 S3 生命周期规则中配置自动归档,例如 30 天后转 Glacier、365 天后转 Deep Archive。

自动化调度

cron:示例为每日 2 点执行 backup-daily.sh、每周日 3 点执行 backup-weekly.sh,日志追加输出到 /var/log/backup.log。

launchd(macOS):给出 ~/Library/LaunchAgents/com.backup.daily.plist 示例,通过 StartCalendarInterval 设置每日 2 点 0 分执行备份脚本。

恢复测试

自动化恢复测试脚本接收备份文件路径作为参数,创建带时间戳的临时测试库,用 pg_restore 还原,随后查询表中行数校验数据完整性;示例要求行数不少于 50,否则判定失败并清理测试库,通过则输出成功信息后删除测试库。

反模式

资料列出的反模式包括:未测试的备份(未恢复过的备份不算备份)、敏感数据未加密(静态备份应始终加密)、单一存储位置(应遵循 3-2-1 规则)、无轮换(备份无限增长会占满存储)、纯手工备份(应全面自动化)、无监控(备份失败应立即告警)。

限制

资料未说明该模式的许可证、适用平台版本范围、维护状态与作者支持渠道,这些信息暂未提供。