Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób używania interfejsu wiersza polecenia platformy Azure do przywracania baz danych PostgreSQL na serwer usługi Azure Database for PostgreSQL , którego kopia zapasowa została utworzona za pośrednictwem usługi Azure Backup. Bazę danych PostgreSQL można również przywrócić przy użyciu witryny Azure Portal, programu Azure PowerShell i interfejsu API REST.
Ponieważ baza danych PostgreSQL jest bazą danych jako usługa (PaaS), opcja odzyskiwania Original-Location (OLR), zastępując istniejącą bazę danych (z której zostały wykonane kopie zapasowe), nie jest obsługiwana. Możesz przywrócić z punktu odzyskiwania, aby utworzyć nową bazę danych na tym samym serwerze usługi Azure Database for PostgreSQL lub na dowolnym innym serwerze PostgreSQL. Ta opcja jest nazywana Alternate-Location Recovery (ALR). Funkcja ALR pomaga zachować zarówno źródłową bazę danych, jak i przywróconą (nową) bazę danych.
Przykłady w tym artykule dotyczą istniejącego magazynu kopii zapasowych o nazwie TestBkpVault w grupie zasobów testBkpVaultRG.
Przywróć zarchiwizowaną bazę danych PostgreSQL
Konfigurowanie uprawnień
Backup vault używa tożsamości zarządzanej do uzyskiwania dostępu do innych zasobów platformy Azure. Aby przywrócić kopię zapasową, tożsamość zarządzana magazynu kopii zapasowych wymaga zestawu uprawnień na serwerze usługi Azure Database for PostgreSQL, do którego ma zostać przywrócona baza danych.
Aby przypisać odpowiednie uprawnienia dla przypisanej przez system tożsamości zarządzanej magazynu na docelowym serwerze PostgreSQL, zobacz zestaw uprawnień wymaganych do utworzenia kopii zapasowej bazy danych PostgreSQL.
Aby przywrócić punkt odzyskiwania jako pliki do konta magazynu, systemowo przypisana tożsamość zarządzana skarbca kopii zapasowych wymaga dostępu do docelowego konta magazynu.
Pobierz odpowiedni punkt odzyskiwania
Aby wyświetlić listę wszystkich wystąpień kopii zapasowych w magazynie, użyj polecenia az dataprotection backup-instance list. Następnie pobierz odpowiednie wystąpienie przy użyciu az dataprotection backup-instance show polecenia .
Alternatywnie, w przypadku scenariuszy na dużą skalę, można wyświetlić listę wystąpień kopii zapasowych w magazynach i subskrypcjach przy użyciu polecenia 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
}
.
.
.
.
.
Po zidentyfikowaniu wystąpienia pobierz odpowiedni punkt odzyskiwania przy użyciu polecenia az dataprotection recovery-point list.
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"
}
Jeśli musisz pobrać punkt odzyskiwania z warstwy archiwum, zmienna type w recoveryPointDataStoreDetails to ArchiveStore.
Przygotuj żądanie przywrócenia
Istnieją różne opcje przywracania bazy danych PostgreSQL. Punkt odzyskiwania można przywrócić jako inną bazę danych lub przywrócić jako pliki. Punkt odzyskiwania może również znajdować się w warstwie archiwum.
Przywróć jako bazę danych
Skonstruuj identyfikator usługi Azure Resource Manager nowej bazy danych PostgreSQL przy użyciu docelowego serwera PostgreSQL, do którego przypisano uprawnienia. Ponadto skonstruuj wymaganą nazwę bazy danych PostgreSQL. Na przykład baza danych PostgreSQL może mieć nazwę emprestored21 w ramach docelowego serwera PostgreSQL o nazwie targetossserver w grupie targetrg zasobów z inną subskrypcją:
$targetOssId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
Użyj polecenia , az dataprotection backup-instance restore initialize-for-data-recovery aby przygotować żądanie przywracania ze wszystkimi odpowiednimi szczegółami:
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
W przypadku punktu odzyskiwania opartego na archiwum należy wykonać następujące kroki:
- Przywracanie danych z magazynu archiwum do magazynu danych typu skarbiec.
- Zmodyfikuj źródłowy magazyn danych.
- Dodaj inne parametry, aby określić priorytet rehydratacji.
- Określ czas, przez jaki zrehydratowany punkt odzyskiwania ma być przechowywany w magazynie danych.
- Przywróć jako bazę danych z tego punktu odzyskiwania.
Użyj następującego polecenia, aby przygotować żądanie dla wszystkich wcześniej wymienionych operacji jednocześnie:
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
Przywróć jako pliki
Pobierz identyfikator URI kontenera na koncie magazynowym , do którego przypisano uprawnienia. W poniższym przykładzie użyto kontenera o nazwie testcontainerrestore w ramach konta magazynu o nazwie testossstorageaccount, z inną subskrypcją:
$contURI = "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
Użyj polecenia , az dataprotection backup-instance restore initialize-for-data-recovery-as-files aby przygotować żądanie przywracania ze wszystkimi odpowiednimi szczegółami:
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
W przypadku punktu odzyskiwania opartego na archiwum w następującym skrypcie:
- Zmodyfikuj źródłowy magazyn danych.
- Dodaj priorytet rehdatacji oraz czas trwania przechowywania punktu odzyskiwania po rehdatacji, w dniach.
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
Aby sprawdzić, czy plik JSON pomyślnie utworzy nowe zasoby, użyj polecenia az dataprotection backup-instance validate-for-restore.
Rozpocznij przywracanie
az dataprotection backup-instance restore trigger Użyj polecenia , aby wyzwolić operację przywracania z wcześniej przygotowanym żądaniem:
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
Śledź zadania
Śledź zadania przy użyciu polecenia az dataprotection job list. Możesz wyświetlić listę wszystkich zadań i pobrać szczegóły określonego zadania.
Możesz również użyć Az.ResourceGraph do śledzenia zadań we wszystkich magazynach usługi Backup. Użyj polecenia az dataprotection job list-from-resourcegraph aby uzyskać odpowiednie zadanie, które znajduje się we wszystkich magazynach kopii zapasowych.
az dataprotection job list-from-resourcegraph --datasource-type AzureDatabaseForPostgreSQL --operation Restore