你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

关于 Azure Database for PostgreSQL 备份

Azure 备份和 Azure 数据库服务共同致力于为 Azure Database for PostgreSQL 服务器生成可将备份保留长达 10 年的企业级备份解决方案。 除了长期保留,该解决方案还提供以下功能:

  • 客户在单个数据库级别控制计划备份和按需备份。
  • 数据库级还原到任何 PostgreSQL 服务器或任何 Blob 存储。
  • 集中监视所有操作和作业。
  • 备份存储在单独的安全域和容错域中。 如果源服务器或订阅在任何情况下受到损坏,备份在备份保管库中(在 Azure 备份托管存储帐户中)都会保持安全。
  • 使用 pg_dump 可以更灵活地进行复原。 这有助于跨数据库版本进行还原

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

注意

Azure Database for PostgreSQL - 单一服务器即将停用,计划于 2025 年 3 月 28 日之前停用。

如果你当前拥有托管生产服务器的 Azure Database for PostgreSQL - 单一服务器服务,我们很高兴地通知你可以将 Azure Database for PostgreSQL - 单一服务器迁移到 Azure Database for PostgreSQL - 灵活服务器。

Azure Database for PostgreSQL 灵活服务器是一种完全托管的生产就绪数据库服务,旨在通过 Azure 备份提供的企业级备份解决方案对数据库管理功能和配置设置进行更精细的控制并提高灵活性。 有关 Azure Database for PostgreSQL - 灵活服务器的详细信息,请访问 Azure Database for PostgreSQL - 灵活服务器。

备份过程

  1. 作为备份管理员,你可以指定要备份的 Azure PostgreSQL 数据库。 此外,还可以指定存储了连接到指定数据库所需凭据的 Azure 密钥保管库的详细信息。 这些凭据由 Azure 密钥保管库中的数据库管理员安全设定种子。
  2. 然后,备份服务会验证它是否具有适当的权限来对指定的 PostgreSQL 服务器进行身份验证并备份其数据库。
  3. Azure 备份启动一个辅助角色 (VM),其中安装了备份扩展,以与受保护的 PostgreSQL 服务器进行通信。 此扩展包含协调器和 PostgreSQL 插件。 协调器触发各种操作(如备份和还原)的工作流,并且该插件管理实际数据流。
  4. 在计划的时间,协调器与插件通信,并开始使用 pg_dump(自定义)从 PostgreSQL 服务器流式传输备份数据。
  5. 该插件将数据直接发送到 Azure 备份托管存储帐户(由备份保管库屏蔽),无需临时位置。 数据使用 Microsoft 托管密钥加密,并由 Azure 备份服务存储在存储帐户中。

显示备份过程的示意图。

Azure 备份向 PostgreSQL 服务器进行的身份验证

Azure 备份遵循 Azure 制定的严格安全准则;要备份的资源的权限不是假定的,需要由用户明确授予。

基于密钥保管库的身份验证模型

每次备份时,Azure 备份服务都需要连接到 Azure PostgreSQL。 虽然与数据库对应的“用户名 + 密码”(或称为连接字符串)用于建立此连接,但这些凭据不会与 Azure 备份一起存储。 相反,这些凭据需要由数据库管理员在 Azure Key Vault 中作为机密安全地设定种子。 工作负荷管理员负责管理和轮换凭据;Azure 备份从密钥保管库中调用最新的机密详细信息以进行备份。

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

Azure PostgreSQL 数据库备份所需的一组权限

  1. 向备份保管库的 MSI 授予以下访问权限:

    • 对 Azure PostgreSQL 服务器的读者访问权限。
    • Azure Key Vault 的密钥保管库机密用户(或者获取和列出机密)。
  2. 对以下各项的网络查看访问权限:

    • Azure PostgreSQL 服务器 – 将“允许访问 Azure 服务”标志设置为“是”。
    • 密钥保管库 – 将“允许信任的 Microsoft 服务”标志设置为“是”。
  3. 数据库用户对数据库的备份权限

注意

如果你(备份管理员)对目标资源具有“写入”访问权限,则可以在配置备份流通过一键式操作授予这些权限,如果没有必需的权限(涉及到多个角色的情况下),则可以使用 ARM 模板。

Azure PostgreSQL 数据库还原所需的一组权限

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

此外,请确保数据库用户(与密钥保管库中存储的凭据)对数据库具有以下还原权限:

  • ALTER USER username CREATEDB;
  • 为数据库用户分配角色 azure_pg_admin

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

我们之前发布了一种不同的身份验证模型,该模型完全基于 Microsoft Entra ID。 但是,我们现在提供新的基于密钥保管库的身份验证模型(如上所述)作为替代选项,这简化了配置过程。

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

注意

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

手动授予对 Azure PostgreSQL 服务器和密钥保管库的访问权限

若要授予 Azure 备份所需的所有访问权限,请参阅以下各节:

对 Azure PostgreSQL 服务器的访问权限

  1. 设置备份保管库的 MSI 对 Azure PostgreSQL 服务器的读者访问权限。

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

  2. 对 Azure PostgreSQL 服务器的网络视线访问权限:将“允许访问 Azure 服务”标志设置为“是”。

    显示用于设置对 Azure PostgreSQL 服务器的网络视觉访问权限的选项的屏幕截图。

对 Azure Key Vault 的访问权限(与 PostgreSQL 服务器关联)

  1. 设置备份保管库的 MSI 对 Azure Key Vault 的密钥保管库机密用户(或获取或列出机密)访问权限。 若要分配权限,你可以使用角色分配或访问策略。 无需同时使用这两个选项来添加权限,因为这样做并没有益处。

    • 使用 Azure 基于角色的访问控制 (Azure RBAC) 授权(即权限模型设置为“Azure 基于角色的访问控制”):

    显示为机密用户提供访问权限的选项的屏幕截图。

    屏幕截图显示了授予备份保管库的 MSI 密钥保管库机密用户对密钥保管库的访问权限的选项。

  2. 对密钥保管库的网络视线访问:将“允许信任的 Microsoft 服务”标志设置为“是”。

    此屏幕截图显示针对密钥保管库的网络视线访问权限,将“允许信任的 Microsoft 服务”标志设置为“是”

数据库用户对数据库的备份权限

PG 管理工具中运行以下工具(将 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 而失败,请参阅此故障排除指南,获取解决问题的帮助。

使用 PG 管理工具

下载 PG 管理工具(如果还没有)。 可以通过此工具连接到 Azure PostgreSQL 服务器。 此外,还可以将数据库和新用户添加到此服务器。

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

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

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

显示了输入与服务器名称相同的主机名或地址名的选项。

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

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

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

显示向服务器添加新数据库和数据库用户的过程的屏幕截图。

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

显示验证“可以登录?”选项设置为“是”的屏幕截图。

后续步骤

Azure Database for PostgreSQL 备份