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 CLI 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 PowerShell 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 Säkerhetskopieringsvalv med namnet TestBkpVault
under resursgruppen testBkpVaultRG
.
Återställa en säkerhetskopierad 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 till ett lagringskonto behöver den systemtilldelade hanterade identiteten hos säkerhetskopieringsvalvet ha åtkomst till mållagringskontot.
Hämta relevant återställningspunkt
Om du vill visa en lista över alla säkerhetskopieringsinstanser i ett valv använder du kommandot az dataprotection backup-instance list
. Hämta sedan den relevanta instansen med hjälp av az dataprotection backup-instance show
kommandot.
För storskaliga scenarier kan du också lista säkerhetskopieringsinstanser över valv och prenumerationer genom att använda az dataprotection backup-instance list-from-resourcegraph
kommandot:
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
}
.
.
.
.
.
När du har identifierat instansen hämtar du den relevanta återställningspunkten med hjälp az dataprotection recovery-point list
av kommandot :
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"
}
Om du behöver hämta återställningspunkten från arkivnivån är variabeln type
i recoveryPointDataStoreDetails
ArchiveStore
.
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 med hjälp av postgreSQL-målservern som du har tilldelat behörigheter till. Skapa också 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"
az dataprotection backup-instance restore initialize-for-data-recovery
Använd kommandot för att förbereda återställningsbegäran med all relevant information:
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 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:
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
Återställa som filer
Hämta URI:n för containern i lagringskontot som du har tilldelat behörigheter till. 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"
az dataprotection backup-instance restore initialize-for-data-recovery-as-files
Använd kommandot för att förbereda återställningsbegäran med all relevant information:
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 arkivbaserade återställningspunkten i följande skript:
- Ändra källdatalagringen.
- Lägg till rehydreringsprioriteten och kvarhållningstiden i dagar för den rehydrerade återställningspunkten.
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
Om du vill kontrollera om JSON-filen lyckas skapa nya resurser använder du az dataprotection backup-instance validate-for-restore
kommandot .
Utlös återställningen
az dataprotection backup-instance restore trigger
Använd kommandot för att utlösa återställningsåtgärden med den tidigare förberedda begäran:
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
Spåra arbeten
Spåra jobb genom att använda az dataprotection job list
-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.
az dataprotection job list-from-resourcegraph
Använd kommandot för att hämta det relevanta jobbet som finns i alla Säkerhetskopieringsvalv:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore