2025年9月25日: PostgreSQL 18 发布!

pgBackRest 1.0 发布

发布于 2016-04-17,作者 Crunchy Data

2016 年 4 月 17 日:Crunchy Data 自豪地发布 pgBackRest 1.0,可靠的 PostgreSQL 备份与恢复。

1.0 版本

pgBackRest 的首个稳定版本引入了新的、功能更强大的存储库格式、更简单的配置,并全面支持对符号链接目录和文件的备份与恢复。

pgBackRest 1.0 包含许多重要更改,因此在升级前请务必仔细阅读发布说明。

链接

新功能

多线程备份与恢复

压缩通常是备份操作的瓶颈,但即使在如今多核服务器随处可见的情况下,大多数数据库备份解决方案仍然是单线程的。pgBackRest 通过多线程解决了压缩瓶颈。

利用多个核心进行压缩,可以在 1Gb/s 的链路上传输 1TB/hr 的原始吞吐量。更多的核心和更大的带宽可以带来更高的吞吐量。

本地或远程操作

自定义协议允许 pgBackRest 通过 SSH 进行本地或远程备份、恢复和归档,只需最少的配置。通过协议层还提供了查询 PostgreSQL 的接口,因此无需远程访问 PostgreSQL,从而提高了安全性。

完全、增量和差异备份

支持完全、差异和增量备份。pgBackRest 不容易受到 rsync 的时间分辨率问题的影响,因此差异和增量备份完全安全。

备份轮换和归档过期

可以为完全和差异备份设置保留策略,以覆盖任何时间段。WAL 归档可以保留所有备份,或仅保留最近的备份。在后一种情况下,将保留 WAL 以使旧备份保持一致。

备份完整性

为备份中的每个文件计算校验和,并在恢复时重新检查。备份完成文件复制后,会等待所有使备份保持一致所需的 WAL 段到达存储库。

存储库中的备份以标准 PostgreSQL 集群(包括表空间)的相同格式存储。如果禁用压缩并启用硬链接,则可以将存储库中的备份进行快照,并直接在该快照上启动 PostgreSQL 集群。这对于传统恢复方式耗时巨大的 TB 级数据库来说非常有利。

所有操作都利用文件和目录级别的 fsync 来确保持久性。

备份恢复

中断的备份可以从停止的地方继续。已复制的文件会与清单中的校验和进行比较,以确保完整性。由于此操作可以在备份服务器上完全执行,因此可以减轻数据库服务器的负载,并节省时间,因为校验和计算比压缩和重新传输数据更快。

流式压缩与校验和

在将文件复制到存储库时,无论存储库位于本地还是远程,都会在流式传输中执行压缩和校验和计算。

如果存储库位于备份服务器上,则在数据库服务器上执行压缩,并将文件以压缩格式传输,然后在备份服务器上进行存储。禁用压缩时,会利用较低级别的压缩来有效利用可用带宽,同时将 CPU 成本降至最低。

差异恢复

清单包含备份中每个文件的校验和,因此在恢复时可以使用这些校验和来极大地加速处理。在差异恢复中,会首先删除备份中不存在的任何文件,然后对剩余文件进行校验和。与备份匹配的文件将保留在原位,其余文件将按正常方式恢复。由于此过程是多线程的,因此可以显著缩短恢复时间。

高级归档

包含用于将 WAL 推送到归档以及从归档检索 WAL 的专用命令。

push 命令会自动检测多次推送的 WAL 段,并在段相同时进行去重,否则会引发错误。push 和 get 命令都通过比较 PostgreSQL 版本和系统标识符来确保数据库和存储库匹配。这消除了 WAL 归档位置配置错误的可能。

异步归档允许将压缩和传输分载到另一个进程,该进程维护与远程服务器的持续连接,从而显著提高吞吐量。对于写量极高的数据库来说,这是一个关键功能。

表空间与链接支持

完全支持表空间,在恢复时可以将表空间重新映射到任何位置。也可以使用单个命令将所有表空间重新映射到一个位置,这对于开发环境下的恢复非常有用。

支持 PostgreSQL 集群中的任何文件或目录的文件和目录链接。恢复时,可以将所有链接恢复到其原始位置,重新映射部分或全部链接,或将部分或全部链接作为普通文件或目录恢复到集群目录中。

兼容 PostgreSQL >= 8.3

pgBackRest 支持最低至 8.3 的版本,因为旧版本的 PostgreSQL 仍在使用。

关于

pgBackRest 旨在成为一个简单、可靠的备份和恢复系统,可以无缝地扩展到最大的数据库和工作负载。pgBackRest 不依赖于 tar 和 rsync 等传统备份工具,而是内部实现了所有备份功能,并使用自定义协议与远程系统进行通信。摆脱对 tar 和 rsync 的依赖,可以更好地解决数据库特定的备份挑战。自定义远程协议提供了更大的灵活性,并限制了执行备份所需的连接类型,从而提高了安全性。

Crunchy Data 支持 pgBackRest 作为完全开源项目进行持续和积极的开发,该项目已根据与 BSD 兼容的 MIT 许可证发布。