Freigeben über


Wiederherstellen der Azure-Datenbank für PostgreSQL – Flexibler Server mit Azure PowerShell

In diesem Artikel wird beschrieben, wie Azure-Datenbank für PostgreSQL wiederhergestellt wird – flexibler Server mit Azure PowerShell.

Hinweis

Die OlR-Option (Original Location Recovery) wird für PaaS-Datenbanken nicht unterstützt. Verwenden Sie stattdessen die Alternate-Location Recovery (ALR), um aus einem Wiederherstellungspunkt wiederherzustellen und eine neue Datenbank in demselben oder einem anderen Azure PostgreSQL -Flexiblen Server zu erstellen und sowohl die Quell- als auch die wiederhergestellten Datenbanken beizubehalten.

Verwenden wir einen vorhandenen Sicherungstresor TestBkpVaultunter der Ressourcengruppe testBkpVaultRG in den Beispielen.

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

Einrichten von Berechtigungen für PostgreSQL – Flexible Serverwiederherstellung

Der Sicherungstresor verwendet die verwaltete Identität für den Zugriff auf andere Azure-Ressourcen. Für die Wiederherstellung aus einer Sicherung benötigt die verwaltete Identität des Vault ein Set von Berechtigungen auf dem Azure PostgreSQL - Flexible Server, auf dem die Datenbank wiederhergestellt werden soll.

Um die entsprechenden Berechtigungen für die dem Tresor vom System zugewiesene verwaltete Identität auf dem Ziel PostgreSQL - Flexible Server zuzuweisen, überprüfen Sie die Berechtigungen, die für die Sicherung der Azure PostgreSQL - Flexible Server Datenbank erforderlich sind.

Um den Wiederherstellungspunkt als Dateien in einem Speicherkonto wiederherzustellen, benötigt die systemseitig zugewiesene verwaltete Identität des Backup-Tresors Zugriff auf das Zielspeicherkonto.

Abrufen des relevanten Wiederherstellungspunkts von PostgreSQL - Flexibler Server

Rufen Sie alle Instanzen mithilfe des Cmdlets "Get-AzDataProtectionBackupInstance " ab, und identifizieren Sie die relevante Instanz.

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

Sie können auch Az.Resourcegraph und das Cmdlet Search-AzDataProtectionBackupInstanceInAzGraph verwenden, um Wiederherstellungspunkte über Instanzen in vielen Vaults und Abonnements zu suchen.

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

Verwenden Sie die folgenden PowerShell-Clientsuchfunktionen, um die Suchkriterien zu filtern:

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

Rufen Sie den entsprechenden Wiederherstellungspunkt ab, sobald die Instanz identifiziert wurde.

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

Vorbereiten der Wiederherstellungsanforderung für PostgreSQL – Flexibler Server

Sie können den Wiederherstellungspunkt für eine PostgreSQL - Flexible Server-Datenbank nur als Dateien wiederherstellen.

Wiederherstellen als Dateien

Rufen Sie den URI (Uniform Resource Identifier) des Containers innerhalb des Speicherkontos ab, dem Berechtigungen zugewiesen wurden. Beispielsweise ein Container mit Namen testcontainerrestore unter einem Speicherkonto testossstorageaccount mit einem anderen Abonnement.

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

Verwenden Sie das Cmdlet Initialize-AzDataProtectionRestoreRequest , um die Wiederherstellungsanforderung mit allen relevanten Details vorzubereiten.

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

Hinweis

Nachdem die Wiederherstellung beim Zielspeicherkonto abgeschlossen ist, können Sie das Hilfsprogramm pg_restore verwenden, um eine Azure-Datenbank für PostgreSQL – Flexible Server vom Ziel wiederherzustellen.

Verwenden Sie zum Herstellen einer Verbindung mit einer vorhandenen PostgreSQL – Flexible Server und einer vorhandenen Datenbank das folgende Cmdlet:

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

In diesem Skript:

  • -Fd: Das Verzeichnisformat.
  • -j: Die Anzahl der Aufträge.
  • -C: Startet die Ausgabe mit einem Cmdlet, um die Datenbank selbst zu erstellen und dann erneut eine Verbindung damit herzustellen.

Das folgende Beispiel zeigt, wie die Syntax aussehen kann:

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

Wenn Sie mehrere Datenbanken wiederherstellen müssen, führen Sie das frühere Cmdlet für jede Datenbank erneut aus. Mit mehreren gleichzeitigen Aufträgen -jkönnen Sie auch die Wiederherstellungszeit einer großen Datenbank auf einem Multi-vCore-Zielserver reduzieren. Die Anzahl der Aufträge kann gleich oder kleiner als die Anzahl der zugewiesenen vCPUs Aufträge für den Zielserver sein.

Auslösen der Wiederherstellung für PostgreSQL - Flexibler Server

Verwenden Sie Start-AzDataProtectionBackupInstanceRestore das Cmdlet, um den Wiederherstellungsvorgang mit der vorbereiteten Anforderung auszulösen.

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

Nachverfolgen von Aufträgen für PostgreSQL – Flexible Serverwiederherstellung

Verfolgen Sie alle Aufträge mithilfe des Cmdlets Get-AzDataProtectionJob . Sie können alle Aufträge auflisten und ein bestimmtes Auftragsdetail abrufen.

Sie können auch Az.ResourceGraph verwenden, um Aufträge über alle Backup-Tresore hinweg nachzuverfolgen. Verwenden Sie das Cmdlet Search-AzDataProtectionJobInAzGraph, um den entsprechenden Job zu finden, der sich über alle Sicherungs-Vaults erstreckt.

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

Nächste Schritte

Behebung häufiger Fehler bei Sicherungs- und Wiederherstellungsvorgängen für die Azure Database for PostgreSQL – Flexible Server.