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 的专用命令。

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

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

表空间和链接支持

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

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

与 PostgreSQL >= 8.3 的兼容性

pgBackRest 包括对 8.3 及更低版本的支持,因为较旧版本的 PostgreSQL 仍然经常使用。

关于

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

Crunchy Data 支持 pgBackRest 的持续和积极开发,作为一个完全开源的项目,以 BSD 兼容的 MIT 许可证发布。