在 Azure Database for PostgreSQL 灵活服务器中进行备份和还原

适用于:Azure Database for PostgreSQL - 灵活服务器

备份是任何业务连续性策略不可或缺的部分。 它们有助于保护数据免于意外损坏或删除。

Azure Database for PostgreSQL 灵活服务器可以自动定期备份服务器。 这样,你便可以在指定的保留期内执行时间点恢复 (PITR)。 还原和恢复的总时间通常取决于数据大小和要执行的恢复量。

备份概述

Azure Database for PostgreSQL 灵活服务器获取数据文件的快照备份,并根据区域将它们安全地存储在区域冗余存储或本地冗余存储中。 服务器还会在预写日志 (WAL) 文件已准备好存档时备份事务日志。 可以使用这些备份将服务器还原到所配置的备份保留期中的任意时间点。

默认备份保留期为 7 天,但你可以将此期限延长为最大 35 天。 所有备份都通过针对静态存储数据的 AES 256 位加密进行加密。

无法导出这些备份文件,或使用它们在 Azure Database for PostgreSQL 灵活服务器外部创建服务器。 为此,可以使用 PostgreSQL 工具 pg_dump 和 pg_restore/psql。

备份频率

Azure Database for PostgreSQL 灵活服务器实例的备份以快照为基础。 第一次快照备份在创建服务器后立即进行计划。 快照备份当前每日创建一次。 如果在进行最后一次快照备份后,服务器中的任何数据库都没有收到任何进一步的修改,则快照备份将暂停,直到任何数据库中发生新的修改,此时系统将立即创建新快照。 第一个快照是完整备份,连续快照则是差异备份。

事务日志备份的发生频率不同,具体取决于工作负载和 WAL 文件已填充并准备好存档的时间。 一般情况下,延迟(恢复点目标,简称 RPO)最大可为 5 分钟。

备份冗余选项

Azure Database for PostgreSQL 灵活服务器存储备份的多个副本,以帮助保护计划和非计划的事件的数据。 这些事件可能包括暂时性硬件故障、网络中断或断电,以及自然灾害。 备份冗余有助于确保数据库即使在发生故障时也能满足其可用性和持续性目标。

Azure Database for PostgreSQL 灵活服务器提供 3 个选项:

  • 区域冗余备份存储:对于支持可用性区域的区域,会自动选择此选项。 将备份存储在区域冗余备份存储中时,不仅会将多个副本存储在相同可用性区域中,还会将它们复制到同一区域中的其他可用性区域。

    此选项提供跨可用性区域的备份数据可用性,并限制为在某个地区内复制数据,以满足数据驻留要求。 此选项在一年中提供至少 99.9999999999%(12 个 9)的备份对象持续性。

  • 本地冗余备份存储:对于不支持可用性区域的区域,会自动选择此选项。 将备份存储在本地冗余备份存储中时,会将多个备份副本都存储在同一数据中心内。

    此选项有助于保护数据免受服务器机架和驱动器故障的影响。 它在一年中提供至少 99.999999999%(11 个 9)的备份对象持续性。

    默认情况下,对于具有相同区域高可用性 (HA) 或无高可用性配置的服务器,备份存储将设置为本地冗余。

  • 异地冗余备份存储:可以在创建服务器时选择此选项。 将备份存储在异地冗余备份存储中时,不仅会将数据的三个副本存储在托管服务器的区域中,还会将数据复制到异地配对的区域。

    使用此选项可以在发生灾难时将服务器还原到其他区域。 它还在一年中提供至少 99.99999999999999%(16 个 9)的备份对象持续性。

    托管在任何 Azure 配对区域中的服务器都支持异地冗余。

从其他备份存储选项移动到异地冗余备份存储

只能在创建服务器期间为备份配置异地冗余存储。 预配服务器后,无法更改备份存储冗余选项。

备份保留

备份是根据你为服务器设置的保留期保留的。 可以选择 7 天(默认值)到 35 天的保留期。 可以在创建服务器期间设置保留期,也可以在以后更改保留期。 即使对于已停止的服务器,也会保留备份。

备份保持期用于决定可使用可用备份检索 PITR 的时间范围。 从还原的角度看,还可以将备份保留期视为恢复时段。

在备份保留期内执行 PITR 所需的所有备份都保留在备份存储中。 例如,如果备份保留期设置为 7 天,则恢复时段是过去 7 天。 在这种情况下,将保留在过去 7 天内还原和恢复服务器所需的所有数据与日志。

备份存储成本

Azure Database for PostgreSQL 灵活服务器最高可以提供 100% 的已预配服务器存储大小作为备份存储,不收取额外费用。 使用的任何额外备份存储每月按 GiB 数收费。

例如,如果为服务器预配了 250 GiB 的存储,则有 250 GiB 不额外收费的备份存储容量。 如果每日备份使用量为 25 GiB,则最多可有 10 天的免费备份存储。 超出 250 GiB 的备份存储消耗量按定价模型的规定收费。

如果为服务器配置了异地冗余备份,则还会将备份数据复制到 Azure 配对区域。 因此,备份大小将是本地备份副本大小的两倍。 费用的计算方式如下:( (2 x 本地备份大小) - 预配的存储大小 ) x 价格(按 GiB/月)

可以使用 Azure 门户中的“已使用的备份存储”指标来监视服务器消耗的备份存储。 “已使用的备份存储”指标表示根据为服务器设置的备份保留期,保留的所有数据库备份和日志备份消耗的存储总和。

注意

不管数据库大小如何,服务器上的繁重事务活动都会生成更多的 WAL 文件。 而文件的增加又会增大备份存储的使用量。

时间点恢复

在 Azure Database for PostgreSQL 灵活服务器中,执行 PITR 会在源服务器所在的区域中创建新服务器,但你可以选择可用性区域。 该服务器是使用源服务器的定价层、计算代系、虚拟核心数、存储大小、备份保留期和备份冗余选项的配置创建的。 此外,还会从源服务器继承标记和设置,例如虚拟网络和防火墙设置。

首先,将物理数据库文件从快照备份还原到服务器的数据位置。 这会自动选择并还原所需时间点之前进行的相应备份。 然后,使用 WAL 文件启动恢复过程,使数据库处于一致状态。

例如,假设在每晚 11 点执行备份。 如果还原点适用于 8 月 15 日上午 10 点,则将还原 8 月 14 日的每日备份。 将使用从 8 月 14 日晚上 11 点到 8 月 15 日上午 10 点的事务日志备份来恢复 8 月 15 日上午 10 点之前的数据库状态。

若要还原数据库服务器,请参阅这些步骤

重要

Azure Database for PostgreSQL 灵活服务器中的还原操作始终使用提供的名称创建新的数据库服务器。 它不会覆盖现有的数据库服务器。

PITR 可用于如下场景:

  • 用户意外删除了数据、表或数据库。
  • 应用程序因自身缺陷而意外以错误数据覆盖了正确数据。
  • 你希望克隆服务器来进行测试、开发或数据验证。

由于事务日志的连续备份,你能够还原到最近的事务。 可以从以下还原选项中选择:

  • 最新还原点(现在):这是允许将服务器还原到最新时间点的默认选项。

  • 自定义还原点:通过此选项,可在为此 Azure Database for PostgreSQL 灵活服务器实例定义的保持期内选择任何时间点。 默认情况下,会自动选择最近的 UTC 时间。 如果你要还原到上次提交的事务进行测试,则自动选择时间非常有用。 可根据需要选择其他日期和时间。

  • 最快还原点:通过此选项,用户能够以尽可能最快的速度将服务器还原到为其 Azure Database for PostgreSQL 灵活服务器定义的保留期内的日期。 可以通过直接从备份列表中选择时间戳来实现速度最快的还原。 此还原操作预配服务器且仅还原完整的快照备份,并不要求恢复日志,因此速度很快。 建议为选择一个晚于最早还原时间点的备份时间戳,以便成功执行还原操作。

