什么是 Azure Database for PostgreSQL 备份?

Azure 备份和 Azure 数据库服务汇集在一起,为 Azure Database for PostgreSQL 服务器构建企业级备份解决方案,该解决方案将备份保留长达 10 年。 除了长期保留,该解决方案还提供以下功能:

  • 客户可在单个数据库级别控制计划备份和按需备份。
  • 在数据库级别还原到任何 Azure Database for PostgreSQL 服务器或任何类型的 Blob 存储。
  • 集中监视所有操作和作业。
  • 将备份存储在单独的安全和容错域中。 如果源服务器或订阅遭到入侵,则备份在 Azure 备份保管库 (在 Azure 备份托管存储帐户中)中保持安全。
  • 使用 pg_dump 提高还原的灵活性。 可以跨数据库版本还原。

你可以单独使用此解决方案,也可以与 Azure PostgreSQL 中的原生备份解决方案(最多提供 35 天的保留期)配合使用。 本机解决方案适用于操作恢复,例如想要从最新备份中恢复时。 Azure 备份解决方案可帮助你满足合规性需求,并提供更精细、更灵活的备份/还原功能。

PostgreSQL 单一服务器保管备份的更改

Azure Database for PostgreSQL 的单服务器 部署选项已于 2025 年 3 月 28 日停用。 在该日期,对 Azure Backup for PostgreSQL 单一服务器进行了更改。 详细了解停用

Azure 备份提供合规性和复原能力解决方案,包括保管备份和还原点的长期保留。 2025 年 3 月 28 日,以下更改生效:

  • 新的 PostgreSQL 单一服务器工作负载不允许进行备份配置。
  • 所有计划的备份作业都会永久停止。
  • 无法为此工作负荷创建新的备份策略或修改现有备份策略。

停用日期后,PostgreSQL 单服务器数据库的计划备份作业将永久停止。 无法创建新的还原点。

但是,现有的 PostgreSQL 单服务器数据库备份会根据备份策略保留。 只有在保留期到期后才会删除还原点。 若要无限期保留还原点或在保留期到期前将其删除,请参阅 Azure 业务连续性中心控制台

计费更改

自 2025 年 3 月 31 日起,不再对保护 PostgreSQL 单一服务器数据库收取受保护的实例 (PI) 费用。 但存储备份的费用仍适用。 若要避免存储费用,请从 Azure 业务连续性中心删除所有还原点。

注意

即使在保留期到期后,Azure 备份也会保留最后一个还原点。 此功能可确保你有权访问最后一个还原点以供将来使用。 只能手动删除最后一个还原点。 如果要删除最后一个还原点并避免存储费用, 请停止数据库保护

还原方面的更改

可以通过“还原为文件”还原 PostgreSQL 单一服务器数据库。 然后,需要手动从还原的文件创建新的 PostgreSQL 灵活服务器

注意

还原为数据库选项自 2025 年 3 月 28 日起不受支持,但仍支持“还原为文件”。

备份过程

  1. 作为备份管理员,可以指定要备份的 PostgreSQL 数据库。 还可以指定 Azure Key Vault 的详细信息,该保管库存储连接到指定数据库所需的凭据。 数据库管理员在 Key Vault 中安全地为这些凭据设置种子。

  2. Azure 备份服务验证它是否具有使用指定的 Azure Database for PostgreSQL 服务器进行身份验证并备份其数据库 的适当权限

  3. Azure 备份启动一个辅助角色(虚拟机),其中安装了备份扩展,以与受保护的 Azure Database for PostgreSQL 服务器进行通信。 此扩展包含协调器和 PostgreSQL 插件。 协调器会触发各种操作的工作流,例如备份和还原。 该插件管理实际数据流。

  4. 在预定时间,协调器指示插件通过pg_dump(自定义方式)开始从 Azure Database for PostgreSQL 服务器传输备份数据。

  5. 该插件将数据直接发送到 Azure 备份托管存储帐户(由 Azure 备份保管库屏蔽),无需暂存位置。 数据通过Microsoft管理的密钥进行加密。 Azure 备份服务将数据存储在存储帐户中。

显示备份过程的示意图。

使用 Azure Database for PostgreSQL 服务器进行 Azure 备份身份验证

Azure 备份遵循 Azure 中的严格安全准则。 不假定对要备份的资源拥有权限。 用户需要显式授予这些权限。

基于 Key Vault 的身份验证模型

Azure 备份服务需要在每次备份时连接到 Azure Database for PostgreSQL 服务器。 尽管与数据库对应的用户名和密码(或连接字符串)用于建立此连接,但这些凭据不会随 Azure 备份一起存储。 相反,数据库管理员需要在 Azure 密钥保管库中作为机密安全地为这些凭据设定种子。

工作负载管理员负责管理和轮换凭据。 Azure 备份调用密钥保管库中的最新机密详细信息来执行备份。

显示工作负荷或数据库流的示意图。

PostgreSQL 数据库备份所需的权限

  1. 向 Azure 备份保管库的托管标识授予以下访问权限:

    • Azure Database for PostgreSQL 服务器上的读取者访问权限。
    • 对密钥保管库的密钥保管库机密用户访问权限(对机密的获取列出权限)。
  2. 在下列项上设置网络查看访问权限:

    • Azure Database for PostgreSQL 服务器:将 “允许访问 Azure 服务” 设置为 “是”。
    • Key Vault:将 “允许受信任的Microsoft服务 ”设置为 “是”。
  3. 设置数据库用户的备份权限。

