共用方式為


使用 Azure PowerShell 還原 PostgreSQL 資料庫

本文說明如何使用 Azure PowerShell 將 PostgreSQL 資料庫還原至透過 Azure 備份備份的 適用於 PostgreSQL 的 Azure 資料庫伺服器 。 您也可以使用 Azure 入口網站Azure CLIREST API 來還原 PostgreSQL 資料庫。

由於 PostgreSQL 資料庫是平臺即服務 (PaaS) 資料庫,因此不支援取代現有資料庫來還原的 Original-Location Recovery (OLR) 選項(從其中進行備份)。 您可以從恢復點還原,以在相同的適用於 PostgreSQL 的 Azure 資料庫伺服器或任何其他 PostgreSQL 伺服器中建立新的資料庫。 此選項稱為替代位置復原 (ALR)。 ALR 有助於同時保留來源資料庫和復原後的新資料庫。

本文中的範例是指資源群組TestBkpVault下名為 testBkpVaultRG 的現有備份保存庫:

$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"

還原以建立新的 PostgreSQL 資料庫

設定權限

備份保存庫會使用受控識別來存取其他 Azure 資源。 若要從備份還原,備份保存庫的受控識別需要在應該還原資料庫之適用於 PostgreSQL 的 Azure 資料庫伺服器上擁有一組權限。

若要在目標 PostgreSQL 伺服器上指派保存庫系統指派受控識別的相關許可權,請參閱 備份 PostgreSQL 資料庫所需的許可權集

若要將復原點以檔案的形式還原至儲存體帳戶,備份保存庫的系統指派受控識別需要目標儲存體帳戶的存取權

擷取相關復原點

使用 Get-AzDataProtectionBackupInstance 命令擷取所有實例,並識別相關的實例:

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name

您也可以使用 Az.ResourcegraphSearch-AzDataProtectionBackupInstanceInAzGraph 命令來搜尋許多儲存庫和訂用帳戶中執行個體之間的復原點:

$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured

若要篩選搜尋準則,請使用PowerShell客戶端搜尋功能:

Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}

識別實例之後,請擷取相關的恢復點:

$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName

如果您需要從封存層擷取恢復點,請新增客戶端篩選:

Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }

準備還原要求

PostgreSQL 資料庫有各種還原選項。 您可以將復原點還原為另一個資料庫或還原為檔案。 恢復點也可以位於封存層。

還原為資料庫

建構要建立之新 PostgreSQL 資料庫的 Azure Resource Manager 標識符(使用已指派許可權的目標 PostgreSQL 伺服器,如 先前所述)。 包含必要的 PostgreSQL 資料庫名稱。 例如,一個 PostgreSQL 資料庫可以在具有不同訂用帳戶的資源群組emprestored21中的目標 PostgreSQL 伺服器targetossserver下命名為targetrg

$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21

使用Initialize-AzDataProtectionRestoreRequest命令準備包含所有相關詳情的恢復請求。

$OssRestoreReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault

若是以封存為基礎的復原點,您需要:

  1. 將封存資料存放區解除凍結至保存庫資料存放區。
  2. 修改來源資料存放區。
  3. 新增其他參數以指定解除凍結優先順序。
  4. 指定解除凍結復原點應該保留在保存庫資料存放區中的持續時間。
  5. 從這個復原點還原為資料庫。

使用下列命令,一次為所有先前提及的作業準備要求:

$OssRestoreFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetResourceId $targetOssId -SecretStoreURI "https://restoreoss-test.vault.azure.net/secrets/dbauth3" -SecretStoreType AzureKeyVault -RehydrationDuration 12 -RehydrationPriority Standard

還原為檔案

先前 (部分內容可能是機器或 AI 翻譯) 所述,在指派權限的儲存體帳戶內擷取容器的 URI。 下列範例會使用名為 testcontainerrestore 且具有不同訂用帳戶的記憶體帳戶底下名為 testossstorageaccount 的容器:

$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"

使用Initialize-AzDataProtectionRestoreRequest命令準備包含所有相關詳情的恢復請求。

$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" 

針對封存型復原點,修改來源資料資料存放區。 新增解除凍結優先順序以及所解除凍結復原點的保留持續時間 (以天為單位):

$OssRestoreAsFilesFromArchiveReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore ArchiveStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768" -RehydrationDuration "14" -RehydrationPriority Standard

觸發還原

使用 Start-AzDataProtectionBackupInstanceRestore 命令以您之前準備的要求來觸發還原:

Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq

追蹤作業

使用 Get-AzDataProtectionJob 命令來追蹤作業。 您可以列出所有工作,並擷取特定的工作詳細資料。

您也可以使用 Az.ResourceGraph 來追蹤所有備份保存庫的工作。 使用 Search-AzDataProtectionJobInAzGraph 命令來取得在所有備份保存庫中的相關工作:

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup