Bagikan melalui


Memulihkan database PostgreSQL dengan menggunakan Azure PowerShell

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:

  1. Rehidrasi dari datastore arsip ke datastore vault.
  2. Ubah sumber datastore.
  3. Tambahkan parameter lain untuk menentukan prioritas rehidrasi.
  4. Tentukan durasi di mana titik pemulihan yang direhidrasi harus dipertahankan di penyimpanan data vault.
  5. 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