Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie die Azure CLI verwenden, um PostgreSQL-Datenbanken in einer Azure-Datenbank für PostgreSQL-Server wiederherzustellen, die Sie über Azure Backup gesichert haben. Sie können eine PostgreSQL-Datenbank auch mithilfe von Azure-Portal, Azure PowerShell und REST-API wiederherstellen.
Da es sich bei einer PostgreSQL-Datenbank um eine Plattform als Dienst(PaaS)-Datenbank handelt, wird die option Original-Location Recovery (OLR) zum Wiederherstellen durch Ersetzen der vorhandenen Datenbank (von wo aus die Sicherungen übernommen wurden) nicht unterstützt. Sie können aus einem Wiederherstellungspunkt wiederherstellen, um eine neue Datenbank in derselben Azure-Datenbank für PostgreSQL-Server oder auf einem beliebigen anderen PostgreSQL-Server zu erstellen. Diese Option wird als Alternate-Location Recovery (ALR) bezeichnet. ALR hilft dabei, sowohl die Quelldatenbank als auch die wiederhergestellte (neue) Datenbank beizubehalten.
Die Beispiele in diesem Artikel beziehen sich auf einen vorhandenen Sicherungstresor namens TestBkpVault
, der zur Ressourcengruppe testBkpVaultRG
gehört.
Wiederherstellung einer gesicherten PostgreSQL-Datenbank
Einrichten von Berechtigungen
Ein Sicherungstresor verwendet eine verwaltete Identität, um auf andere Azure-Ressourcen zuzugreifen. Zur Wiederherstellung aus einer Sicherung benötigt die verwaltete Identität des Backup-Tresors verschiedene Berechtigungen auf dem Azure Database for PostgreSQL-Server, auf dem die Datenbank wiederhergestellt werden soll.
Weitere Informationen zum Zuweisen der relevanten Berechtigungen für eine systemseitig zugewiesene verwaltete Identität des Tresors auf dem PostgreSQL-Zielserver finden Sie unter Für die Sicherung einer PostgreSQL-Datenbank erforderliche Berechtigungen.
Um den Wiederherstellungspunkt als Dateien in einem Speicherkonto wiederherzustellen, benötigt die dem System zugewiesene verwaltete Identität des Backup-Datenspeichers Zugriff auf das Zielspeicherkonto.
Holen Sie den entsprechenden Wiederherstellungspunkt
Verwenden Sie den az dataprotection backup-instance list
Befehl, um alle Sicherungsinstanzen in einem Tresor auflisten zu können. Rufen Sie dann die relevante Instanz mithilfe des az dataprotection backup-instance show
Befehls ab.
Alternativ können Sie in großen Szenarien Sicherungsinstanzen über Tresore und Abonnements hinweg auflisten, indem Sie den az dataprotection backup-instance list-from-resourcegraph
Befehl verwenden:
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL -subscriptions "xxxxxxxx-xxxx-xxxx-xxxx"
{
"datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
"extendedLocation": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql/databases/empdb11",
"resourceLocation": "westus",
"resourceName": "postgres",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceUri": ""
},
"dataSourceProperties": null,
"dataSourceSetInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/servers/testpostgresql",
"resourceLocation": "westus",
"resourceName": "testpostgresql",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceUri": ""
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"friendlyName": "testpostgresql\\empdb11",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/osspol3",
"policyParameters": null,
"policyVersion": ""
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded",
"validationType": null
},
"protectionState": "ProtectionConfigured",
"resourceGroup": "testBkpVaultRG",
"sku": null,
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tags": null,
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "testBkpVault",
"zones": null
}
.
.
.
.
.
Nachdem Sie die Instanz identifiziert haben, rufen Sie den relevanten Wiederherstellungspunkt mithilfe des az dataprotection recovery-point list
Befehls ab:
az dataprotection recovery-point list --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e -g testBkpVaultRG --vault-name TestBkpVault
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/recoveryPoints/9da55e757af94261afa009b43cd3222a",
"name": "9da55e757af94261afa009b43cd3222a",
"properties": {
"friendlyName": "2031fdb43a914114b6ce644eb6fcb5ce",
"objectType": "AzureBackupDiscreteRecoveryPoint",
"policyName": "oss-clitest-policy",
"policyVersion": null,
"recoveryPointDataStoresDetails": [
{
"creationTime": "2021-09-13T15:17:41.209845+00:00",
"expiryTime": null,
"id": "beddea84-7b30-42a5-a752-7c75baf96a52",
"metaData": "{\"objectType\":\"PostgresBackupMetadata\",\"version\":\"1.0\",\"postgresVersion\":\"11\",\"dbName\":\"postgres\",\"serverName\":\"testpostgresql\",\"serverFQDN\":\"testpostgresql.postgres.database.azure.com\",\"usernameUsed\":\"backupadmin@testpostgresql\",\"backupToolPath\":\"postgresql-11.6-1\\\\bin\\\\pg_dump.exe\",\"backupType\":\"Full\",\"backupDumpFormat\":\"CUSTOM\",\"backupToolArgsFormat\":\"--no-acl --no-owner --serializable-deferrable --no-tablespaces --quote-all-identifiers -Fc -d postgres://{0}:{1}@{2}:5432/{3}?sslmode=verify-full&sslrootcert=E:\\\\approot\\\\Plugins\\\\Postgres\\\\..\\\\..\\\\postgres-root.crt\",\"storageUnits\":{\"1\":\"DbBackupDumpData\"},\"streamNamesInFirstStorageUnit\":[\"dbbkpdmpdatastream-1631546260050\"],\"pitId\":\"2031fdb43a914114b6ce644eb6fcb5ce\",\"bytesTransferred\":2063,\"dataSourceSize\":8442527,\"backupToolVersion\":\"11\"}",
"rehydrationExpiryTime": null,
"rehydrationStatus": null,
"state": "COMMITTED",
"type": "VaultStore",
"visible": true
}
],
"recoveryPointId": "9da55e757af94261afa009b43cd3222a",
"recoveryPointTime": "2021-09-13T15:17:41.209845+00:00",
"recoveryPointType": "Full",
"retentionTagName": "default",
"retentionTagVersion": "637671427933449525"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances/recoveryPoints"
}
Wenn Sie den Wiederherstellungspunkt von der Archivebene abrufen müssen, ist die type
-Variable in recoveryPointDataStoreDetails
ArchiveStore
.
Vorbereiten der Wiederherstellungsanforderung
Es gibt verschiedene Wiederherstellungsoptionen für eine PostgreSQL-Datenbank. Sie können den Wiederherstellungspunkt als andere Datenbank oder als Dateien wiederherstellen. Der Wiederherstellungspunkt kann sich auch auf der Archivebene befinden.
Wiederherstellen als Datenbank
Erstellen Sie die Azure Resource Manager-ID der neuen PostgreSQL-Datenbank mithilfe des Ziel-PostgreSQL-Servers, dem Sie Berechtigungen zugewiesen haben. Erstellen Sie außerdem den erforderlichen PostgreSQL-Datenbanknamen. Eine PostgreSQL-Datenbank kann beispielsweise als emprestored21
unter einem PostgreSQL-Zielserver namens targetossserver
in der Ressourcengruppe targetrg
mit einem anderen Abonnement benannt werden:
$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
Verwenden Sie den az dataprotection backup-instance restore initialize-for-data-recovery
Befehl, um die Wiederherstellungsanforderung mit allen relevanten Details vorzubereiten:
az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore VaultStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" > OssRestoreReq.JSON
Für einen archivbasierten Wiederherstellungspunkt müssen Sie Folgendes tun:
- Aktivieren aus dem Archivdatenspeicher im Tresorspeicher
- Ändern des Quelldatenspeichers
- Weitere Parameter hinzufügen, um die Priorität der Rehydrierung anzugeben.
- Angeben der Dauer, für die der aktivierte Wiederherstellungspunkt im Tresordatenspeicher beibehalten werden soll
- Wiederherstellung als Datenbank von diesem Wiederherstellungspunkt aus.
Verwenden Sie den folgenden Befehl, um die Anforderung auf alle zuvor erwähnten Vorgänge gleichzeitig vorzubereiten:
az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore ArchiveStore --target-resource-id $targetOssId --recovery-point-id 9da55e757af94261afa009b43cd3222a --secret-store-type AzureKeyVault --secret-store-uri "https://restoreoss-test.vault.azure.net/secrets/dbauth3" --rehydration-priority Standard --rehydration-duration 12 > OssRestoreFromArchiveReq.JSON
Wiederherstellen als Dateien
Rufen Sie den URI des Containers innerhalb des Speicherkontos ab , dem Sie Berechtigungen zugewiesen haben. Im folgenden Beispiel wird ein Container testcontainerrestore
in einem Speicherkonto testossstorageaccount
mit einem anderen Abonnement verwendet:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Verwenden Sie den az dataprotection backup-instance restore initialize-for-data-recovery-as-files
Befehl, um die Wiederherstellungsanforderung mit allen relevanten Details vorzubereiten:
az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore VaultStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a > OssRestoreAsFilesReq.JSON
Für den archivbasierten Wiederherstellungspunkt gehen Sie im folgenden Skript wie folgt vor:
- Ändern des Quelldatenspeichers
- Fügen Sie die Aktivierungspriorität und die Aufbewahrungsdauer (in Tagen) des aktivierten Wiederherstellungspunkts hinzu.
az dataprotection backup-instance restore initialize-for-data-recovery-as-files --datasource-type AzureDatabaseForPostgreSQL --restore-location {location} --source-datastore ArchiveStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a --rehydration-priority Standard --rehydration-duration 12 > OssRestoreAsFilesReq.JSON
Verwenden Sie den az dataprotection backup-instance validate-for-restore
Befehl, um zu überprüfen, ob die JSON-Datei erfolgreich beim Erstellen neuer Ressourcen ist.
Auslösen des Wiederherstellungsvorgangs
Verwenden Sie den az dataprotection backup-instance restore trigger
Befehl, um den Wiederherstellungsvorgang mit der zuvor vorbereiteten Anforderung auszulösen:
az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e --restore-request-object OssRestoreReq.JSON
Nachverfolgen von Aufträgen
Nachverfolgen von Aufträgen mithilfe des az dataprotection job list
Befehls. 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 den Befehl az dataprotection job list-from-resourcegraph
, um den relevanten Auftrag über alle Backup-Tresore hinweg abzurufen:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore