本文說明如何將 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器還原至 適用於 PostgreSQL 的 Azure 資料庫 - Azure 備份 備份的彈性伺服器。
在本文中,您將學會如何:
還原以建立新的 PostgreSQL - 彈性伺服器
追蹤還原作業狀態
我們將會參考範例中,資源群組 testBkpVaultRG 下現有的備份保存庫 TestBkpVault。
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
還原以建立新的 PostgreSQL 資料庫
設定權限
備份保存庫使用受控識別來存取其他 Azure 資源。 若要從備份還原,備份保存庫的受控識別需要一組要還原伺服器之記憶體帳戶的許可權。
若要在目標記憶體帳戶上指派保存庫系統指派受控識別的相關許可權,請參閱 備份 Azure PostgreSQL 資料庫所需的許可權集。
若要將復原點以檔案的形式還原至儲存體帳戶,備份保存庫的系統指派受控識別需要目標儲存體帳戶的存取權。
擷取相關復原點
使用 Get-AzDataProtectionBackupInstance 命令擷取所有執行個體,並識別相關的執行個體。
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
您也可以使用 Az.Resourcegraph 和 Search-AzDataProtectionBackupInstanceInAzGraph 命令,在多個保存庫和訂用帳戶的執行個體中搜尋復原點。
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -ProtectionStatus ProtectionConfigured
若要篩選搜尋準則,請如下所示,使用 PowerShell 用戶端搜尋功能:
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPGFlexServer -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "testpgflex"}
識別執行個體之後,請擷取相關的復原點。
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
準備還原要求
您可以將 PostgreSQL – 彈性伺服器資料庫的恢復點還原為僅限檔案。
還原為檔案
如上面所述,在指派權限的儲存體帳戶內擷取容器的 URI。 例如,使用不同的訂用帳戶,在儲存體帳戶 testossstorageaccount 下名為 testcontainerrestore 的容器。
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
請使用 Initialize-AzDataProtectionRestoreRequest 命令,使用所有相關詳細資料準備還原要求。
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPGFlexServer -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "testpgflex-westus_1628853549768"
觸發還原
使用 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 AzureDatabaseForPGFlexServer -Operation OnDemandBackup
建立 PostgreSQL - 從還原的記憶體帳戶彈性伺服器
還原完成至目標記憶體帳戶之後,您可以使用 pg_restore 公用程式,從目標還原 適用於 PostgreSQL 的 Azure 資料庫 – 彈性伺服器資料庫。 使用下列命令連線到現有的 PostgreSQL – 彈性伺服器和現有的資料庫。
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
-Fd:目錄格式。 -j:作業數目。 -C:使用命令開始輸出,以建立資料庫本身,然後重新連線到它。
以下是此語法顯示方式的範例:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
如果您有一個以上的資料庫要還原,請針對每個資料庫重新執行先前的命令。
同時,藉由使用多個並行作業 -j,您可以減少在多個 vCore 目標伺服器上還原大型資料庫所需的時間。 作業數目可以等於或小於為目標伺服器配置的 vCPU 數目。