【免费下载链接】portabase
Portabase - Database backup & restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume
Portabase 是一款面向 PostgreSQL、MySQL、MariaDB、MsSQL、SQLite、MongoDB、Redis 及 Docker Volume 的开源数据库备份与恢复工具。本文带你像专家一样配置它的 GFS(Grandfather-Father-Son)保留策略,用"小时-日-周-月-年"多级保留,同时满足快速回滚和长期归档需求。
什么是GFS保留策略?为什么推荐它?
GFS(祖父-父亲-儿子)是业界经典的多级备份轮换策略,核心思想一句话概括:
近期备份留得多、恢复粒度细;远期备份留得少、保留时间长。
例如保留最近 24 小时的小时级备份、7 天日备份、4 周周备份、12 个月月备份、3 年年备份。这样你既能回滚到"一小时前",也能恢复到"三年前",而且总文件数可控、存储不爆炸。
Portabase 提供三种保留策略,其中 GFS 被官方标记为Recommended(推荐):
| 策略类型 | 适用场景 | 说明 |
|---|---|---|
| count(按数量) | 简单需求 | 只保留最近 N 份备份(1~100) |
| days(按天数) | 简单需求 | 保留 X 天内的备份(1~3650 天) |
| gfs(轮换) | 生产/关键系统 ⭐ | 小时/日/周/月/年五级保留,企业级标准 |
GFS 选项在界面上的介绍正是:"Grandfather-Father-Son rotation for enterprise/critical systems",即面向企业和关键系统的备份轮换方案。
一键配置步骤:在哪里设置保留策略?
配置入口只有两步:
- 进入项目中的某个数据库详情页;
- 打开Backup Retention Policy侧边抽屉,选择策略类型并填写数值,点击Save Retention Policy即可。
保存后,Portabase 的定时任务会按你的策略自动清理过期备份,全程无需手动干预。
策略配置界面说明
界面由三部分组成:
- 策略类型选择:count / days / GFS Rotation(GFS 带"Recommended"徽章,当前生效类型带"Actual"徽章);
- 数值配置区:GFS 模式下有 Hourly、Daily、Weekly、Monthly、Yearly 五个输入框;
- Storage Impact Summary(存储影响摘要):实时估算每个数据库会保留多少备份文件,并给出 Low / Medium / High 的用量等级,帮你提前预判存储成本。
相关界面源码在 retention-policy-form.tsx 和 retention-policy-sheet.tsx,保存逻辑由 retention-policy.action.ts 完成。
五级参数详解:小时-日-周-月-年保留范围
每个层级的含义是"每个时间桶内保留 1 份备份",可配置的保留范围如下:
| 层级 | 含义 | 保留范围 | 典型用途 |
|---|---|---|---|
| 🕐Hourly(小时) | 每小时桶保留最近 N 个小时 | 0 ~ 168(最长一周) | 快速回滚误操作 |
| 📅Daily(日) | 每日桶保留最近 N 天 | 1 ~ 31(必选至少 1) | 应对当天/近几天故障 |
| 🗓Weekly(周) | 每周桶保留最近 N 周 | 0 ~ 52 | 回滚到上周某版本 |
| 📆Monthly(月) | 每月桶保留最近 N 个月 | 0 ~ 120(最长 10 年) | 月度审计、季度对比 |
| 🏆Yearly(年) | 每年桶保留最近 N 年 | 0 ~ 50 | 合规归档、长期保存 |
填写为 0 表示禁用该层级。所有取值上限都在表单校验中严格限制,见 retention-policy.schema.ts。
官方默认值与数据库默认值
Portabase 有两组默认值,可以直接抄作业:
- 新建数据库时的数据库表默认值(07_database.ts):
hourly=0, daily=7, weekly=4, monthly=12, yearly=3 - 引导向导(Onboarding)推荐值(db-settings.ts):同样是
{hourly: 0, daily: 7, weekly: 4, monthly: 12, yearly: 3}
这是一套非常均衡的入门配置:约 26 份文件/数据库/年,覆盖"最近 7 天 + 最近 4 周 + 最近 12 个月 + 最近 3 年"。
⚠️ 小时层级的一个重要前提
界面对 Hourly 字段有一条醒目的黄色提示:默认RETENTION_CRON任务每天只跑一次,若不把该环境变量覆盖为至少每小时执行一次,小时层级不会生效。生产环境默认每天 07:00 执行一次保留清理(env.mjs)。所以:
- 想启用小时级保留 → 先确认备份任务本身按小时调度,并把
RETENTION_CRON调整为更高频率; - 备份每天一次 → 直接设
hourly=0,把预算留给日/周/月/年。
工作原理:Portabase如何自动执行GFS轮换?
配置保存后,背后是一条完整的自动化链路:
- 定时触发:保留任务由 cron 作业
retentionJob调度(tasks/index.ts),默认生产环境每天 07:00 运行; - 策略解析:任务遍历所有未删除的数据库,解析其生效策略(tasks/database/index.ts)。支持数据库级覆盖项目级——若数据库没有自己的保留策略,则继承所属项目的策略(policy-resolution.ts),方便统一管理;
- 分桶筛选:GFS 核心算法(retention-gsf.ts)按备份创建时间归入"小时桶 / 日桶 / 周桶(周一起始)/ 月桶 / 年桶",每个桶只保留第一份成功的备份,不在保留集合内的备份会被自动删除;
- 延迟清理:被标记删除的备份记录还会由独立的清理任务按
CLEANING_BACKUPS_RETENTION_DAYS分批彻底清除(backups-cleanup.ts)。
一句话总结:你只需要填 5 个数字,剩下的"分级晋升 + 过期淘汰"Portabase 全自动完成。
推荐配置方案:按场景选参数
| 场景 | Hourly | Daily | Weekly | Monthly | Yearly | 说明 |
|---|---|---|---|---|---|---|
| 🌱 入门/个人 | 0 | 7 | 4 | 12 | 3 | 官方默认,约 26 份文件,覆盖 3 年 |
| 💼 生产核心库 | 0 | 14 | 8 | 24 | 3 | 翻倍近期粒度,留 2 年月度归档 |
| 🚀 高频变更(需小时级) | 24 | 7 | 4 | 12 | 3 | 可回滚到 1 小时前,需配合小时级备份与更频繁的RETENTION_CRON |
| 🏛 合规归档 | 0 | 7 | 4 | 60 | 10 | 10 年年度归档 + 5 年月度,满足审计要求 |
💡 小技巧:每调整一次数值,界面上的Storage Impact Summary会立刻显示"预计保留文件数"和用量等级(≤10 份为 Low、≤30 份为 Medium、更多为 High),保存前先对照你的存储预算确认即可。
常见配置误区清单
- 误区 1:只填 Hourly、不填其他层级—— GFS 的价值在长期保留,小时层过期后没有兜底,务必保证
daily ≥ 1(该字段也强制最少为 1); - 误区 2:以为 Hourly 填了就能用—— 备份任务与
RETENTION_CRON都必须至少小时级调度,否则该层级形同虚设; - 误区 3:把 Monthly 拉到 120 就完事—— 年度层(最多 50 年)才是超长周期归档的主力,月度留太多只会挤压存储;
- 误区 4:每个数据库都单独配置—— 可以在项目级配置一套统一策略,数据库未单独配置时自动继承,需要差异化时再在数据库级覆盖。
总结:三步成为备份保留专家
- 选类型:生产环境直接选 GFS Rotation;
- 填五级:从官方默认
{0, 7, 4, 12, 3}出发,按场景上调; - 看摘要:用 Storage Impact Summary 核对文件数与存储用量,然后 Save。
配置完成后,Portabase 的定时任务会持续按策略自动轮换备份,小时级快速回滚 + 年級长期归档一次搞定——这就是企业级备份该有的样子。
📂 更多相关实现可参考:保留策略表单 retention-policy-form.tsx、GFS 执行逻辑 retention-gsf.ts、策略继承规则 policy-resolution.ts。
【免费下载链接】portabase
Portabase - Database backup & restore tool for PostgreSQL, MySQL, MsSQL, MariaDB, Firebird SQL, SQLite, MongoDB, Redis and Docker Volume
相关推荐
5分钟上手lib-jitsi-meet:新手必备的API调用示例与最佳实践
5分钟上手lib jitsi meet:新手必备的API调用示例与最佳实践 lib jitsi meet是一个功能强大的低级别JavaScript视频API,能
SCRFD:重新定义实时人脸检测的技术边界与商业价值
SCRFD:重新定义实时人脸检测的技术边界与商业价值 在实时人脸分析需求爆炸式增长的今天,传统检测算法面临着精度与效率难以兼顾的困境。SCRFD(Sample
人工智能计算机视觉深度学习拯救存储空间!Duplicati GFS备份策略让你的数据保留更智能
拯救存储空间!Duplicati GFS备份策略让你的数据保留更智能 你是否遇到过备份文件占用越来越多空间的问题?随着时间推移,无限制的备份版本不仅浪费存储空间
应用桌面应用CLI存储
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考