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

还原 Azure Database for PostgreSQL 备份

本文介绍如何将数据库还原到由 Azure 备份进行备份的 Azure PostgreSQL 服务器。

如果服务在目标服务器上具有相应的权限集,则可以将数据库还原到不同/同一订阅中但在保管库的同一区域内的任何 Azure PostgreSQL 服务器。

还原 Azure PostgreSQL 数据库

  1. 转到“备份保管库”->“备份实例”。 选择数据库,然后单击“还原”。

    Screenshot showing the process to select and restore a database.

    也可以从备份中心导航到此页。

  2. 在“选择还原点”页上,从可供所选备份实例使用的所有完整备份的列表中选择一个恢复点。 默认选择最新的恢复点。

    Screenshot showing the process to select a recovery point.

    如果还原点位于存档层中,则必须在还原之前解除冻结恢复点。 提供解除冻结所需的以下附加参数:

    • “解除冻结优先级”:默认值为“标准”。
    • “解除冻结持续时间”:最大解除冻结持续时间为 30 天,最小解除冻结持续时间为 10 天。 默认值为 15 天。 恢复点存储在“备份数据存储”中,存储时长为此持续时间。
  3. 在“还原参数”页上,选择下列还原类型之一:“还原为数据库”或“还原为文件”。

    • 还原为数据库

      目标服务器可以与源服务器相同。 但是,不支持覆盖原始数据库。 可以跨所有订阅从服务器进行选择,但需要与保管库的位于同一区域。

      1. 在“选择密钥保管库和机密”下拉列表中,选择存储凭据的保管库以连接到目标服务器。

      2. 选择“查看 + 还原”触发验证,以检查服务是否在目标服务器上具有还原权限。 必须手动授予这些权限。

      Screenshot showing the selected restore type as Restore as Database.

重要

通过密钥保管库选择其凭据的数据库用户将拥有对已还原数据库的所有特权,并将替代任何现有的 DB 用户边界。 例如:如果备份的数据库具有任何数据库用户特定的权限/约束(例如数据库用户 A 可以访问几个表,而数据库用户 B 可以访问几个其他表),则还原后将不会保留此类权限。 如果要保留这些权限,请使用还原作为文件,并将 pg_restore 命令与相关开关一起使用。

  • 还原为文件:将备份文件转储到目标存储帐户 (blob)。

    可以跨所有订阅从存储帐户中进行选择,但需要与保管库的位于同一区域。

    1. 在“选择目标容器”下拉列表中,选择为所选存储帐户筛选的容器之一。
    2. 选择“查看 + 还原”来触发验证,以检查备份服务是有目标存储帐户上的还原权限

    Screenshot showing the selected restore type as Restore as Files.

  1. 提交还原操作并在“备份作业”下跟踪触发的作业。

    Screenshot showing the tracked triggered job under Backup jobs.

注意

对 Azure Database for PostgreSQL 的存档支持以有限的公共预览版形式提供。

针对目标存储帐户的还原权限

授予备份保管库 MSI 使用 Azure 门户访问存储帐户容器的权限。

  1. 转到“存储帐户”->“访问控制”->“添加角色分配”。

  2. 在“角色”下拉列表中选择分配到备份保管库 MSI 的“存储 Blob 数据参与者”角色。

    Screenshot showing the process to assign Backup vault M S I the permission to access the storage account containers using the Azure portal.

也可通过使用 Azure CLI az role assignment create 命令授予对要还原到的特定容器的精细权限。

az role assignment create --assignee $VaultMSI_AppId  --role "Storage Blob Data Contributor"   --scope $id

将代理人参数替换为保管库 MSI 的“应用程序 ID”和引用特定容器的作用域参数。 若要获取保管库 MSI 的“应用程序 ID”,请在“应用程序类型”下选择“所有应用程序”。 搜索保管库名称并复制应用程序 ID。

Screenshot showing the process to get the Application ID of the vault MSI.

Screenshot showing the process to copy the Application ID of the vault.

跨区域还原数据库

作为还原选项之一,跨区域还原 (CRR) 允许你在某个次要区域(Azure 配对区域)中还原 Azure Database for PostgreSQL 服务器。

注意事项

查看次要区域中的备份实例

如果启用了 CRR,则可以查看次要区域中的备份实例。

  1. Azure 门户中,转到“备份保管库”>“备份实例”。

  2. 将筛选器选为“实例区域 == 次要区域”。

    Screenshot showing the selection of the secondary region as the instance region.

    注意

    仅列出支持 CRR 功能的备份管理类型。 目前,仅支持将主要区域数据还原到 PostgreSQL 服务器的次要区域。

在次要区域中进行还原

次要区域还原体验类似于主要区域还原。

在“还原配置”窗格中配置详细信息以配置还原时,系统会提示你仅提供次要区域参数。 因此,次要区域中应已有保管库,并且应将 PostgreSQL 服务器注册到次要区域中的保管库。 

执行以下步骤:

  1. 选择“备份实例名称”以查看详细信息。

  2. 选择“还原到次要区域”。

    Screenshot showing how to restore to secondary region.

  3. 选择还原点、区域和资源组。

  4. 选择“还原”。

    注意

    • 在数据传输阶段中触发还原后,无法取消还原作业。
    • 跨区域执行还原操作所需的角色/访问级别为:订阅中的备份操作员角色,以及源和目标虚拟机上的参与者(写入)访问权限。 若要查看备份作业,至少需要在订阅中具有备份读取者权限。
    • 次要区域中可用的备份数据的 RPO 为 12 小时。 因此,打开 CRR 时,次要区域的 RPO 为 12 小时 + 日志频率持续时间(可以设置为至少 15 分钟)。

监视次要区域还原作业

  1. 在 Azure 门户中,转到“监视 + 报告”>“备份作业”。

  2. 筛选“实例区域”找到“次要区域”以查看次要区域中的作业。

    Screenshot showing how to view jobs in secondary region.

后续步骤

排查使用 Azure 备份进行 PostgreSQL 数据库备份的问题