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 API REST ochrony danych 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 wiersza polecenia platformy Azure.
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.
Wymagania wstępne
- Tworzenie magazynu kopii zapasowych
- Tworzenie zasad tworzenia kopii zapasowych bazy danych PostgreSQL
- Skonfiguruj kopię zapasową bazy danych PostgreSQL
Przykłady w tym artykule dotyczą istniejącego magazynu kopii zapasowych o nazwie TestBkpVault w grupie zasobów testBkpVaultRG.
Przywróć zarchiwizowaną bazę danych PostgreSQL
Ustaw uprawnienia
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 uprawnienia wymagane do utworzenia kopii zapasowej bazy danych PostgreSQL.
Aby przywrócić punkt odzyskiwania jako pliki do konta przechowywania, tożsamość zarządzana przypisana przez system w skarbcu kopii zapasowych wymaga dostępu na docelowym koncie przechowywania.
Pobierz odpowiedni punkt odzyskiwania
Aby wyświetlić listę wszystkich dostępnych punktów odzyskiwania dla wystąpienia kopii zapasowej, użyj interfejsu API „List Recovery Points”.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints?api-version=2021-07-01
Na przykład, API tłumaczy się jako:
GET https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/recoveryPoints?api-version=2021-07-01
Odpowiedzi dotyczące listy punktów odzyskiwania
Po przesłaniu GET żądania zwraca ona następujące odpowiedzi. Zwraca również listę wszystkich dyskretnych punktów odzyskiwania z odpowiednimi szczegółami.
| Nazwa | Typ | Opis |
|---|---|---|
200 OK |
AzureBackupRecoveryPointResourceList | Żądanie zostało ukończone. |
| Inne kody stanu | CloudError | Odpowiedź o błędzie opisuje przyczynę niepowodzenia operacji. |
Oto przykładowa odpowiedź:
HTTP/1.1 200 OK
Content-Length: 53396
Content-Type: application/json
Expires: -1
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-correlation-request-id: 41f7ef85-f31e-4db7-87ef-115e3ca65b93
x-ms-routing-request-id: SOUTHINDIA:20211022T200018Z:ba3bc1ce-c081-4895-a292-beeeb6eb22cc
Cache-Control: no-cache
Date: Fri, 22 Oct 2021 20:00:18 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
{
"value": [
{
"properties": {
"objectType": "AzureBackupDiscreteRecoveryPoint",
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b",
"recoveryPointTime": "2021-10-21T16:31:16.8316716Z",
"recoveryPointType": "Full",
"friendlyName": "794ead7c7661410da03997d210d469e7",
"recoveryPointDataStoresDetails": [
{
"id": "9ea7eaf4-eeb8-4c8f-90a7-7f04b60bf075",
"type": "VaultStore",
"creationTime": "2021-10-21T16:31:16.8316716Z",
"expiryTime": "2022-10-21T16:31:16.8316716Z",
"metaData": null,
"visible": true,
"state": "COMMITTED",
"rehydrationExpiryTime": null,
"rehydrationStatus": null
}
],
"retentionTagName": "Default",
"retentionTagVersion": "637212748405148394",
"policyName": "osspol3",
"policyVersion": null
},
.
.
.
.
Aby pobrać punkt odzyskiwania z warstwy archiwalnej, zmodyfikuj zmienną type w recoveryPointDataStoreDetails jako ArchiveStore.
Wybierz odpowiednie punkty odzyskiwania z poprzedniej listy, a następnie przygotuj żądanie przywrócenia. W tym artykule do przywrócenia jest używany punkt odzyskiwania o nazwie 794ead7c7661410da03997d210d469e7 z poprzedniej listy.
Przygotuj żądanie przywrócenia
Istnieją różne opcje przywracania bazy danych PostgreSQL. Możesz przywrócić punkt odzyskiwania jako inną bazę danych lub przywrócić go 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, która ma zostać utworzona przy użyciu docelowego serwera PostgreSQL, do którego przypisano uprawnienia (zgodnie z wcześniejszym opisem). Uwzględnij 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ą:
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
Następująca treść żądania zawiera identyfikator punktu odzyskiwania i szczegóły obiektu docelowego przywracania:
{
"restoreRequestObject": {
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "VaultStore",
"restoreTargetInfo": {
"objectType": "restoreTargetInfo",
"recoveryOption": "FailIfExists",
"dataSourceInfo": {
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"resourceName": "emprestored21",
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceLocation": "westus",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"dataSourceSetInfo": {
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver",
"resourceName": "targetossserver",
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceLocation": "westus",
"resourceUri": "",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"restoreLocation": "westus"
},
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b"
}
}
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 ponownego nawodnienia.
- Określ czas, przez jaki zrehydratowany punkt odzyskiwania ma być przechowywany w magazynie danych.
{
"restoreRequestObject": {
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "ArchiveStore",
"restoreTargetInfo": {
"objectType": "restoreTargetInfo",
"recoveryOption": "FailIfExists",
"dataSourceInfo": {
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"resourceName": "emprestored21",
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceLocation": "westus",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"dataSourceSetInfo": {
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver",
"resourceName": "targetossserver",
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceLocation": "westus",
"resourceUri": "",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"restoreLocation": "westus"
},
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b",
"rehydration_priority": "Standard",
"rehydration_retention_duration": "P15D",
}
}
Przywróć jako pliki
Pobierz identyfikator URI kontenera na koncie magazynu, do którego przypisano uprawnienia, zgodnie z wcześniejszym opisem. pl-PL: Na przykład użyj kontenera testcontainerrestore w ramach konta magazynu testossstorageaccount z inną subskrypcją.
"https://testossstorageaccount.blob.core.windows.net/testcontainerrestore"
{
"objectType": "ValidateRestoreRequestObject",
"restoreRequestObject": {
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "VaultStore",
"restoreTargetInfo": {
"targetDetails": {
"url": "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore",
"filePrefix": "empdb11_postgresql-westus_1628853549768",
"restoreTargetLocationType": "AzureBlobs"
},
"restoreLocation": "westus",
"recoveryOption": "FailIfExists",
"objectType": "RestoreFilesTargetInfo"
},
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b"
}
}
W przypadku punktu odzyskiwania opartego na archiwum zmodyfikuj źródłowy magazyn danych. Dodaj priorytet ponownego wypełniania i czas trwania przechowywania w dniach punktu odzyskiwania z ponownym wypełnianiem:
{
"objectType": "ValidateRestoreRequestObject",
"restoreRequestObject": {
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "ArchiveStore",
"restoreTargetInfo": {
"targetDetails": {
"url": "https://testossstorageaccount.blob.core.windows.net/testcontainerrestore",
"filePrefix": "empdb11_postgresql-westus_1628853549768",
"restoreTargetLocationType": "AzureBlobs"
},
"restoreLocation": "westus",
"recoveryOption": "FailIfExists",
"objectType": "RestoreFilesTargetInfo"
},
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b",
"rehydration_priority": "Standard",
"rehydration_retention_duration": "P15D",
}
}
Weryfikowanie żądania przywracania
Po przygotowaniu treści żądania zweryfikuj ją przy użyciu interfejsu API Validate For Restore. Podobnie jak w przypadku interfejsu API Validate for Backup, ten interfejs API jest operacją POST .
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore?api-version=2021-07-01
Na przykład powyższy interfejs API tłumaczy się na:
POST "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/ValidateRestore?api-version=2021-07-01"
Dowiedz się więcej o treści żądania dla tego POST interfejsu API.
Treść żądania w celu zweryfikowania żądania przywrócenia
Utworzyłeś treść żądania we wcześniejszej sekcji. Teraz dodaj typ obiektu i użyj go do wyzwolenia operacji walidacji:
{
"objectType": "ValidateRestoreRequestObject",
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b",
"restoreRequestObject": {
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "VaultStore",
"restoreTargetInfo": {
"objectType": "restoreTargetInfo",
"recoveryOption": "FailIfExists",
"dataSourceInfo": {
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"resourceName": "emprestored21",
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceLocation": "westus",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"dataSourceSetInfo": {
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver",
"resourceName": "targetossserver",
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceLocation": "westus",
"resourceUri": "",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"restoreLocation": "westus"
}
}
}
Odpowiedź na żądanie weryfikacji przywracania
Walidacja żądania przywracania jest operacją asynchroniczną. Ta operacja tworzy kolejną operację, którą musisz śledzić oddzielnie.
Operacja zwraca następujące odpowiedzi:
| Nazwa | Typ | Opis |
|---|---|---|
| 200 OK | Operacja została ukończona. | |
| 202 Zaakceptowano | Żądanie jest akceptowane. Zostanie utworzona inna operacja. |
Po przesłaniu POST operacji zwraca początkową odpowiedź jako 202 Accepted z nagłówkiem Azure-asyncOperation , jak pokazano w tej przykładowej odpowiedzi:
HTTP/1.1 202 Accepted
Content-Length: 0
Expires: -1
Pragma: no-cache
Retry-After: 10
Azure-AsyncOperation: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzVlNzMxZDBiLTQ3MDQtNDkzNS1hYmNjLWY4YWEzY2UzNTk1ZQ==?api-version=2021-07-01
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: bae60c92-669d-45a4-aed9-8392cca7cc8d
x-ms-routing-request-id: CENTRALUSEUAP:20210708T205935Z:f51db7a4-9826-4084-aa3b-ae640dc78af6
Cache-Control: no-cache
Date: Thu, 08 Jul 2021 20:59:35 GMT
Location: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationResults/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzVlNzMxZDBiLTQ3MDQtNDkzNS1hYmNjLWY4YWEzY2UzNTk1ZQ==?api-version=2021-07-01
X-Powered-By: ASP.NET
Śledź nagłówek Azure-AsyncOperation przy użyciu prostego żądania GET. Gdy żądanie zakończy się pomyślnie, zwraca 200 OK odpowiedź ze statusem.
GET https://management.azure.com/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.DataProtection/locations/westus/operationStatus/YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzY4NDNmZWZkLWU4ZTMtNDM4MC04ZTJhLWUzMTNjMmNhNjI1NA==?api-version=2021-07-01
{
"id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.DataProtection/locations/westus/operationStatus/YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzY4NDNmZWZkLWU4ZTMtNDM4MC04ZTJhLWUzMTNjMmNhNjI1NA==",
"name": "YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzY4NDNmZWZkLWU4ZTMtNDM4MC04ZTJhLWUzMTNjMmNhNjI1NA==",
"status": "Inprogress",
"startTime": "2021-10-22T20:22:41.0305623Z",
"endTime": "0001-01-01T00:00:00Z"
}
Odpowiedź wskazuje błędy, które należy rozwiązać przed przesłaniem żądania przywrócenia. W poniższym przykładzie przedstawiono, co się stanie, gdy docelowa baza danych ma niższą wersję, więc nie można jej przywrócić:
---------- Response (1892 ms) ------------
HTTP/1.1 200 OK
Content-Length: 1236
Content-Type: application/json
Expires: -1
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-correlation-request-id: 784764f8-941d-4f05-8d8c-c02d2c05f799
x-ms-routing-request-id: SOUTHINDIA:20211022T202725Z:e109a061-a09e-4f13-acd0-9b9833f851ac
Cache-Control: no-cache
Date: Fri, 22 Oct 2021 20:27:25 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
{
"id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.DataProtection/locations/westus/operationStatus/YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzY4NDNmZWZkLWU4ZTMtNDM4MC04ZTJhLWUzMTNjMmNhNjI1NA==",
"name": "YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzY4NDNmZWZkLWU4ZTMtNDM4MC04ZTJhLWUzMTNjMmNhNjI1NA==",
"status": "Failed",
"error": {
"additionalInfo": [
{
"type": "UserFacingError",
"info": {
"message": "Restoring backups of a higher PostgreSQL version to a lower version is not supported.",
"recommendedAction": [
"Restore to the same or a higher PostgreSQL version from which the backup was taken."
],
"code": "UserErrorRestoreToLowerVersion",
"target": "",
"innerError": {
"code": "InnerErrorCodeUnavailable",
"additionalInfo": {
"DetailedNonLocalisedMessage": "Restoring backup from version:10 of PostgreSQL to 9.5 of PostgreSQL not supported, as the restore server version is lower."
}
},
"isRetryable": false,
"isUserError": false,
"properties": {
"ActivityId": "2a23524f-0217-4bc1-bbe8-1546d2e6204d-Ibz"
}
}
}
],
"code": "UserErrorRestoreToLowerVersion",
"message": "Restoring backups of a higher PostgreSQL version to a lower version is not supported."
},
"startTime": "2021-10-22T20:22:41.0305623Z",
"endTime": "2021-10-22T20:23:11Z"
}
Po usunięciu błędów i ponownej walidacji żądania, zwracana jest 200 OK i odpowiedź z informacją o powodzeniu.
HTTP/1.1 200 OK
Content-Length: 443
Content-Type: application/json
Expires: -1
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 11999
x-ms-correlation-request-id: 61d62dd8-8e1a-473c-bcc6-c6a7a19fb035
x-ms-routing-request-id: SOUTHINDIA:20211022T203846Z:89af04a6-4e91-4b64-8998-a369dc763408
Cache-Control: no-cache
Date: Fri, 22 Oct 2021 20:38:46 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
{
"id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/providers/Microsoft.DataProtection/locations/westus/operationStatus/YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzU0NDI4YzdhLTJjNWEtNDNiOC05ZjBjLTM2NmQ3ZWVjZDUxOQ==",
"name": "YWJjMGRmMzQtNTY1NS00MGMyLTg4YmUtMTUyZDE3ZjdiNzMyOzU0NDI4YzdhLTJjNWEtNDNiOC05ZjBjLTM2NmQ3ZWVjZDUxOQ==",
"status": "Succeeded",
"startTime": "2021-10-22T20:28:24.3820169Z",
"endTime": "2021-10-22T20:28:49Z"
}
Wyzwalanie żądania przywracania
Operacja wyzwalania żądania przywracania jest interfejsem POST API.
Dowiedz się więcej o tej operacji.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore?api-version=2021-07-01
Na przykład, API tłumaczy się jako:
POST "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/testpostgresql-empdb11-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/restore?api-version=2021-07-01"
Utwórz treść żądania dla operacji przywracania
Po zweryfikowaniu żądań użyj tej samej treści żądania (z drobnymi zmianami), aby wyzwolić żądanie przywracania.
Jak pokazano w poniższym przykładzie, jedyną zmianą w treści żądania przywracania jest usunięcie obiektu restoreRequest na początku:
{
"objectType": "AzureBackupRecoveryPointBasedRestoreRequest",
"sourceDataStoreType": "VaultStore",
"restoreTargetInfo": {
"objectType": "restoreTargetInfo",
"recoveryOption": "FailIfExists",
"dataSourceInfo": {
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"resourceName": "emprestored21",
"resourceType": "Microsoft.DBforPostgreSQL/servers/databases",
"resourceLocation": "westus",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"dataSourceSetInfo": {
"objectType": "DatasourceSet",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/targetrg/providers/Microsoft.DBforPostgreSQL/servers/targetossserver",
"resourceName": "targetossserver",
"resourceType": "Microsoft.DBforPostgreSQL/servers",
"resourceLocation": "westus",
"resourceUri": "",
"datasourceType": "Microsoft.DBforPostgreSQL/servers/databases"
},
"datasourceAuthCredentials": {
"objectType": "SecretStoreBasedAuthCredentials",
"secretStoreResource": {
"secretStoreType": "AzureKeyVault",
"uri": "https://vikottur-test.vault.azure.net/secrets/dbauth3",
"value": null
}
},
"restoreLocation": "westus"
},
"recoveryPointId": "eb006fde78cb47198be5a320fbe45e9b"
}
Odpowiedź na żądania przywracania spustu
Operacja wyzwalania żądania przywracania jest asynchroniczna. Tak więc ta operacja tworzy inną operację, którą trzeba śledzić oddzielnie.
Operacja zwraca następujące odpowiedzi:
| Nazwa | Typ | Opis |
|---|---|---|
200 OK |
Operacja została ukończona. | |
202 Accepted |
Żądanie jest akceptowane. Zostanie utworzona inna operacja. |
Po przesłaniu POST operacji zwraca początkową odpowiedź jako 202 Accepted z nagłówkiem Azure-asyncOperation , jak pokazano w następującej przykładowej odpowiedzi:
HTTP/1.1 202 Accepted
Content-Length: 0
Expires: -1
Pragma: no-cache
Retry-After: 30
Azure-AsyncOperation: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExO2Q1NDIzY2VjLTczYjYtNDY5ZC1hYmRjLTc1N2Q0ZTJmOGM5OQ==?api-version=2021-07-01
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1197
x-ms-correlation-request-id: 8661209c-5b6a-44fe-b676-4e2b9c296593
x-ms-routing-request-id: CENTRALUSEUAP:20210708T204652Z:69e3fa4b-c5d9-4601-9410-598006ada187
Cache-Control: no-cache
Date: Thu, 08 Jul 2021 20:46:52 GMT
Location: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationResults/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExO2Q1NDIzY2VjLTczYjYtNDY5ZC1hYmRjLTc1N2Q0ZTJmOGM5OQ==?api-version=2021-07-01
X-Powered-By: ASP.NET
Śledź nagłówek Azure-AsyncOperation przy użyciu prostego żądania GET. Gdy żądanie zakończy się pomyślnie, zwraca 200 OK z identyfikatorem zadania, który należy dalej śledzić, aby dokończyć żądanie przywracania.
GET https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExO2Q1NDIzY2VjLTczYjYtNDY5ZC1hYmRjLTc1N2Q0ZTJmOGM5OQ==?api-version=2021-07-01
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExO2Q1NDIzY2VjLTczYjYtNDY5ZC1hYmRjLTc1N2Q0ZTJmOGM5OQ==",
"name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExO2Q1NDIzY2VjLTczYjYtNDY5ZC1hYmRjLTc1N2Q0ZTJmOGM5OQ==",
"status": "Succeeded",
"startTime": "2021-07-08T20:46:52.4110868Z",
"endTime": "2021-07-08T20:46:56Z",
"properties": {
"jobId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupJobs/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"objectType": "OperationJobExtendedInfo"
}
}
Śledź zadania
Po wyzwoleniu zadania przywracania można śledzić wynikowy identyfikator zadania przy użyciu interfejsu API GET Jobs.
Użyj następującego GET polecenia, aby śledzić jobId wartość w odpowiedzi na wywołaną operację przywracania:
GET /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupJobs/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a?api-version=2021-07-01
Stan zadania wskazuje, że zadanie przywracania zostało ukończone.