pgBackRest: 特性

四月 9, 2024

摘要:pgBackRest 是一种可靠的 PostgreSQL 备份和恢复解决方案,本部分文档向您介绍了它的主要功能。

目录

并行备份和恢复

压缩通常是备份操作期间的瓶颈,因此 pgBackRest 通过并行处理和更高效的压缩算法(如 lz4 和 zstd)解决了这个问题。

本地或远程操作

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

多个存储库

支持多个存储库。例如,采用具有最少保留期的本地存储库进行快速恢复,以及采用具有较长保留期的远程存储库,以实现冗余和企业内的集中备份。

全量备份、差异备份和增量备份(文件或块级别)

支持全量备份、差异备份和增量备份。pgBackRest 不受 rsync 时间解析问题的影响,确保了差异备份和增量备份的安全,而无需对每个文件进行校验和。块级备份仅复制已更改的文件部分,以节省备份空间。

备份轮换和归档过期

可以为全量备份和差异备份设置保留策略,以创建覆盖任何时间范围的保留期。可以针对所有备份维护 WAL 归档文件,也可以严格针对最新备份进行维护。在后一种情况下,使旧备份保持一致所需的 WAL 文件会保留在归档中。

备份完整性

为备份中的每个文件计算校验和,并在还原或验证期间重新检查。在一次备份完成文件复制后,会一直等到使备份保持一致所需的每个 WAL 段到达存储库。

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

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

页面校验和

如果启用了页面校验和,pgBackRest 会验证备份期间复制的每个文件的校验和。在全量备份期间会验证所有页面校验和,在差异备份和增量备份期间会验证已更改文件中的校验和。

验证失败不会停止备份过程,但会输出警告到控制台和日志文件,其中包含了哪些页面未通过验证的详细信息。

此功能允许,在包含有效数据副本的备份过期之前,及早检测到页面级损坏。

备份重启

中断的备份可以从停止的位置恢复。已经复制过的文件,会与清单中的校验和进行比较,以确保完整性。由于此操作可以完全在存储库主机上进行,因此它减少了 PostgreSQL 主机上的负载并节省了时间,因为校验和计算比压缩和重新传输数据更快。

流压缩和校验和

压缩跟校验和计算,是在将文件复制到存储库的过程中执行的,无论存储库位于本地还是远程。

如果存储库位于一个存储库主机上,则在 PostgreSQL 主机上执行压缩,以压缩格式传输文件,并简单地存储在存储库主机上。禁用压缩时,会采用一种较低级别的压缩来有效利用可用带宽,同时将 CPU 成本降至最低。

增量还原

清单包含了备份中每个文件的校验和,因此在还原期间可以使用这些校验和,来大大加快处理速度。在增量还原中,首先会删除备份中不存在的任何文件,然后为其余文件生成校验和。与备份匹配的文件会保留在原位,其余文件将照常还原。并行处理可以大大缩短还原时间。

并行、异步的 WAL 推送和获取

提供了专用的命令,用于将 WAL 文件推送到归档,和从归档获取 WAL 文件。这两个命令都支持并行,以加速处理和异步运行,以提供对 PostgreSQL 的最快响应时间。

WAL 推送会自动检测多次推送的 WAL 段文件,并在段文件相同时进行重复数据删除,不然会引发错误。异步 WAL 推送允许将传输交接给另一个进程,该进程并行压缩 WAL 段文件以获得最大吞吐量。对于写入量极高的数据库来说,这可能是一个关键功能。

异步 WAL 获取维护了一个 WAL 段文件的本地队列,这些段文件已经解压缩并准备好重放。这减少了向 PostgreSQL 提供 WAL 所需的时间,从而最大限度地提高了重放速度。高延迟的连接和存储(如 S3)会受益最大。

推送和获取命令,会比较 PostgreSQL 版本和系统标识符,来确保数据库和存储库匹配。这实际上消除了错误配置 WAL 归档位置的可能性。

表空间和链接支持

表空间是完全受支持的,并且在恢复时,表空间可以重新映射到任何位置。还可以使用单个命令,将所有表空间重新映射到一个位置,这对于开发环境的还原很有用。

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

支持 S3、Azure 和 GCS 兼容性对象存储

pgBackRest 存储库可以位于 S3、Azure 和 GCS 兼容的对象存储中,以实现几乎无限的容量和保留。

加密

pgBackRest 可以加密存储库以保护备份,无论它们存储在何处。

与 PostgreSQL 的十个版本兼容

pgBackRest 支持 PostgreSQL 最近的 10 个版本,包括 5 个当前支持版本和最后 5 个 EOL 版本。这样就有充足的时间升级到一个支持的版本。