注意

如果作为备份管理员,可以在 配置备份 流中授予这些权限,只需单击一下即可对预期资源拥有写入访问权限。 如果没有所需的权限(涉及多个角色时),请使用 Azure 资源管理器模板。

PostgreSQL 数据库还原所需的权限

还原权限类似于备份所需的权限。 需要 手动授予目标 Azure Database for PostgreSQL 服务器和相应密钥保管库的权限。 与配置备份流不同,当前无法提供以内联方式授予这些权限的体验。

确保数据库用户(对应于密钥保管库中存储的凭据)对数据库具有以下还原权限:

  • 分配 ALTER USER 用户名 CREATEDB
  • 将角色 azure_pg_admin 分配给数据库用户。

基于 Microsoft Entra ID 的身份验证模型

早期的身份验证模型完全基于 Microsoft Entra ID。 基于 Key Vault 的身份验证模型(如前面所述)现在可用作简化配置过程的替代选项。

若要获取自动化脚本和相关说明,以使用基于 Microsoft Entra ID 的身份验证模型, 请下载本文档。 它向 Azure Database for PostgreSQL 服务器授予一组适当的权限,以便进行备份和还原。

注意

所有新配置的保护仅使用新的 Key Vault 身份验证模型进行。 但是,通过基于 Microsoft Entra ID 的身份验证配置保护的所有现有备份实例将继续存在并定期进行备份。 若要还原这些备份,需要遵循基于 entra ID 的Microsoft身份验证。

在 Azure Database for PostgreSQL 服务器和密钥保管库上手动授予访问权限的步骤

若要授予 Azure 备份所需的所有访问权限,请使用以下步骤。

Azure Database for PostgreSQL 服务器上的访问权限

  1. 为 Azure Database for PostgreSQL 服务器上的托管标识设置 Azure 备份保管库的读取者访问权限。

    屏幕截图显示了用于在 Azure Database for PostgreSQL 服务器上设置 Azure 备份保管库的 MSI 读取者访问权限的选项。

  2. 通过将 “允许访问 Azure 服务 ”设置为 “是”,在 Azure Database for PostgreSQL 服务器上设置网络视线访问。

    显示用于在 Azure Database for PostgreSQL 服务器上设置网络视线访问的选项的屏幕截图。

对密钥保管库的访问权限

  1. 为密钥保管库中的托管标识设置 Azure 备份保管库的密钥保管库机密用户访问权限(对机密的获取列出权限)。 若要分配权限,你可以使用角色分配或访问策略。 无需使用这两个选项添加权限,因为它无济于事。

  2. 通过将 “允许受信任的Microsoft服务绕过此防火墙 ”设置为 “是”,在密钥保管库上设置网络视线访问。

    屏幕截图显示了选择相应选项以允许受信任的 Microsoft 服务在密钥保管库上通过网络进行访问。

数据库用户的备份权限

pgAdmin 工具中运行以下查询。 将 username 替换为数据库用户 ID。

DO $do$
DECLARE
sch text;
BEGIN
EXECUTE format('grant connect on database %I to %I', current_database(), 'username');
FOR sch IN select nspname from pg_catalog.pg_namespace
LOOP
EXECUTE format($$ GRANT USAGE ON SCHEMA %I TO username $$, sch);
EXECUTE format($$ GRANT SELECT ON ALL TABLES IN SCHEMA %I TO username $$, sch);
EXECUTE format($$ ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON TABLES TO username $$, sch);
EXECUTE format($$ GRANT SELECT ON ALL SEQUENCES IN SCHEMA %I TO username $$, sch);
EXECUTE format($$ ALTER DEFAULT PRIVILEGES IN SCHEMA %I GRANT SELECT ON SEQUENCES TO username $$, sch);
END LOOP;
END;
$do$

注意

如果您已配置备份的数据库出现问题 UserErrorMissingDBPermissions,请参阅 此故障排除指南 以获取解决问题的帮助。

使用 pgAdmin 工具

如果还没有 pgAdmin 工具,请下载该工具。 可以通过此工具连接到 Azure Database for PostgreSQL 服务器。 此外,还可以将数据库和新用户添加到此服务器。

显示使用 P G 管理工具连接到 Azure Database for PostgreSQL 服务器的过程的屏幕截图。

使用所选名称创建新服务器。 输入主机名/地址。 它与 Azure 门户中 Azure PostgreSQL 资源视图中显示的 服务器名称 值相同。

显示使用 P G 管理工具创建新服务器的选项的屏幕截图。

显示 Azure 门户中的 Azure PostgreSQL 资源视图(包括服务器名称)的屏幕截图。

确保将当前客户端 ID 地址添加到防火墙规则,以便连接通过。

显示将当前客户端 ID 地址添加到防火墙规则的链接的屏幕截图。

可以向服务器添加新数据库和数据库用户。 对于数据库用户,请选择 “登录/组角色 ”以添加角色。 确保 “是否可以登录?” 设置为 “是”。

显示将新数据库和数据库用户添加到服务器的菜单选择的屏幕截图。

显示为数据库用户添加新登录名或组角色的菜单选择的屏幕截图。

显示允许登录设置为“是”的切换的屏幕截图。