Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak obnovit flexibilní server Azure Database for PostgreSQL pomocí Azure CLI.
Poznámka:
Možnost Obnovení původního umístění (OLR) není u databází PaaS podporovaná. Místo toho použijte Alternate-Location Recovery (ALR) k obnovení z bodu obnovení a vytvoření nové databáze na stejném nebo jiném flexibilním serveru Azure PostgreSQL, který uchovává zdrojové i obnovené databáze.
V příkladech použijeme existující zálohovací trezor TestBkpVault ve skupině prostředků testBkpVaultRG.
Požadavky
Před obnovením ze zálohy flexibilního serveru Azure Database for PostgreSQL si projděte následující požadavky:
- Ujistěte se, že máte požadovaná oprávnění pro operaci obnovení.
- Ujistěte se, že cílový účet úložiště pro obnovení má vlastnost nastavenou
AllowCrossTenantReplicationnatrue.
Poznámka:
Zálohovaná data se ukládají v zálohovacím trezoru jako blob v rámci tenanta Microsoftu. Během operace obnovení se zálohovaná data zkopírují z jednoho účtu úložiště do druhého napříč tenanty.
Nastavení oprávnění pro obnovení
Trezor služby Backup používá spravovanou identitu pro přístup k dalším prostředkům Azure. K obnovení ze zálohy vyžaduje spravovaná identita trezoru služby Backup sadu oprávnění na flexibilním serveru Azure PostgreSQL, do kterého se má databáze obnovit.
Pokud chcete přiřadit příslušná oprávnění pro spravovanou identitu přiřazenou systémem trezoru na cílovém flexibilním serveru PostgreSQL, zkontrolujte sadu oprávnění potřebná k zálohování databáze flexibilního serveru Azure PostgreSQL.
Pokud chcete obnovit bod obnovení jako soubory do účtu úložiště, spravovaná identita přiřazená systémem trezoru služby Backup potřebuje mít přístup k cílovému účtu úložiště.
Získejte příslušný bod obnovení
Pokud chcete vypsat všechny instance zálohování v trezoru, použijte az dataprotection backup-instance list tento příkaz. Potom načtěte příslušnou instanci pomocí příkazu az dataprotection backup-instance show. Alternativně pro scénáře ve velkém měřítku můžete pomocí příkazu vypsat instance zálohování napříč trezory a předplatnými az dataprotection backup-instance list-from-resourcegraph .
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
}
.
.
Jakmile je instance identifikovaná, pomocí az dataprotection recovery-point list příkazu načtěte příslušný bod obnovení.
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"
}
Příprava žádosti o obnovení
Bod obnovení pro databázi flexibilního serveru PostgreSQL můžete obnovit pouze jako soubory.
Obnovit jako soubory
Načtěte identifikátor URI (Uniform Resource Identifier) kontejneru v rámci účtu úložiště, ke kterému byla přiřazena oprávnění. Například kontejner pojmenovaný testcontainerrestore v rámci účtu úložiště testossstorageaccount s jiným předplatným.
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
az dataprotection backup-instance restore initialize-for-data-recovery-as-files Pomocí příkazu připravte žádost o obnovení se všemi relevantními podrobnostmi.
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
Poznámka:
Po dokončení obnovení do cílového účtu úložiště můžete pomocí pg_restore nástroje obnovit databázi flexibilního serveru Azure Database for PostgreSQL z cíle.
Pokud se chcete připojit k existujícímu flexibilnímu serveru PostgreSQL a existující databázi, použijte následující příkaz:
pg_restore -h <hostname> -U <username> -d <db name> -Fd -j <NUM> -C <dump directory>
V tomto skriptu:
-
Fd: Formát adresáře. -
-j: Počet pracovních míst. -
-C: Spustí výstup příkazem, který vytvoří samotnou databázi a pak se k ní znovu připojí.
Následující příklad ukazuje, jak se syntaxe může zobrazit:
pg_restore -h <hostname> -U <username> -j <Num of parallel jobs> -Fd -C -d <databasename> sampledb_dir_format
Pokud máte k obnovení více než jednu databázi, spusťte znovu předchozí příkaz pro každou databázi. Pomocí více souběžných úloh -jtaké můžete zkrátit dobu obnovení velké databáze na cílovém serveru s více virtuálními jádry. Počet úloh může být roven nebo menší než počet přidělených vCPUs pro cílový server.
Spustit obnovení
K aktivaci operace obnovení s připraveným požadavkem použijte az dataprotection backup-instance restore trigger příkaz.
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
Sledování prací
Pomocí příkazu můžete sledovat všechny úlohy az dataprotection job list . Můžete zobrazit seznam všech úloh a načíst konkrétní podrobnosti úlohy.
Můžete také použít Az.ResourceGraph ke sledování úloh ve všech trezorech služby Backup. Pomocí příkazu az dataprotection job list-from-resourcegraph získáte příslušnou úlohu, která se nachází ve všech úložištích Backup.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQLFlexibleServer --operation Restore
Další kroky
Řešení běžných chyb při operacích zálohování a obnovení pro Azure Database for PostgreSQL – flexibilní server.