Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u de Azure CLI gebruikt om PostgreSQL-databases te herstellen naar een Azure Database for PostgreSQL-server waarvan u een back-up hebt gemaakt via Azure Backup. U kunt ook een PostgreSQL-database herstellen met behulp van Azure Portal, Azure PowerShell en REST API.
Omdat een PostgreSQL-database een PaaS-database (Platform as a Service) is, wordt de optie Original-Location Recovery (OLR) om te herstellen niet ondersteund door de bestaande database (van waaruit de back-ups zijn gemaakt) te vervangen. U kunt herstellen vanaf een herstelpunt om een nieuwe database te maken op dezelfde Azure Database for PostgreSQL-server of op een andere PostgreSQL-server. Deze optie wordt Alternate-Location Recovery (ALR) genoemd. ALR helpt bij het behouden van zowel de brondatabase als de herstelde (nieuwe) database.
De voorbeelden in dit artikel verwijzen naar een bestaande Back-upkluis met de naam TestBkpVault onder de resourcegroep testBkpVaultRG.
Een back-up van een PostgreSQL-database herstellen
Machtigingen instellen
Een Backup-kluis maakt gebruik van een beheerde identiteit voor toegang tot andere Azure-resources. Als u wilt herstellen vanuit een back-up, vereist de beheerde identiteit van de Backup-kluis een set machtigingen op de Azure Database for PostgreSQL-server waarnaar de database moet worden hersteld.
Als u de relevante machtigingen wilt toewijzen voor de door het systeem toegewezen beheerde identiteit van een kluis op de PostgreSQL-doelserver, raadpleegt u de set machtigingen die nodig zijn om een back-up te maken van een PostgreSQL-database.
Als u het herstelpunt als bestanden wilt herstellen naar een opslagaccount, moet de door het systeem toegewezen beheerde identiteit van de Backup-kluis toegang hebben tot het doelopslagaccount.
Het relevante herstelpunt ophalen
Gebruik het az dataprotection backup-instance list commando om alle back-ups in een kluis weer te geven. Haal vervolgens het relevante exemplaar op met behulp van de az dataprotection backup-instance show opdracht.
Als alternatief kunt u voor scenario's op schaal ook back-upexemplaren in kluizen en abonnementen weergeven met behulp van de az dataprotection backup-instance list-from-resourcegraph opdracht.
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
}
.
.
.
.
.
Nadat u het exemplaar hebt geïdentificeerd, haalt u het relevante herstelpunt op met behulp van de az dataprotection recovery-point list opdracht:
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"
}
Als u het herstelpunt uit de archieflaag moet ophalen, is de type variabele in recoveryPointDataStoreDetailsArchiveStore.
De herstelaanvraag voorbereiden
Er zijn verschillende herstelopties voor een PostgreSQL-database. U kunt het herstelpunt herstellen als een andere database of als bestanden herstellen. Het herstelpunt kan zich ook op de archieflaag bevinden.
Herstellen als een database
Maak de Azure Resource Manager-id van de nieuwe PostgreSQL-database met behulp van de PostgreSQL-doelserver waaraan u machtigingen hebt toegewezen. Maak ook de vereiste PostgreSQL-databasenaam. Een PostgreSQL-database kan bijvoorbeeld worden benoemd emprestored21 onder een postgreSQL-doelserver met de naam targetossserver in de resourcegroep targetrg met een ander abonnement:
$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
Gebruik de az dataprotection backup-instance restore initialize-for-data-recovery opdracht om de herstelaanvraag voor te bereiden met alle relevante details:
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
Voor een herstelpunt op basis van een archief moet u het volgende doen:
- Rehydrateer uit het archiefgegevensarchief naar het gegevensarchief van de kluis.
- Wijzig het brongegevensarchief.
- Voeg andere parameters toe om de prioriteit van rehydratie te specificeren.
- Geef de duur op waarvoor het gerehydrateerde herstelpunt moet worden bewaard in de datakluis.
- Herstel de database vanaf dit herstelpunt.
Gebruik de volgende opdracht om de aanvraag voor te bereiden op alle eerder genoemde bewerkingen tegelijk:
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
Herstellen als bestanden
Haal de URI van de container op binnen het opslagaccount waaraan u machtigingen hebt toegewezen. In het volgende voorbeeld wordt een container gebruikt met de naam testcontainerrestore onder een opslagaccount testossstorageaccount met een ander abonnement:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Gebruik de az dataprotection backup-instance restore initialize-for-data-recovery-as-files opdracht om de herstelaanvraag voor te bereiden met alle relevante details:
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
Voor het op archief gebaseerde herstelpunt, in het volgende script:
- Wijzig het brongegevensarchief.
- Voeg de rehydratatieprioriteit en de bewaarduur, in dagen, van het gerehydrateerde herstelpunt toe.
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
Gebruik de az dataprotection backup-instance validate-for-restore opdracht om te controleren of het JSON-bestand slaagt in het maken van nieuwe resources.
De herstelbewerking activeren
Gebruik de az dataprotection backup-instance restore trigger opdracht om de herstelbewerking te activeren met de eerder voorbereide aanvraag:
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
Banen bijhouden
Taken bijhouden met behulp van de az dataprotection job list opdracht. U kunt alle taken weergeven en een bepaalde taakdetails ophalen.
U kunt ook Az.ResourceGraph taken bijhouden in alle Backup-kluizen. Gebruik de az dataprotection job list-from-resourcegraph opdracht om de relevante taak op te halen die zich in alle Backup-kluizen bevinden:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore