使用 Azure 備份針對 PostgreSQL 資料庫備份進行疑難排解

本文提供透過 Azure 備份來備份 Azure PostgreSQL 資料庫的疑難排解資訊。

UserErrorMSIMissingPermissions

在您想要備份或還原的 PG 伺服器上,提供備份保存庫 MSI 讀取存取權。

若要建立 PostgreSQL 資料庫的安全連線,Azure 備份會使用受控服務識別 (MSI) 驗證模型。 這表示備份保存庫只會存取使用者已明確授與權限的資源。

在建立時自動將系統 MSI 指派給保存庫。 您必須將您想要從中備份資料庫之 PostgreSQL 伺服器的存取權提供給此保存庫 MSI。

步驟:

  1. 在 Postgres 伺服器中,移至 [存取控制 (IAM)] 窗格。

    Access Control pane

  2. 選取 [新增角色指派]

    Screenshot to add role assignment.

  3. 在開啟的右側內容窗格中,輸入下列內容:

    • 角色:在下拉式清單中選擇 [讀取者] 角色。
    • 將存取權指派給:在下拉式清單中選擇 [User, group, or service principal] \(使用者、群組或服務主體\) 選項。
    • 選取:輸入您想要備份此伺服器及其資料庫的備份保存庫名稱。

    Screenshot showing how to select role.

UserErrorBackupUserAuthFailed

建立可使用 Microsoft Entra ID 進行驗證的資料庫備份使用者:

此錯誤可能是因為 PostgreSQL 伺服器沒有 Microsoft Entra 管理員,或沒有可使用 Microsoft Entra 進行驗證的備份使用者。

步驟:

將 Active Directory 管理員新增至 OSS 伺服器:

需要執行此步驟,才能透過可使用 Microsoft Entra (而非密碼) 進行驗證的使用者來連線至資料庫。 適用於 PostgreSQL 之 Azure 資料庫中的 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 服務] 旗標設定為 [是]

注意

啟用此旗標之前,請確定您已將 [Deny public network access] \(拒絕公用網路存取\) 旗標設定為 [否]

Screenshot showing how to allow access to Azure services.

UserErrorContainerNotAccessible

還原為檔案時還原至儲存體帳戶容器的權限

  1. 使用 Azure 入口網站,將存取儲存體帳戶容器的權限提供給備份保存庫 MSI。

    1. 移至 [儲存體帳戶] ->[存取控制] ->[Add role assignment] \(新增角色指派\)
    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 的應用程式識別碼與範圍參數取代受託人參數,以參考您的特定容器。

    2. 若要取得保存庫 MSI 的應用程式識別碼,請選取 [應用程式類型] 下的 [所有應用程式]

      Screenshot showing how to select All Applications.

    3. 搜尋保存庫名稱,然後複製應用程式識別碼:

      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 支援服務。

下一步

關於適用於 PostgreSQL 的 Azure 資料庫備份