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 Azure-Datenbank für PostgreSQL wiederhergestellt wird – flexibler Server mit Azure CLI.
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 derselben oder einer anderen Azure PostgreSQL zu erstellen – flexibler Server, wobei sowohl die Quell- als auch die wiederhergestellte Datenbank beibehalten werden.
Verwenden wir einen vorhandenen Sicherungstresor TestBkpVaultunter der Ressourcengruppe testBkpVaultRG in den Beispielen.
Voraussetzungen
Bevor Sie aus Sicherungen von Azure Database for PostgreSQL - Flexible Server wiederherstellen, sollten Sie die folgenden Voraussetzungen prüfen:
- Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen für den Wiederherstellungsvorgang verfügen.
- Stellen Sie sicher, dass für das Storage-Konto, das als Ziel für die Wiederherstellung dient, das Eigenschaftsset
AllowCrossTenantReplicationauftruefestgelegt ist.
Hinweis
Sicherungsdaten werden als Blob im Sicherungstresor innerhalb des Microsoft-Mandanten gespeichert. Während eines Wiederherstellungsvorgangs werden die Sicherungsdaten mandantenübergreifend von einem Speicherkonto in ein anderes kopiert.
Einrichten von Berechtigungen für PostgreSQL – Flexible Server-Wiederherstellung
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 Vault vom System zugewiesene verwaltete Identität auf dem PostgreSQL - Flexible Ziel-Server zuzuweisen, überprüfen Sie die Berechtigungen, die für die Sicherung der Azure PostgreSQL - Flexible Server-Datenbank benötigt werden.
Um den Wiederherstellungspunkt als Dateien auf einem Storage-Konto wiederherzustellen, benötigt die vom System zugewiesene verwaltete Identität des Backup-Vaults Zugriff auf das Ziel-Storage-Konto.
Abrufen des relevanten Wiederherstellungspunkts für PostgreSQL – Flexibler Server
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 für Szenarien im großen Maßstab mit dem az dataprotection backup-instance list-from-resourcegraph-Befehl Sicherungs-Instanzen über Vaults und Abonnements hinweg auflisten.
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer -subscriptions "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
{
"datasourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql/databases/empdb11",
"extendedLocation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"objectType": "Datasource",
"resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql/databases/empdb11",
"resourceLocation": "westus",
"resourceName": "postgres",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"resourceUri": ""
},
"dataSourceProperties": null,
"dataSourceSetInfo": {
"baseUri": null,
"datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers/databases",
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ossdemoRG/providers/Microsoft.DBforPostgreSQL/flexibleServers/testpostgresql",
"resourceLocation": "westus",
"resourceName": "testpostgresql",
"resourceProperties": null,
"resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"tags": null,
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "testBkpVault",
"zones": null
}
.
.
Nachdem die Instanz identifiziert wurde, rufen Sie den relevanten Wiederherstellungspunkt mithilfe des az dataprotection recovery-point list Befehls ab.
az dataprotection recovery-point list --backup-instance-name testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149 -g testBkpVaultRG --vault-name TestBkpVault
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149/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"
}
Vorbereiten der PostgreSQL – Flexible Server-Wiederherstellungsanforderung
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 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 AzureDatabaseForPostgreSQLFlexibleServer --restore-location {location} --source-datastore VaultStore -target-blob-container-url $contURI --target-file-name "empdb11_postgresql-westus_1628853549768" --recovery-point-id 9da55e757af94261afa009b43cd3222a > OssRestoreAsFilesReq.JSON
Hinweis
Nachdem die Wiederherstellung des Zielspeicherkontos abgeschlossen ist, können Sie das pg_restore Dienstprogramm verwenden, um eine Azure-Datenbank für PostgreSQL – flexible Serverdatenbank aus dem Ziel wiederherzustellen.
Verwenden Sie den folgenden Befehl, um eine Verbindung mit einem vorhandenen PostgreSQL – Flexible Server und einer vorhandenen Datenbank herzustellen:
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 Befehl, 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 mehr als eine Datenbank wiederherstellen müssen, führen Sie den früheren Befehl für jede Datenbank erneut aus. Außerdem können Sie mithilfe mehrerer gleichzeitiger Aufträge -jdie Wiederherstellungszeit für eine große 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 az dataprotection backup-instance restore trigger den Befehl, um den Wiederherstellungsvorgang mit der vorbereiteten Anforderung auszulösen.
az dataprotection backup-instance restore trigger -g testBkpVaultRG --vault-name TestBkpVault --backup-instance-name testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149 --restore-request-object OssRestoreReq.JSON
Nachverfolgen von Aufträgen für PostgreSQL – Flexible Serverwiederherstellung
Verfolgen Sie alle Aufträge 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 az dataprotection job list-from-resourcegraph-Befehl, um den entsprechenden Job abzurufen, der sich über alle Vaults der Sicherung erstreckt.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --operation Restore