Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan cara menggunakan Azure PowerShell untuk memulihkan database PostgreSQL ke server Azure Database for PostgreSQL yang Anda cadangkan melalui Azure Backup. Anda juga dapat memulihkan database PostgreSQL menggunakan portal Microsoft Azure, Azure CLI, dan REST API.
Karena database PostgreSQL adalah database platform as a service (PaaS), opsi Original-Location Recovery (OLR) untuk memulihkan dengan mengganti database yang ada (dari tempat cadangan diambil) tidak didukung. Anda dapat memulihkan dari titik pemulihan untuk membuat database baru di server Azure Database for PostgreSQL yang sama atau di server PostgreSQL lainnya. Opsi ini disebut Alternate-Location Recovery (ALR). ALR membantu menyimpan database sumber dan database yang dipulihkan (baru).
Contoh dalam artikel ini merujuk ke vault Backup yang sudah ada bernama TestBkpVault di bawah grup testBkpVaultRGsumber daya :
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
Pulihkan untuk membuat database PostgreSQL baru
Menyiapkan izin
Vault Backup menggunakan identitas terkelola untuk mengakses sumber daya Azure lainnya. Untuk memulihkan dari cadangan, identitas terkelola dari brankas Cadangan memerlukan serangkaian izin pada server Azure Database for PostgreSQL tempat database akan dipulihkan.
Untuk menetapkan izin yang relevan bagi identitas terkelola yang ditugaskan oleh sistem pada brankas di server PostgreSQL target, lihat kumpulan izin yang diperlukan untuk mencadangkan database PostgreSQL.
Untuk memulihkan titik pemulihan dalam bentuk file ke akun penyimpanan, identitas terkelola yang ditetapkan oleh sistem di brankas cadangan memerlukan akses ke akun penyimpanan target.
Dapatkan titik pemulihan yang relevan
Ambil semua instans dengan menggunakan perintah Get-AzDataProtectionBackupInstance dan identifikasi instans yang relevan:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Anda juga dapat menggunakan perintah Az.Resourcegraph dan Search-AzDataProtectionBackupInstanceInAzGraph untuk mencari titik pemulihan di seluruh instans di banyak vault dan langganan.
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured
Untuk memfilter kriteria pencarian, gunakan kemampuan pencarian klien PowerShell:
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}
Setelah Anda mengidentifikasi instans, ambil titik pemulihan yang relevan:
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
Jika Anda perlu mengambil titik pemulihan dari lapisan arsip, tambahkan filter klien:
Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }
Menyiapkan permintaan pemulihan
Ada berbagai opsi pemulihan untuk database PostgreSQL. Anda dapat memulihkan titik pemulihan sebagai database lain atau memulihkan sebagai file. Titik pemulihan juga dapat berada di tingkat arsip.
Pulihkan sebagai basis data
Buat ID Azure Resource Manager untuk database PostgreSQL baru yang akan dibuat dengan menggunakan server PostgreSQL yang ditargetkan, yang telah diberikan izin, sebagaimana dijelaskan sebelumnya. Sertakan nama database PostgreSQL yang diperlukan. Misalnya, database PostgreSQL dapat dinamai emprestored21 di bawah server PostgreSQL target bernama targetossserver dalam grup targetrg sumber daya dengan langganan yang berbeda:
$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21
Initialize-AzDataProtectionRestoreRequest Gunakan perintah untuk menyiapkan permintaan pemulihan dengan semua detail yang relevan:
$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
Untuk titik pemulihan berbasis arsip, Anda perlu:
- Rehidrasi dari datastore arsip ke datastore vault.
- Ubah sumber datastore.
- Tambahkan parameter lain untuk menentukan prioritas rehidrasi.
- Tentukan durasi di mana titik pemulihan yang direhidrasi harus dipertahankan di penyimpanan data vault.
- Pulihkan menjadi database dari titik pemulihan ini.
Gunakan perintah berikut untuk menyiapkan permintaan untuk semua operasi yang disebutkan sebelumnya sekaligus:
$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
Pulihkan sebagai file
Ambil URI kontainer dalam akun penyimpanan tempat izin ditetapkan, seperti yang dijelaskan sebelumnya. Contoh berikut menggunakan kontainer bernama testcontainerrestore di bawah akun penyimpanan bernama testossstorageaccount dengan langganan yang berbeda:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Initialize-AzDataProtectionRestoreRequest Gunakan perintah untuk menyiapkan permintaan pemulihan dengan semua detail yang relevan:
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768"
Untuk titik pemulihan berbasis arsip, ubah datastore sumber. Tambahkan prioritas rehidrasi dan durasi retensi, dalam hari, dari titik pemulihan yang direhidrasi:
$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
Memicu pemulihan
Start-AzDataProtectionBackupInstanceRestore Gunakan perintah untuk memicu pemulihan dengan permintaan yang Anda siapkan sebelumnya:
Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq
Pantau pekerjaan
Lacak pekerjaan dengan menggunakan perintah Get-AzDataProtectionJob. Anda dapat mencantumkan semua pekerjaan dan mengambil detail pekerjaan tertentu.
Anda juga dapat menggunakan Az.ResourceGraph untuk melacak tugas di semua penyimpanan cadangan. Gunakan perintah Search-AzDataProtectionJobInAzGraph untuk mendapatkan tugas yang terkait yang ada di semua penyimpanan cadangan:
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup