pgBackRest 差量备份 和 增量备份 有什么区别?
- 差量备份(diff):基于 最近的一次 full 备份 做变化对比
- 增量备份(incr):基于 最近的一次 backup(full/diff/incr 都算) 做变化对比
假设做了一个全量备份:
F1(Full)
📌 差量备份(Diff)
F1 ---- D1 (Diff,相对于 F1)
---- D2 (Diff,相对于 F1)
---- D3 (Diff,相对于 F1)
每次差量备份都要和 最近一次 full 比较,所以 diff 会不断变大。
📌 增量备份(Incr)
F1 ---- I1 (Incremental 相对于 F1)
---- I2 (Incremental 相对于 I1)
---- I3 (Incremental 相对于 I2)
每一次 incr 都是相对于 前一次备份,空间最小。
| 特性 | diff(差量) | incr(增量) |
|---|---|---|
| 对比基准 | 最近 full | 最近任何备份 |
| 周期内大小 | 越来越大 | 通常很小 |
| 恢复链长度 | Full + 1 个 diff | Full + 多个 incr |
| 恢复速度 | 更快(链短) | 更慢(链长) |
| 存储空间 | 更多 | 更少 |
| 适用场景 | 恢复优先 | 空间优先 |
📌 推荐备份策略
最常见的企业生产策略是:
每天 1 次 full
每 6 小时 1 次 diff
每小时 1 次 incr
原因:
- diff 让恢复不会太慢(链短)
- incr 让日常备份数据量最小
- full 让整个链不会无限长
这也是 pgBackRest 官方推荐方案。
恢复只需要:
Full + Diff + WAL
每天几十次 incr,但每次很小。
两者结合,兼顾:
- 恢复速度快
- 空间占用小
举例:
F1 -> D1 -> I1 -> I2 -> I3
如果你恢复 I3:
pgBackRest 会自动使用:
F1 + D1 + I1 + I2 + I3 + WAL
恢复链条越长,恢复越慢。
差量备份 Diff:永远基于 Full,备份内容越来越多;恢复时链短。
增量备份 Incr:永远基于上一次备份,内容最小;恢复时链长。