pgBackRest 是 PostgreSQL 的可靠备份和恢复解决方案,可无缝扩展到最大的数据库和工作负载。
pgBackRest v2.54.0 是当前的稳定版本。发行说明位于发行页面。
如果您喜欢 pgBackRest,请在 GitHub 上找到我们并给我们一颗星!
压缩通常是备份操作期间的瓶颈,因此 pgBackRest 通过并行处理和更高效的压缩算法(例如 lz4 和 zstd)解决了这个问题。
自定义协议允许 pgBackRest 以最少的配置通过 TLS/SSH 在本地或远程备份、恢复和存档。还通过协议层提供了查询 PostgreSQL 的接口,因此不需要远程访问 PostgreSQL,从而增强了安全性。
例如,多个存储库允许本地存储库具有最小的保留时间以实现快速恢复,而远程存储库则具有较长的保留时间以实现整个企业的冗余和访问。
支持完整备份、差异备份和增量备份。 pgBackRest 不易受到 rsync 时间分辨率问题的影响,从而使差异备份和增量备份安全,无需对每个文件进行校验和。块级备份通过仅复制文件中已更改的部分来节省空间。
可以为完整备份和差异备份设置保留策略,以创建任何时间范围的覆盖范围。可以为所有备份或严格为最近的备份维护 WAL 存档。在后一种情况下,使旧备份保持一致所需的 WAL 将保留在存档中。
为备份中的每个文件计算校验和,并在恢复或验证期间重新检查。备份完成文件复制后,它会等待,直到使备份一致所需的每个 WAL 段都到达存储库。
存储库中的备份可以采用与标准 PostgreSQL 集群(包括表空间)相同的格式存储。如果禁用压缩并启用硬链接,则可以在存储库中对备份进行快照,并直接在快照上启动 PostgreSQL 集群。这对于以传统方式恢复非常耗时的 TB 级数据库来说是有利的。
所有操作都利用文件和目录级别的 fsync 来确保持久性。
如果启用页面校验和,pgBackRest 将验证备份期间复制的每个文件的校验和。在完整备份期间验证所有页校验和,在差异备份和增量备份期间验证已更改文件中的校验和。
验证失败不会停止备份过程,但会向控制台和文件日志输出警告,其中详细说明哪些页面验证失败。
此功能允许在包含有效数据副本的备份过期之前及早检测到页级损坏。
中断的备份可以从停止点恢复。已复制的文件将与清单中的校验和进行比较,以确保完整性。由于此操作可以完全在存储库主机上进行,因此可以减少 PostgreSQL 主机上的负载并节省时间,因为校验和计算比压缩和重新传输数据更快。
当文件被复制到存储库时,压缩和校验和计算都会在流中执行,无论存储库位于本地还是远程。
如果存储库位于存储库主机上,则在 PostgreSQL 主机上执行压缩,文件以压缩格式传输并简单存储在存储库主机上。禁用压缩时,会使用较低级别的压缩来有效利用可用带宽,同时将 CPU 成本保持在最低水平。
清单包含备份中每个文件的校验和,以便在恢复过程中可以使用这些校验和来极大地加快处理速度。在增量恢复中,首先删除备份中不存在的任何文件,然后为剩余文件生成校验和。与备份匹配的文件将保留在原处,其余文件将照常恢复。并行处理可以显着减少恢复时间。
其中包含用于将 WAL 推送到存档以及从存档中获取 WAL 的专用命令。这两个命令都支持并行性以加速处理并异步运行以向 PostgreSQL 提供最快的响应时间。
WAL 推送会自动检测多次推送的 WAL 段,并在段相同时进行重复删除,否则会引发错误。异步 WAL 推送允许将传输卸载到另一个进程,该进程并行压缩 WAL 段以获得最大吞吐量。对于具有极高写入量的数据库来说,这可能是一个关键功能。
异步 WAL get 维护已解压并准备重放的 WAL 段的本地队列。这减少了向 PostgreSQL 提供 WAL 所需的时间,从而最大限度地提高了重放速度。较高延迟的连接和存储(例如 S3)受益最多。
Push 和 get 命令都通过比较 PostgreSQL 版本和系统标识符来确保数据库和存储库匹配。这实际上消除了错误配置 WAL 归档位置的可能性。
完全支持表空间,并且在恢复时可以将表空间重新映射到任何位置。还可以使用单个命令将所有表空间重新映射到一个位置,这对于开发恢复非常有用。
PostgreSQL 集群中的任何文件或目录都支持文件和目录链接。恢复时,可以将所有链接恢复到其原始位置,重新映射部分或所有链接,或者将部分或所有链接恢复为群集目录中的正常文件或目录。
pgBackRest 存储库可以位于 S3、Azure 和 GCS 兼容的对象存储中,以实现几乎无限的容量和保留。
pgBackRest 可以加密存储库以保护备份(无论备份存储在何处)。
pgBackRest 包括对 PostgreSQL 十个版本、五个受支持版本和最后五个 EOL 版本的支持。这允许有充足的时间升级到受支持的版本。
pgBackRest 力求易于配置和操作:
各种操作系统和 PostgreSQL 版本的用户指南。
命令行操作的命令参考。
创建 pgBackRest 配置的配置参考。
v1 的文档可以在这里找到。 v1 没有计划进一步发布,因为 v2 与 v1 选项和存储库向后兼容。
随时欢迎为 pgBackRest 做出贡献!请参阅我们的贡献指南,了解有关如何贡献功能、改进或问题的详细信息。
pgBackRest 在 MIT 许可下完全免费且开源。您可以将其用于个人或商业目的,不受任何限制。错误报告将得到非常严肃的对待,并将尽快得到解决。
通过适当的复制和备份策略创建强大的灾难恢复策略可能是一项非常复杂且艰巨的任务。您可能会发现您在架构阶段需要帮助和持续的支持,以确保您的企业继续平稳运行。
Crunchy Data 为主要操作系统提供 pgBackRest 的打包版本,并为 pgBackRest 和 PostgreSQL 的所有内容提供专业的全生命周期商业支持。 Crunchy Data 致力于提供没有供应商锁定的开源解决方案,确保始终严格维护与 pgBackRest 社区版本的交叉兼容性。
请访问 Crunchy Data 了解更多信息。
主要感谢 Stephen Frost 在 pgBackRest 开发过程中提供的所有宝贵建议和批评。
Crunchy Data 为 pgBackRest 贡献了大量时间和资源,并继续积极支持开发。 Resonate 还为 pgBackRest 的开发做出了贡献,并允许安装早期(但经过良好测试)版本作为其主要 PostgreSQL 备份解决方案。
扶手椅图形由 Sandor Szabo 设计。