使用最新还原点和自定义还原点选项进行恢复所需的时间因各种因素而异,例如要处理的自上次备份以来的事务日志量和在同一区域中同时恢复的数据库总数。总恢复时间通常需要几分钟到几个小时。

如果在虚拟网络中配置了服务器,可将其还原到同一虚拟网络或不同虚拟网络。 但是,无法还原到公共访问网络。 同样,如果为服务器配置了公共访问,则无法还原为专用虚拟网络访问。

重要

可以还原删除的服务器。 如果删除了服务器,可以按照我们的指南《还原已删除的 Azure Database for Azure Database for PostgreSQL 灵活服务器》进行恢复。 使用 Azure 资源锁帮助防止意外删除服务器。

异地冗余备份和还原

若要从 Azure 门户中的“计算 + 存储”窗格启用异地冗余备份,请参阅快速入门指南

重要

只能在创建服务器时配置异地冗余备份。

为服务器配置异地冗余备份后,可以将其还原到异地配对区域。 有关详细信息,请参阅异地冗余备份支持的区域

为服务器配置异地冗余备份后,备份数据和事务日志将通过存储复制以异步方式复制到配对区域。 创建服务器后,请等待至少一小时,然后启动异地还原。 这将使第一组备份数据可以复制到配对区域。

之后,事务日志和每日备份将以异步方式复制到配对区域。 数据传输可能会出现最多一小时的延迟。 因此,在还原时,RPO 应最多不超过一小时。 只能还原到配对区域中最后提供的备份数据。 目前不提供异地冗余备份的 PITR。

恢复服务器的估计时间(恢复时间目标,简称 RTO)取决于多种因素,例如数据库的大小、上次数据库备份时间和在上次接收备份数据之前处理的 WAL 量。 整个恢复时间通常需要几分钟到几小时。

在异地还原期间,可更改的服务器配置包括虚拟网络设置以及从还原的服务器中删除异地冗余备份的能力。 不支持在异地还原期间更改其他服务器配置,例如计算、存储或定价层(“可突发”、“常规用途”或“内存优化”)。

有关执行异地还原的详细信息,请参阅操作指南

重要

当主要区域发生故障时,无法在相应的异地配对区域中创建异地冗余服务器,因为无法在主要区域中预配存储。 在异地配对区域中预配异地冗余服务器之前,必须先等待主要区域恢复正常运行。

在主要区域发生故障时,仍可将源服务器异地还原到异地配对区域。 有关执行异地还原的详细信息,请参阅操作指南。 如果需要将灾难恢复 (DR) 配置为任何区域,或者主区域不支持异地冗余备份,则应使用异地副本作为 DR 策略

还原和网络

时间点恢复

如果为源服务器配置了公共访问网络,则只能还原到公共访问网络。

如果为源服务器配置了专用访问虚拟网络,则可以还原到相同或不同的虚拟网络。 无法跨公共访问和专用访问网络执行 PITR。

异地还原

如果为源服务器配置了公共访问网络,则只能还原到公共访问网络。 源服务器中的现有防火墙规则将复制到还原的服务器中。 不会接管专用终结点。 还原操作完成后,检查是否需要调整沿用的任何防火墙规则,并创建任何所需的专用终结点。

如果为源服务器配置了专用访问虚拟网络,则只能还原到不同的虚拟网络,因为虚拟网络不能跨区域。 无法跨公共访问和专用访问网络执行异地还原。

还原后任务

