Aracılığıyla paylaş


Azure PowerShell kullanarak PostgreSQL veritabanlarını geri yükleme

Bu makalede, PostgreSQL veritabanlarını Azure Backup aracılığıyla yedeklediğiniz postgreSQL için Azure Veritabanı sunucusuna geri yüklemek için Azure PowerShell'in nasıl kullanılacağı açıklanır. PostgreSQL veritabanını Azure portal, Azure CLI ve REST API kullanarak da geri yükleyebilirsiniz.

PostgreSQL veritabanı bir hizmet olarak platform (PaaS) veritabanı olduğundan, mevcut veritabanını değiştirerek (yedeklemelerin alındığı yerden) geri yüklemek için Original-Location Recovery (OLR) seçeneği desteklenmez. Aynı PostgreSQL için Azure Veritabanı sunucusunda veya başka bir PostgreSQL sunucusunda yeni bir veritabanı oluşturmak için kurtarma noktasından geri yükleyebilirsiniz. Bu seçenek Alternate-Location Kurtarma (ALR) olarak adlandırılır. ALR hem kaynak veritabanını hem de geri yüklenen (yeni) veritabanını tutmaya yardımcı olur.

Bu makaledeki örnekler, TestBkpVault kaynak grubunun altında testBkpVaultRG adlı mevcut bir Backup kasasına başvurur.

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

Yeni bir PostgreSQL veritabanı oluşturmak için geri yükleme

İzinleri ayarlama

Backup kasası, diğer Azure kaynaklarına erişmek için yönetilen kimlik kullanır. Yedeklemeden geri yüklemek için Backup kasasının yönetilen kimliği, veritabanının geri yüklenmesi gereken PostgreSQL için Azure Veritabanı sunucusunda bir dizi izin gerektirir.

Bir kasanın sistem atamalı yönetilen kimliğine yönelik ilgili izinleri hedef PostgreSQL sunucusuna atamak için PostgreSQL veritabanını yedeklemek için gereken izin kümesine bakın.

Kurtarma noktasını bir depolama hesabına dosya olarak geri yüklemek için Backup kasasının sistem tarafından atanan yönetilen kimliğine hedef depolama hesabında erişim gerekir.

İlgili kurtarma noktasını getir

komutunu kullanarak Get-AzDataProtectionBackupInstance tüm örnekleri getirin ve ilgili örneği tanımlayın:

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

Az.Resourcegraph ve Search-AzDataProtectionBackupInstanceInAzGraph komutunu kullanarak birçok kasalar ve abonelikteki örnekler arasında kurtarma noktalarını arayabilirsiniz.

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

Arama ölçütlerini filtrelemek için PowerShell istemci arama özelliklerini kullanın:

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

Örneği tanımladıktan sonra ilgili kurtarma noktasını getirin:

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

Kurtarma noktasını arşiv katmanından getirmeniz gerekiyorsa bir istemci filtresi ekleyin:

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

Geri yükleme isteğini hazırlama

PostgreSQL veritabanı için çeşitli geri yükleme seçenekleri vardır. Kurtarma noktasını başka bir veritabanı olarak geri yükleyebilir veya dosya olarak geri yükleyebilirsiniz. Kurtarma noktası arşiv katmanında da olabilir.

Veritabanı olarak geri yükleme

Oluşturulacak yeni PostgreSQL veritabanının Azure Resource Manager kimliğini oluşturun ( daha önce ayrıntılı olarak açıklandığı gibi izinlerin atandığı hedef PostgreSQL sunucusuyla). Gerekli PostgreSQL veritabanı adını ekleyin. Örneğin, bir PostgreSQL veritabanı farklı bir aboneliğe sahip kaynak grubunda emprestored21 adlı hedef PostgreSQL sunucusu altında adlandırılabilir:targetossservertargetrg

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

Initialize-AzDataProtectionRestoreRequest Geri yükleme isteğini tüm ilgili ayrıntılarla hazırlamak için komutunu kullanın:

$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

Arşiv tabanlı kurtarma noktası için şunları yapmanız gerekir:

  1. Arşiv veri deposundan kasa veri deposuna yeniden doldurma.
  2. Kaynak veri depolarını değiştirin.
  3. Yeniden doldurma önceliğini belirtmek için başka parametreler ekleyin.
  4. Yeniden etkinleştirilen kurtarma noktasının depo veri tabanında tutulacağı süreyi belirtin.
  5. Bu kurtarma noktasından veritabanı olarak geri yükleyin.

Daha önce bahsedilen tüm işlemler için isteği bir kerede hazırlamak için aşağıdaki komutu kullanın:

$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

Dosya olarak geri yükleme

Daha önce açıklandığı gibi, izinlerin atandığı depolama hesabı içindeki kapsayıcının URI'sini getirin. Aşağıdaki örnekte, farklı bir abonelikle testcontainerrestore adlı depolama hesabının altında testossstorageaccount adlı bir kapsayıcı kullanılır.

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

Initialize-AzDataProtectionRestoreRequest Geri yükleme isteğini tüm ilgili ayrıntılarla hazırlamak için komutunu kullanın:

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

Arşiv tabanlı kurtarma noktası için kaynak veri depolarını değiştirin. Yeniden doldurma önceliğini ve yeniden doldurulan kurtarma noktasının saklama süresini gün cinsinden ekleyin:

$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

Geri yüklemeyi tetikleme

Start-AzDataProtectionBackupInstanceRestore Daha önce hazırladığınız istekle geri yüklemeyi tetikleme komutunu kullanın:

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

İşleri takip et

komutunu kullanarak Get-AzDataProtectionJob işleri izleyin. Tüm işleri listeleyebilir ve belirli bir iş ayrıntısı getirebilirsiniz.

Ayrıca Az.ResourceGraph, tüm yedekleme depolarında işleri izlemek için kullanabilirsiniz. İlgili işi tüm Backup kasalarında almak için Search-AzDataProtectionJobInAzGraph komutunu kullanın.

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