Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du använder Azure PowerShell för att återställa PostgreSQL-databaser till en Azure Database for PostgreSQL-server som du säkerhetskopierade via Azure Backup. Du kan också återställa en PostgreSQL-databas med hjälp av Azure-portalen, Azure CLI och REST API.
Eftersom en PostgreSQL-databas är en PaaS-databas (plattform som en tjänst) stöds inte alternativet Original-Location Recovery (OLR) för återställning genom att ersätta den befintliga databasen (varifrån säkerhetskopiorna togs). Du kan återställa från en återställningspunkt för att skapa en ny databas i samma Azure Database for PostgreSQL-server eller på någon annan PostgreSQL-server. Det här alternativet kallas Alternate-Location Recovery (ALR). ALR hjälper till att behålla både källdatabasen och den återställda (nya) databasen.
Exemplen i den här artikeln refererar till ett befintligt Backup-valv med namnet TestBkpVault under resursgruppen testBkpVaultRG:
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
Återställ för att skapa en ny PostgreSQL-databas
Konfigurera behörigheter
Ett Säkerhetskopieringsvalv använder en hanterad identitet för att komma åt andra Azure-resurser. För att återställa från en säkerhetskopia kräver säkerhetskopieringsvalvets hanterade identitet en uppsättning behörigheter på Azure Database for PostgreSQL-servern som databasen ska återställas till.
Information om hur du tilldelar relevanta behörigheter för ett valvs systemtilldelade hanterade identitet på PostgreSQL-målservern finns i den uppsättning behörigheter som krävs för att säkerhetskopiera en PostgreSQL-databas.
För att återställa återställningspunkten som filer på ett lagringskonto behöver den systemtilldelade hanterade identiteten för säkerhetskopieringsvalvet ha åtkomst till mållagringskontot.
Hämta den relevanta återställningspunkten
Hämta alla instanser med hjälp Get-AzDataProtectionBackupInstance av kommandot och identifiera relevant instans:
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Du kan också använda Az.Resourcegraph och Search-AzDataProtectionBackupInstanceInAzGraph kommandona för att söka efter återställningspunkter över instanser i många valv och prenumerationer.
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured
Om du vill filtrera sökvillkoren använder du PowerShell-klientsökningsfunktionerna:
Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -ProtectionStatus ProtectionConfigured | Where-Object { $_.BackupInstanceName -match "empdb11"}
När du har identifierat instansen hämtar du relevant återställningspunkt:
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
Om du behöver hämta återställningspunkten från arkivnivån lägger du till ett klientfilter:
Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName | Where-Object {$_.Property.RecoveryPointDataStoresDetail[0].Type -match "Archive" }
Förbereda återställningsbegäran
Det finns olika återställningsalternativ för en PostgreSQL-databas. Du kan återställa återställningspunkten som en annan databas eller återställa som filer. Återställningspunkten kan också finnas på arkivnivån.
Återställa som en databas
Skapa Azure Resource Manager-ID:t för den nya PostgreSQL-databasen som ska skapas (med postgreSQL-målservern som behörigheterna tilldelades till, enligt beskrivningen tidigare). Inkludera det nödvändiga PostgreSQL-databasnamnet. En PostgreSQL-databas kan till exempel namnges emprestored21 under en PostgreSQL-målserver med namnet targetossserver i resursgruppen targetrg med en annan prenumeration:
$targetOssId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21
Initialize-AzDataProtectionRestoreRequest Använd kommandot för att förbereda återställningsbegäran med all relevant information:
$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
För en arkivbaserad återställningspunkt måste du:
- Extrahera från arkivdatalagringen till valvets datalager.
- Ändra källdatalagringen.
- Lägg till andra parametrar för att ange rehydreringsprioriteten.
- Ange varaktigheten för vilken den rehydrerade återställningspunkten ska behållas i valvets datalagringsutrymme.
- Återställ som en databas från den här återställningspunkten.
Använd följande kommando för att förbereda begäran för alla tidigare nämnda åtgärder samtidigt:
$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
Återställa som filer
Hämta URI:n för containern i lagringskontot som behörigheterna tilldelades, enligt beskrivningen tidigare. I följande exempel används en container med namnet testcontainerrestore under ett lagringskonto med namnet testossstorageaccount med en annan prenumeration:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Initialize-AzDataProtectionRestoreRequest Använd kommandot för att förbereda återställningsbegäran med all relevant information:
$OssRestoreAsFilesReq = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDatabaseForPostgreSQL -SourceDataStore VaultStore -RestoreLocation $TestBkpVault.Location -RestoreType RestoreAsFiles -RecoveryPoint $rps[0].Property.RecoveryPointId -TargetContainerURI $contURI -FileNamePrefix "empdb11_postgresql-westus_1628853549768"
Ändra källdatalagringen för den arkivbaserade återställningspunkten. Lägg till rehydreringsprioriteten och kvarhållningstiden i dagar för den rehydrerade återställningspunkten:
$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
Utlös återställningen
Start-AzDataProtectionBackupInstanceRestore Använd kommandot för att utlösa återställningen med den begäran som du förberedde tidigare:
Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $OssRestoreReq
Spåra arbeten
Spåra jobb genom att använda Get-AzDataProtectionJob-kommandot. Du kan visa en lista över alla jobb och hämta en viss jobbinformation.
Du kan också använda Az.ResourceGraph för att spåra jobb i alla backupvalv.
Search-AzDataProtectionJobInAzGraph Använd kommandot för att hämta det relevanta jobbet som finns i alla Säkerhetskopieringsvalv:
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDatabaseForPostgreSQL -Operation OnDemandBackup