还原服务器后,可执行以下任务,使用户和应用程序恢复正常运行:

  • 如果需要使用新的服务器来替换原始服务器,请将客户端和客户端应用程序重定向到新服务器。 更改连接字符串的服务器名称,以指向新的服务器。

  • 对于用户连接,确保实施适当的服务器级防火墙规则、专用终结点规则和虚拟网络规则。 在公共访问网络中,将复制原始服务器中的规则,但这些规则可能不是还原的环境中所需的。 因此,需要根据需要来调整它们。 不会沿用专用终结点。 在还原的服务器中创建可能需要的任何专用终结点。 在专用访问虚拟网络中,还原操作不会将任何网络基础结构项目从源复制到还原的服务器网络。 与 VNET、子网或网络安全组的配置相关的任何内容都需要作为还原后任务处理。

  • 根据需要纵向扩展或缩减已还原服务器的计算。

  • 确保设置适当的登录名和数据库级权限。

  • 适当地配置警报。

  • 如果还原所使用的源服务器配置了高可用性,并且你想要为已还原的服务器配置高可用性,可以按照这些步骤进行操作。

  • 如果还原所用的源服务器配置了只读副本,并且你想要在还原的服务器上配置只读副本,则可以按照这些步骤操作。

常见问题解答

  • Azure 如何处理服务器的备份?

    默认情况下,Azure Database for PostgreSQL 灵活服务器会启用对整个服务器(包含创建的所有数据库)的自动备份,且保持期默认为 7 天。 自动备份包括数据库的每日增量快照。 日志 (WAL) 文件持续存档至 Azure Blob 存储。

  • 是否可将自动备份配置为长期保留数据?

    错误。 目前,Azure Database for PostgreSQL 灵活服务器支持的最长保留期为 35 天。 可以使用手动备份来满足长期保留要求。

  • 如何手动备份 Azure Database for PostgreSQL 灵活服务器实例?

    可以使用 PostgreSQL 工具 pg_dump 手动创建备份。 例如,请参阅使用转储和还原迁移 Azure Database for PostgreSQL 灵活服务器数据库

    若要将 Azure Database for PostgreSQL 灵活服务器备份到 Blob 存储,请参阅技术社区博客上的将 Azure Database for PostgreSQL 备份到 Blob 存储

  • 服务器的备份时段是什么? 是否可以自定义备份时段?

    备份时段由 Azure 管理,无法自定义。 第一次完整快照备份在创建服务器后立即进行计划。 后续的快照备份是增量性的,每天进行一次。

  • 我的备份是否加密?

    是的。 在查询执行过程中创建的所有 Azure Database for PostgreSQL 灵活服务器数据、备份和临时文件都使用 AES 256 位加密进行加密。 存储加密始终处于启用状态,无法禁用。

  • 是否可以还原服务器中的单个数据库或少量几个数据库?

    不直接支持还原单个/少量几个数据库或表。 但你可以将整个服务器还原到新服务器,然后提取所需的表或数据库并将其导入新服务器。

  • 当备份正在进行时,我的服务器是否可用?

    是的。 备份是使用快照执行的联机操作。 快照操作只需几秒钟,不会干扰生产工作负载,可帮助确保服务器的高可用性。

  • 为服务器设置维护时段时,是否需要考虑备份时段?

    否。 备份作为托管服务的一部分在内部触发,对维护时段没有影响。

  • 我的自动备份存储在何处,如何管理其保留期?

    Azure Database for PostgreSQL 灵活服务器可以自动备份服务器,并存储在以下位置:

    • 支持多个局部区域的 Azure 区域中的区域冗余存储。
    • 尚不支持多个局部区域的 Azure 区域中的本地冗余存储。
    • 配对区域(如果已配置异地冗余备份)。

    无法导出这些备份文件。

    备份仅可用于将服务器还原到某个时间点。 备份的默认保持期为 7 天。 可以选择性地将备份保留期配置为最长 35 天。

  • 使用异地冗余备份时,备份复制到配对区域的频率是怎样的?

    为服务器配置了异地冗余备份时,备份数据将存储在异地冗余存储帐户中。 在主服务器上进行每日备份时,存储帐户会将数据文件复制到配对区域。 当 WAL 文件可存档时,会对 WAL 文件进行备份。

    备份数据以方式异步连续复制到配对区域。 接收备份数据时,延迟应最多不超过 1 小时。

  • 能否在远程区域执行 PITR?

    不是。 数据将恢复到远程区域上最后提供的备份数据。

  • 如何在启用了高可用性的服务器中执行备份?

    Azure Database for PostgreSQL 灵活服务器的数据卷是使用主服务器中的托管磁盘增量快照进行备份的。 WAL 备份是从主服务器或备用服务器执行的。

  • 如何验证是否在服务器上执行了备份?

    检查备份的最佳方法是执行定期 PITR,并确保备份有效且可还原。 系统不会向最终用户公开备份操作或文件。

  • 在哪里可以查看备份使用情况?

    在 Azure 门户中的“监视”下,选择“指标”。 在“已用备份存储”中,你可以监视总体备份使用情况。

  • 如果删除服务器,我的备份会发生什么情况?

    如果你删除了某个服务器,则也会删除属于该服务器的所有备份,且不可恢复。 为了帮助防止服务器资源在部署后遭意外删除或更改,管理员可以使用管理锁。

  • 如何为已停止的服务器保留备份?

    不会对已停止的服务器执行任何新备份。 停止服务器时的(在保留时段内的)所有旧备份将保留到服务器重启为止。 服务器重启之后,活动服务器的备份保留期由其保留时段控制。

  • 备份是如何计费的?

    Azure Database for PostgreSQL 灵活服务器最高可以提供 100% 的已预配服务器存储大小作为备份存储,不收取额外费用。 你所使用的任何其他备份存储按每月每千兆字节计费,如定价模型中所定义。

    选择的备份保留期和备份冗余选项以及服务器上的事务活动会直接影响总备份存储和计费。

  • 对于已停止的服务器如何计费?

    服务器实例停止后,不会执行新的备份。 你需要为预配的存储和备份存储(在指定保留时段内存储的备份)付费。

    免费备份存储仅限于预配数据库的大小。 任何超额的备份数据将按备份价格收费。

  • 我为服务器配置了区域冗余高可用性。 你们是否按照两次备份向我收费两次?

    否。 无论是在高可用性服务器还是非高可用性服务器上,都只会保留一组备份副本。 仅向你收取一次费用。

  • 如何还原我的服务器?

    Azure 支持所有服务器的 PITR。 用户可以使用 Azure 门户、Azure CLI 和 API 还原到最近的还原点或自定义还原点。

    若要使用 pg_dump 等工具从手动备份还原服务器,你可以先创建 Azure Database for PostgreSQL 灵活服务器实例,然后使用 pg_restore 将数据库还原到服务器。

  • 是否可以还原到同一 Azure 区域中的另一个可用性区域?

    是的。 如果该区域支持多个可用性区域,则备份将存储在区域冗余存储帐户中,可供你还原到另一个可用性区域。

  • 执行 PITR 需要多长时间? 为什么我的还原操作需要很长时间?

    从快照执行数据还原操作与数据大小无关。 但是,需要应用日志(要重放的事务活动)的恢复过程所需的时间可能因所请求日期/时间的前一次备份以及要处理的日志数量而异。 这一点适用于同一区域中的还原或将数据还原到不同区域的情况。

  • 如果我还原启用了高可用性的服务器,是否会自动为还原服务器配置高可用性?

    错误。 服务器还原为单一实例 Azure Database for PostgreSQL 灵活服务器实例。 还原完成后,可以选择性地为该服务器配置高可用性。

  • 我在虚拟网络中配置了服务器。 是否可以还原到另一个虚拟网络?

    是的。 在还原时,请选择要还原到的另一个虚拟网络。

  • 是否可将公共访问服务器还原到虚拟网络,或反向还原?

    错误。 Azure Database for PostgreSQL 灵活服务器目前不支持跨公共和专用访问还原服务器。

  • 如何跟踪还原操作?

    目前无法跟踪还原操作。 可以监视活动日志,以查看操作是正在进行还是已完成。

后续步骤