增量备份和使用 PgBackRest 进行 WAL 归档的区别

问题描述

据我所知

  • WAL 归档会在生成 WAL 文件时将 WAL 日志推送到存储位置
  • 增量备份正在推送自上次备份以来创建的所有 WAL 文件

所以,假设我的 WAL 归档设置正确

  1. 为什么我需要增量备份?
  2. 增量备份的成本不应该几乎为零吗?

我发现的大部分文档都侧重于高级实现(例如如何设置 WAL 归档或增量备份)与内部实现(当我触发增量备份时会发生什么)

我的问题可能可以通过指向某些文档的链接解决,但到目前为止我的 google-fu 让我失败了

解决方法

备份不是 WAL 文件的副本,而是集群整个数据目录的副本。正如 docs 中所说,增量备份包含:

自上次备份(可以是另一个增量备份、差异备份或完整备份)后发生更改的那些数据库集群文件

仅靠 WAL 不足以恢复数据库;它们只记录对集群文件的更改,因此它们需要备份作为起点。

需要定期备份(增量或其他方式)主要与恢复时间有关。从技术上讲,您可以只保留原始完整备份加上数年的 WAL 文件,但是在发生故障时重放它们可能需要数小时或数天,而且您可能无法忍受有点停机时间。

新的备份还意味着您可以安全地丢弃任何旧的 WAL(假设您仍然不需要它们进行时间点恢复),这意味着要存储的数据更少,并且您依赖其完整性的数据更少以便恢复。

如果您想更多地了解 pgBackRest 实际上在做什么,Postgres docs 中已详细介绍了所有内容。