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

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

本文提供有关使用 Azure 备份来备份 Azure PostgreSQL 数据库的故障排除信息。

UserErrorMSIMissingPermissions

在要备份或还原的 PG 服务器上授予备份保管库 MSI“读取”访问权限。

为了建立与 PostgreSQL 数据库的安全连接,Azure 备份使用托管服务标识 (MSI) 身份验证模型。 这意味着备份保管库只能访问由用户显式授予权限的资源。

系统 MSI 在创建时自动分配到保管库。 需要授予此保管库 MSI 访问你打算从中备份数据库的 PostgreSQL 服务器的权限。

步骤:

  1. 在 Postgres 服务器中,转到“访问控制(IAM)”窗格。

    Access Control pane

  2. 选择“添加角色分配”。

    Screenshot to add role assignment.

  3. 在右侧打开的上下文窗格中,输入以下信息:

    • “角色”:在下拉列表中选择“读者”角色。
    • “分配访问权限”:在下拉列表中选择“用户、组或服务主体”选项。
    • 选择:输入要将此服务器及其数据库备份到的备份保管库的名称。

    Screenshot showing how to select role.

UserErrorBackupUserAuthFailed

创建可以通过 Microsoft Entra ID 进行身份验证的数据库备份用户:

此错误可能是缺少 PostgreSQL 服务器的 Microsoft Entra 管理员,或者缺少可以使用 Microsoft Entra ID 进行身份验证的备份用户造成的。

步骤:

将 Active Directory 管理员添加到 OSS 服务器:

通过可以使用 Microsoft Entra ID(而非密码)进行身份验证的用户连接到数据库需要执行此步骤。 Azure Database for PostgreSQL 中的 Microsoft Entra 管理员用户将拥有 azure_ad_admin 角色。 仅 azure_ad_admin 角色可以创建可通过 Microsoft Entra ID 进行身份验证的新数据库用户。

  1. 转到服务器视图左侧导航窗格中的“Active Directory 管理员”选项卡,然后将自己(或其他用户)添加为 Active Directory 管理员。

    Screenshot showing how to set Active Directory admin.

  2. 确保“保存”AD 管理员用户设置。

    Screenshot showing how to save Active Directory admin user setting.

有关完成权限授予步骤所需执行的步骤的列表,请参阅此文档

UserErrorMissingNetworkSecurityPermissions

通过在服务器视图中启用“允许访问 Azure 服务”标志来建立网络直通连接。 在服务器视图的“连接安全”窗格下,将“允许访问 Azure 服务”标志设置为“是”。

注意

启用此标志之前,请确保将“拒绝公用网络访问”标志设置为“否”。

Screenshot showing how to allow access to Azure services.

UserErrorContainerNotAccessible

还原为文件时的还原到存储帐户容器的权限

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

    1. 转到“存储帐户”->“访问控制”->“添加角色分配”。
    2. 将“存储 Blob 数据参与者”角色分配到备份保管库 MSI。

    Screenshot showing the process to assign Storage Blob Data Contributor role.

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

    az role assignment create --assignee $VaultMSI_AppId  --role "Storage Blob Data Contributor"   --scope $id
    
    1. 将代理人参数替换为保管库 MSI 的“应用程序 ID”和引用特定容器的作用域参数。

    2. 若要获取保管库 MSI 的“应用程序 ID”,请在“应用程序类型”下选择“所有应用程序”:

      Screenshot showing how to select All Applications.

    3. 搜索保管库名称并复制应用程序 ID:

      Screenshot showing how to search for vault name.

UserErrorDBUserAuthFailed

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 确保作为密钥保管库中机密值一部分存储的凭据有效。 确保指定的数据库用户具有登录访问权限。

UserErrorInvalidSecret

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 确保密钥保管库中存在指定的机密名称。

UserErrorMissingDBPermissions

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 可以通过访问备份实例并选择 JSON 视图来找到与此备份实例关联的密钥保管库。 你会看到 datasourceAuthCredentials 节下列出的密钥保管库名称和机密详细信息,如下面的屏幕截图所示。

Screenshot showing how to search for key vault by using secret name.

UserErrorSecretValueInUnsupportedFormat

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 但是,机密值的格式不受 Azure 备份支持。 查看此处所述的支持格式。

UserErrorInvalidSecretStore

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 确保给定的密钥保管库存在,并且备份服务已获得此处所述的访问权限。

UserErrorMissingPermissionsOnSecretStore

Azure 备份服务使用密钥保管库中提到的凭据以数据库用户身份访问数据库。 相关密钥保管库和机密是在配置备份期间提供的。 确保备份保管库的 MSI 有权访问密钥保管库,如此处所述。

UserErrorDBNotFound

确保数据库和相关服务器存在。

UserErrorDatabaseNameAlreadyInUse

为还原的数据库提供的名称已存在,因此还原操作失败。 请使用其他名称重试还原操作。

UserErrorServerConnectionClosed

操作失败,因为服务器意外关闭了连接。 请重试该操作,如果错误仍然存在,请联系 Microsoft 支持部门。

后续步骤

关于 Azure Database for PostgreSQL 备份