Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare l'interfaccia della riga di comando di Azure per ripristinare i database PostgreSQL in un server di Database di Azure per PostgreSQL di cui è stato eseguito il backup tramite Backup di Azure. È anche possibile ripristinare un database PostgreSQL usando il portale di Azure, Azure PowerShell e l'API REST.
Poiché un database PostgreSQL è un database PaaS (Platform as a Service), l'opzione OLR (Original-Location Recovery) da ripristinare sostituendo il database esistente (da cui sono stati eseguiti i backup) non è supportato. È possibile eseguire il ripristino da un punto di ripristino per creare un nuovo database nello stesso server di Database di Azure per PostgreSQL o in qualsiasi altro server PostgreSQL. Questa opzione è denominata Alternate-Location Recovery (ALR). ALR consente di mantenere sia il database di origine che il database ripristinato (nuovo).
Gli esempi in questo articolo fanno riferimento a un vault di backup esistente denominato TestBkpVault nel gruppo testBkpVaultRG di risorse.
Ripristinare un database PostgreSQL di cui è stato eseguito il backup
Impostare le autorizzazioni
Un vault di backup usa un'identità gestita per accedere ad altre risorse di Azure. Per eseguire il ripristino da un backup, la Managed Identity del vault di Backup richiede un set di autorizzazioni sul server Azure Database per PostgreSQL su cui deve essere ripristinato il database.
Per assegnare le autorizzazioni pertinenti all'identità gestita assegnata dal sistema per il vault sul server PostgreSQL di destinazione, vedere il elenco delle autorizzazioni necessarie per eseguire il backup di un database PostgreSQL.
Per ripristinare il punto di ripristino come file in un account di archiviazione, l'identità gestita assegnata dal sistema dell'insieme di credenziali di Backup richiede l'accesso nell'account di archiviazione di destinazione.
Recupero del punto di ripristino pertinente
Per elencare tutte le istanze di backup all'interno di un insieme di credenziali, usare il comando az dataprotection backup-instance list. Recuperare quindi l'istanza pertinente usando il az dataprotection backup-instance show comando .
In alternativa, per gli scenari su larga scala, è possibile elencare le istanze di backup presenti in insiemi di credenziali e sottoscrizioni usando il comando az dataprotection backup-instance list-from-resourcegraph:
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
}
.
.
.
.
.
Dopo aver identificato l'istanza, recuperare il punto di ripristino pertinente usando il az dataprotection recovery-point list comando :
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"
}
Se è necessario recuperare il punto di ripristino dal livello archivio, la type variabile in recoveryPointDataStoreDetails è ArchiveStore.
Preparare la richiesta di ripristino
Esistono varie opzioni di ripristino per un database PostgreSQL. È possibile ripristinare il punto di ripristino come un altro database o come file. Il punto di ripristino può anche trovarsi nel livello archivio.
Ripristinare come database
Creare l'ID di Azure Resource Manager del nuovo database PostgreSQL usando il server PostgreSQL di destinazione a cui sono state assegnate le autorizzazioni. Creare anche il nome del database PostgreSQL necessario. Ad esempio, un database PostgreSQL può essere denominato emprestored21 in un server PostgreSQL di destinazione denominato targetossserver nel gruppo targetrg di risorse con una sottoscrizione diversa:
$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
Usare il az dataprotection backup-instance restore initialize-for-data-recovery comando per preparare la richiesta di ripristino con tutti i dettagli pertinenti:
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
Per un punto di ripristino basato su archivio, è necessario:
- Riattivare dall’archivio dati di archiviazione all’archivio dati dell’insieme di credenziali.
- Modificare l'archivio dati di origine.
- Aggiungere altri parametri per specificare la priorità di riidratazione.
- Specificare la durata di conservazione del punto di ripristino riattivato nell'archivio dati dell'insieme di credenziali.
- Eseguire il ripristino come database da questo punto di ripristino.
Usare il comando seguente per preparare la richiesta per tutte le operazioni indicate in precedenza contemporaneamente:
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
Ripristinare come file
Recuperare l'URI del contenitore all'interno dell'account di archiviazione a cui sono state assegnate le autorizzazioni. L'esempio seguente usa un contenitore denominato testcontainerrestore in un account di archiviazione denominato testossstorageaccount con una sottoscrizione diversa:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Usare il az dataprotection backup-instance restore initialize-for-data-recovery-as-files comando per preparare la richiesta di ripristino con tutti i dettagli pertinenti:
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
Per il punto di ripristino basato su archivio, nello script seguente:
- Modificare l'archivio dati di origine.
- Aggiungere la priorità di riattivazione e la durata di conservazione, in giorni, del punto di ripristino riattivato.
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
Per verificare se il file JSON avrà esito positivo nella creazione di nuove risorse, usare il az dataprotection backup-instance validate-for-restore comando .
Attivare il processo di ripristino
Usare il az dataprotection backup-instance restore trigger comando per attivare l'operazione di ripristino con la richiesta preparata in precedenza:
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
Tenere traccia dei lavori
Tenere traccia dei processi usando il az dataprotection job list comando . È possibile elencare tutti i processi e recuperare un dettaglio specifico di un processo.
È anche possibile usare Az.ResourceGraph per tenere traccia di tutti i processi in tutti gli insiemi di credenziali di Backup. Usare il comando az dataprotection job list-from-resourcegraph per ottenere il processo pertinente per tutti gli insiemi di credenziali di Backup:
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore