本文說明如何使用數據保護 REST API,將 PostgreSQL 資料庫還原至透過 Azure 備份備份的 適用於 PostgreSQL 的 Azure 資料庫伺服器。 您也可以使用 Azure 入口網站、 Azure PowerShell 和 Azure CLI 來還原 PostgreSQL 資料庫。
由於 PostgreSQL 資料庫是平臺即服務 (PaaS) 資料庫,因此不支援取代現有資料庫來還原的 Original-Location Recovery (OLR) 選項(從其中進行備份)。 您可以從恢復點還原,以在相同的適用於 PostgreSQL 的 Azure 資料庫伺服器或任何其他 PostgreSQL 伺服器中建立新的資料庫。 此選項稱為替代位置復原 (ALR)。 ALR 有助於同時保留來源資料庫和復原後的新資料庫。
必要條件
本文中的範例是指資源群組TestBkpVault下名為 testBkpVaultRG 的現有備份保存庫。
還原已備份的 PostgreSQL 資料庫
設定權限
備份保存庫會使用受控識別來存取其他 Azure 資源。 若要從備份還原,備份保存庫的受控識別需要擁有一組許可權,才能在「Azure Database for PostgreSQL」伺服器上還原資料庫。
若要在目標 PostgreSQL 伺服器上指派保管庫系統指派的管理身份的相關許可權,請參閱 備份 PostgreSQL 資料庫所需的許可權。
若要將復原點以檔案的形式還原至儲存體帳戶,備份保存庫之系統指派的受控識別需要目標儲存體帳戶的存取權 (部分內容可能是機器或 AI 翻譯)。
擷取相關復原點
若要列出備份實體的所有可用恢復點,請使用 列出恢復點 API:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/recoveryPoints?api-version=2021-07-01
例如,API 會轉譯為:
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
復原點清單的回應
提交 GET 要求之後,它會傳回下列回應。 它也會傳回具有相關詳細數據的所有離散恢復點清單。
| 名稱 | 類型 | 描述 |
|---|---|---|
200 OK |
AzureBackupRecoveryPointResourceList | 要求已完成。 |
| 其他狀態代碼 | CloudError | 錯誤回應描述作業失敗的原因。 |
以下是範例回應:
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
},
.
.
.
.
若要從封存層擷取恢復點,請將中的 type 變數修改recoveryPointDataStoreDetails為 ArchiveStore。
從上述清單中選取相關的恢復點,然後準備還原要求。 本文使用從前述清單中名為 794ead7c7661410da03997d210d469e7 的復原點進行還原。
準備還原要求
PostgreSQL 資料庫有各種還原選項。 您可以將復原點還原為另一個資料庫或還原為檔案。 恢復點也可以位於封存層。
還原為資料庫
建構要與指派許可權的目標 PostgreSQL 伺服器一起建立之新 PostgreSQL 資料庫的 Azure Resource Manager 標識符(如先前所述)。 包含必要的 PostgreSQL 資料庫名稱。 例如,一個 PostgreSQL 資料庫可以在具有不同訂用帳戶的資源群組emprestored21中的目標 PostgreSQL 伺服器targetossserver下命名為targetrg。
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/providers/Microsoft.DBforPostgreSQL/servers/targetossserver/databases/emprestored21"
下列請求主體包含恢復點識別碼和還原目標詳細信息:
{
"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"
}
}
若是以封存為基礎的復原點,您需要:
- 將封存資料存放區解除凍結至保存庫資料存放區。
- 修改來源資料存放區。
- 新增其他參數以指定解除凍結優先順序。
- 指定解除凍結復原點應該保留在保存庫資料存放區中的持續時間。
{
"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",
}
}
還原為檔案
如先前 (部分內容可能是機器或 AI 翻譯) 所述,在指派權限的儲存體帳戶內擷取容器的 URI。 例如,在具有不同訂用帳戶名稱 testossstorageaccount 之儲存體帳戶下名為 testcontainerrestore 的容器:
"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"
}
}
針對封存型復原點,修改來源資料資料存放區。 新增解除凍結優先順序以及所解除凍結復原點的保留持續時間 (以天為單位):
{
"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",
}
}
驗證還原要求
準備好要求本文之後,請使用還原 API 的驗證 (部分內容可能是機器或 AI 翻譯) 來驗證它。 這和備份 API 的驗證一樣,此 API 為 POST 作業。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/validateRestore?api-version=2021-07-01
例如,上述 API 會轉譯為:
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"
深入瞭解 此 POST API 的請求主體。
驗證還原要求的要求本文
您在 先前的區段中建構了請求主體。 現在,新增物件類型,並用它來觸發驗證作業:
{
"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"
}
}
}
驗證還原要求的回應
還原要求的驗證是異步操作。 因此,此作業會建立另一項您需要個別追蹤的作業。
此作業會傳回這些回應:
| 名稱 | 類型 | 描述 |
|---|---|---|
| 200 確定 | 作業已完成。 | |
| 202 已接受 | 已接受要求。 系統會建立另一個作業。 |
POST提交作業之後,它會以標頭的形式傳回初始回應202 AcceptedAzure-asyncOperation,如下列範例回應所示:
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
使用簡單的Azure-AsyncOperation請求來追蹤GET標頭。 當要求成功時,它會以狀態回應傳回 200 OK 。
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"
}
回應指出您必須在提交還原要求之前解決的錯誤。 下列範例代表目標資料庫版本較低時會發生什麼情況,因此無法還原:
---------- 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"
}
修正錯誤並重新驗證要求之後,它會傳回 200 OK 並成功回應:
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"
}
觸發還原要求
觸發還原要求的作業是 POST API。
深入瞭解這項作業。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}/restore?api-version=2021-07-01
例如,API 會轉譯為:
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"
建立還原作業的要求本文
驗證要求之後,請使用相同的要求本文(含次要變更)來觸發還原要求。
如下列範例所示,驗證還原要求的要求本文中唯一的變更是在開頭移除 restoreRequest 物件:
{
"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"
}
觸發還原要求的回應
觸發還原要求的作業是 異步的。 因此,此作業會建立另一項需要個別追蹤的作業。
此作業會傳回這些回應:
| 名稱 | 類型 | 描述 |
|---|---|---|
200 OK |
作業已完成。 | |
202 Accepted |
已接受要求。 系統會建立另一個作業。 |
POST提交作業之後,它會以標頭的形式傳回初始回應202 AcceptedAzure-asyncOperation,如下列範例回應所示:
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
使用簡單的Azure-AsyncOperation請求來追蹤GET標頭。 當要求成功時,它會傳回 200 OK 作業標識碼,該標識元應進一步追蹤以完成還原要求。
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"
}
}
追蹤作業
觸發還原作業之後,您可以使用 GET 作業 API 來追蹤結果作業識別碼。
使用下列 GET 命令追蹤觸發還原作業回應 (部分內容可能是機器或 AI 翻譯) 中的 jobId 值:
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
作業狀態表示還原作業已完成。