Aracılığıyla paylaş


PostgreSQL için Azure Veritabanı - Azure PowerShell kullanarak Esnek Sunucuyu geri yükleme

Bu makalede, Azure PowerShell kullanarak PostgreSQL için Azure Veritabanı - Esnek Sunucu'nun nasıl geri yükleneceği açıklanır.

Uyarı

Özgün Konum Kurtarma (OLR) seçeneği PaaS veritabanları için desteklenmez. Bunun yerine, Alternate-Location Recovery'yi (ALR) kullanarak bir kurtarma noktasından geri yükleme yapın ve hem kaynak hem de geri yüklenen veritabanlarını koruyarak aynı veya başka bir Azure PostgreSQL – Esnek sunucuda yeni bir veritabanı oluşturun.

Örneklerde kaynak grubunun TestBkpVault altında mevcut bir Backup kasasını testBkpVaultRGkullanalım.

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

Geri yükleme izinlerini ayarlama

Yedekleme kasası, diğer Azure kaynaklarına erişmek için yönetilen kimliği kullanır. Yedeklemeden geri yüklemek için, Yedekleme kasasının yönetilen kimliğinin, veritabanının geri yükleneceği Azure PostgreSQL – Esnek Sunucu üzerinde belirli izinlere sahip olması gerekir.

Kasanın sistem tarafından atanan yönetilen kimliğine yönelik ilgili izinleri hedef PostgreSQL – Esnek Sunucuya atamak için Azure PostgreSQL – Esnek Sunucu veritabanını yedeklemek için gereken izin kümesini kontrol edin.

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

Get-AzDataProtectionBackupInstance cmdlet'ini kullanarak tüm örnekleri getirin ve ilgili örneği tanımlayın.

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

Ayrıca, birçok kasa ve abonelikteki örnekler arasında kurtarma noktalarını aramak için Az.Resourcegraph ve Search-AzDataProtectionBackupInstanceInAzGraph cmdlet'ini kullanabilirsiniz.

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

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

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

Örnek tanımlandıktan sonra ilgili kurtarma noktasını getirin.

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

Geri yükleme isteğini hazırlama

PostgreSQL – Esnek Sunucu veritabanının kurtarma noktasını yalnızca dosya olarak geri yükleyebilirsiniz.

Dosya olarak geri yükleme

İzinlerin atandığı depolama hesabında kapsayıcının Tekdüzen Kaynak Tanımlayıcısını (URI) getirin. Örneğin, farklı bir aboneliğe sahip depolama hesabı testcontainerrestore altında, testossstorageaccount adlı bir kapsayıcı.

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

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

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

Uyarı

Hedef depolama hesabına geri yükleme tamamlandıktan sonra pg_restore yardımcı programını kullanarak PostgreSQL için Azure Veritabanı – Esnek Sunucu veritabanını hedeften geri yükleyebilirsiniz.

Mevcut bir PostgreSQL – Esnek Sunucuya ve mevcut bir veritabanına bağlanmak için aşağıdaki cmdlet'i kullanın:

pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>

Bu senaryoda:

  • -Fd: Dizin biçimi.
  • -j: İş sayısı.
  • -C: Çıktıyı veritabanını yaratmak ve ardından buna yeniden bağlanmak için bir cmdlet ile başlatır.

Aşağıdaki örnekte söz diziminin nasıl görünebileceği gösterilmektedir:

pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format

Geri yükleneceği birden fazla veritabanınız varsa, her veritabanı için önceki cmdlet'i yeniden çalıştırın. Ayrıca, birden çok eşzamanlı iş -jkullanarak, çok çekirdekli hedef sunucuda büyük bir veritabanının geri yükleme süresini azaltabilirsiniz. İş sayısı, hedef sunucu için ayrılan sayıdan vCPUs küçük veya buna eşit olabilir.

Geri yüklemeyi tetikleme

Hazırlanan istekle geri yükleme işlemini tetikleme için cmdlet'ini Start-AzDataProtectionBackupInstanceRestore kullanın

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

İşleri takip et

Get-AzDataProtectionJob cmdlet'i kullanarak tüm görevleri takip edin. 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. Tüm Backup kasalarında ilgili işi elde etmek için Search-AzDataProtectionJobInAzGraph cmdlet'ini kullanın.

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

Sonraki adımlar

PostgreSQL için Azure Veritabanı - Esnek Sunucu için yedekleme ve geri yükleme işlemleriyle ilgili yaygın hataları giderme.