随着 PostgreSQL17 将于 2024 年秋季发布,数据库社区对一项关键的新功能感到兴奋:增量备份。与传统的完整备份相比,这种增强功能有望实现更快、更小的备份,从而显著提高备份效率,具体取决于备份之间更改的数据量。Barman 3.11 引入了一个名为“资源节省”的指标,该指标显示了与完整集群大小(完整备份)相比,通过进行增量备份所节省的资源的估计值。
本博客深入探讨了为什么此功能会改变游戏规则,以及它如何适应全面的备份策略。
增量备份如何提供更大的灵活性
增量备份是有效数据库备份策略的基石。它们通过仅备份自上次备份以来更改的数据来提供灵活性和效率。这种方法可以节省时间和存储空间,使其成为许多组织的有吸引力的选择。PostgreSQL 17 中的增量备份功能将为用户提供更大的备份例程灵活性。例如,常见的备份计划可能包括每周一次完整备份、每日增量备份和连续预写日志备份。这种组合为许多场景提供了备份类型、保护和时间点可恢复性的组合。
通过增量备份将恢复时间缩短 95%
在 EDB 支持的早期测试中,我们看到 PostgreSQL 的恢复时间有了显著改善,一次测试从 78 分钟缩短到仅 4 分钟,恢复时间缩短了近 95%。这种大幅减少的关键在于使用增量备份。
以下是它的工作原理:
- 完整备份与增量备份:完整备份会复制数据库中的所有内容,而增量备份仅捕获自上次备份以来所做的更改。
- 恢复过程: 通过定期进行完整备份并在两者之间添加增量备份,您可以显着加快恢复过程。您无需重放上次完整备份中的所有数据更改 (WAL),而只需应用较小的增量更改。
这种方法表明,使用增量备份不仅可以节省时间,还可以使恢复过程更加高效。
增强典型备份计划
全面的备份计划对于维护数据完整性和可用性至关重要。通常,每周完整备份由每日增量备份和连续归档日志备份补充。此设置可确保数据可以恢复到备份保留期内的任何时间点。此外,每个数据库都必须具有明确定义和测试的 RTO(恢复时间目标)和 RPO(恢复点目标),以确保备份方案满足用户期望。PostgreSQL 17 中引入的增量备份增强了 Postgres 备份和恢复功能的灵活性和效率,可满足不同的组织需求。
关键概念
了解 RTO 和 RPO 的重要性对于任何备份策略都至关重要。RTO 是指在发生故障后恢复数据库所需的时间,而 RPO 表示数据可能因事件而丢失的最长可容忍时间。PostgreSQL 17 中新的增量备份功能通过提供更高效的备份选项来支持这些目标,最重要的是,它可能更快地恢复。
功能细分
增量备份功能结合了几个新功能,这些功能共同支持创建和还原增量备份。虽然这些新功能功能强大且令人兴奋,但它们仍被视为 “基元” — 大型备份策略的基本构建块。拥有关键 PostgreSQL 数据库的企业将需要开发软件来按计划自动备份、管理备份元数据、实施保留策略和简化还原操作,或者使用提供这些功能的备份工具。
自动备份工具
Barman (Backup and Recovery Manager) 是一个 Postgres 备份工具,也是一个开源项目,其贡献者来自全球各地。Barman 最初由 2nd Quadrant 开发,在 2020 年收购 2nd Quadrant 后由 EDB 维护, 为 Postgres 提供强大的备份和恢复解决方案。Barman 的主要功能包括支持多个 Postgres 服务器、轻松配置备份保留策略、备份压缩、WAL 存档和 WAL 流 (RPO=0) 以及灵活的还原选项。EDB 还为 Barman 提供 24/7 全天候技术支持,确保用户可以为他们最关键的应用程序找到经验丰富的 Postgres 专业人员。
历史背景
Barman 是第一个提供增量备份的 PostgreSQL 备份工具,它使用 Linux 文件硬链接和 rsync 等创新技术进行文件级增量备份。这是当时 PostgreSQL 备份能力的重大增强。PostgreSQL 17 中的新增量备份功能 通过在 PostgreSQL 核心代码库中直接提供块级增量备份,扩展了早期的创新。
当前发展
EDB 的 Barman 开发团队一直在努力工作,以添加对 PostgreSQL 17 中新的增量备份功能集的支持。当 PostgreSQL 17 和 EDB Postgres Advanced Server 17 到来时,刚刚发布的 Barman 3.11 版本已经支持这些功能,为用户提供无缝过渡。您可以在此处阅读有关 Barman 3.11 如何支持增量备份的更多信息。
Barman 的企业级功能,包括多服务器备份、备份压缩和综合报告,使其成为有效管理 Postgres 备份的宝贵工具。
总结
PostgreSQL 17 中的增量备份功能代表了一次重大飞跃,为用户提高了备份效率和灵活性。
简而言之,您从增量备份中获得什么样的优势取决于您如何使用它。在某些情况下,您可以花更多时间进行备份并使用更多存储空间来缩短恢复时间,而在其他情况下,您可以接受更长的恢复时间,以节省存储空间和运行备份所花费的时间。Postgres 用户通过这项新功能获得了更多的控制和灵活性。
此功能与 Barman 的支持相结合,为管理 PostgreSQL 备份提供了强大的解决方案。我们期待看到这将对 PostgreSQL 社区产生的积极影响,并邀请大家与我们一起庆祝这一成就。感谢所有使这一切成为可能的贡献者。
致谢
PostgreSQL 17 中增量备份功能的开发是许多人辛勤工作和奉献的结果。特别感谢 EnterpriseDB 的首席数据库科学家 Robert Haas 以及审阅者和测试人员,他们花了一年多的时间确保该功能的成功集成。此外,我们还要感谢数据库工具工程总监 Martin Marques 和才华横溢的 EDB 开发人员,他们为支持 Barman 中的新功能集做出了贡献。他们的努力对 PostgreSQL 的备份和恢复功能产生了重大影响。
本博客由 David Wagoner 和 Tim Boutin 合著。