Mencadangkan Azure Database for PostgreSQL - Server Fleksibel menggunakan REST API

Artikel ini menjelaskan cara mencadangkan Azure Database for PostgreSQL - Flexible Severs menggunakan REST API.

Untuk informasi tentang azure PostgreSQL - Skenario, batasan, dan mekanisme autentikasi yang didukung pencadangan server fleksibel, lihat dokumen gambaran umum.

Prasyarat

Sebelum mengonfigurasi pencadangan untuk Azure PostgreSQL - Server fleksibel, pastikan prasyarat berikut terpenuhi:

Mengonfigurasi cadangan untuk PostgreSQL - Server fleksibel

Setelah vault dan kebijakan dibuat, ada tiga poin penting yang perlu dipertimbangkan untuk Azure PostgreSQL - Perlindungan server fleksibel.

Entitas utama yang terlibat

  • Server fleksibel Azure PostgreSQL yang akan dilindungi

    Ambil ID Azure Resource Manager dari server fleksibel Azure PostgreSQL untuk dilindungi. Ini berfungsi sebagai pengidentifikasi database. Kita akan menggunakan contoh server bernama empdb11 di bawah server PostgreSQL testpostgresql, yang ada di grup sumber daya ossdemoRG di bawah langganan yang berbeda. Contoh berikut menggunakan bash.

    Contoh berikut menggunakan bash:

    "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver"
    
  • Penyimpanan cadangan

    Brankas cadangan harus terhubung dan mengakses server fleksibel PostgreSQL. Akses diberikan ke Managed Service Identity (MSI) dari vault Backup.

    Anda perlu memberikan izin untuk mencadangkan MSI vault di PostgreSQL. Pelajari selengkapnya.

Siapkan permintaan untuk mengonfigurasi cadangan

Setelah Anda menetapkan izin yang relevan pada vault dan server fleksibel PostgreSQL, dan mengonfigurasi vault serta kebijakan, siapkan perintah untuk mengonfigurasi cadangan. Lihat isi permintaan berikut untuk mengonfigurasi cadangan untuk server fleksibel Azure PostgreSQL. ID Azure Resource Manager (ID ARM) dari server fleksibel PostgreSQL Azure dan detailnya ada di bagian datasourceinfo. Informasi kebijakan ada di bagian .policyinfo

{
  "backupInstance": {
    "dataSourceInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "Datasource"
      },
      "dataSourceSetInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "DatasourceSet"
      },
      "policyInfo": {
          "policyId": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/pgflexpol1",
          "policyVersion": ""
      },
    "objectType": "BackupInstance"
  }
}

Validasi permintaan untuk mengonfigurasi cadangan

Untuk memvalidasi apakah permintaan konfigurasi cadangan akan berhasil, gunakan validasi untuk API cadangan . Anda dapat menggunakan respons untuk memenuhi prasyarat yang diperlukan, lalu mengajukan konfigurasi untuk permintaan pencadangan.

Validasi permintaan cadangan adalah operasi POST dan Pengidentifikasi Sumber Daya Seragam (URI) berisi {subscriptionId}parameter, {vaultName}, {vaultresourceGroupName}.

POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{vaultresourceGroupname}/providers/Microsoft.DataProtection/backupVaults/{backupVaultName}/validateForBackup?api-version=2021-01-01

Misalnya, API ini diterjemahkan menjadi:

POST https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/validateForBackup?api-version=2021-01-01

Isi permintaan yang kami siapkan sebelumnya akan digunakan untuk memberikan detail database Azure PostgreSQL yang akan dilindungi.

Contoh isi permintaan:

{
  "backupInstance": {
    "dataSourceInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "Datasource"
      },
      "dataSourceSetInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "DatasourceSet"
      },
      "policyInfo": {
          "policyId": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/pgflexpol1",
          "policyVersion": ""
      },
    "objectType": "BackupInstance"
  }
}

Respons untuk validasi permintaan pencadangan:

Validasi permintaan cadangan adalah operasi asinkron. Jadi, operasi ini akan menciptakan operasi lain yang perlu dilacak secara terpisah.

Fungsi ini menghasilkan dua respons: 202 (Diterima) ketika fungsi lain dibuat, dan 200 (OK) ketika fungsi selesai.

Nama Tipe Deskripsi
202 Diterima Operasi akan diselesaikan secara asinkron.
200 OK OperationJobExtendedInfo. Diterima
Kode status lainnya CloudError Respons kesalahan menjelaskan alasan kegagalan operasi.

Contoh respons untuk memvalidasi permintaan pencadangan:

Respons kesalahan

Jika server yang diberikan sudah dilindungi, server mengembalikan respons sebagai HTTP 400 (Permintaan buruk) dan menyatakan bahwa server yang diberikan sudah dilindungi dalam brankas cadangan bersama dengan detailnya.

HTTP/1.1 400 BadRequest
Content-Length: 1012
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-writes: 1199
x-ms-correlation-request-id: 0c99ff0f-6c26-4ec7-899f-205435e89894
x-ms-routing-request-id: WESTUS:20210830T142949Z:0be72802-02ad-485d-b91f-4aadd92c059c
Cache-Control: no-cache
Date: Mon, 30 Aug 2021 14:29:49 GMT
X-Powered-By: ASP.NET

{
  "error": {
    "additionalInfo": [
      {
        "type": "UserFacingError",
        "info": {
          "message": "Datasource is already protected under the Backup vault /subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault.",
          "recommendedAction": [
            "Delete the backup instance testpostgresql-empdb11-957d23b1-c679-4c94-ade6-c4d34635e149 from the Backup vault /subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault to re-protect the datasource in any other vault."
          ],
          "details": null,
          "code": "UserErrorDppDatasourceAlreadyProtected",
          "target": "",
          "innerError": null,
          "isRetryable": false,
          "isUserError": false,
          "properties": {
            "ActivityId": "0c99ff0f-6c26-4ec7-899f-205435e89894"
          }
        }
      }
    ],
    "code": "UserErrorDppDatasourceAlreadyProtected",
    "message": "Datasource is already protected under the Backup vault /subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault.",
    "target": null,
    "details": null
  }
}

Lacak Tanggapan

Jika datasource tidak terlindungi, kemudian API melanjutkan proses untuk melakukan validasi lebih lanjut dan membuat operasi pelacakan.

HTTP/1.1 202 Accepted
Content-Length: 0
Expires: -1
Pragma: no-cache
Retry-After: 10
Azure-AsyncOperation: https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==?api-version=2021-01-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: 3e7cacb3-65cd-4b3c-8145-71fe90d57327
x-ms-routing-request-id: WESTUS:20210707T124850Z:105f2105-6db1-44bf-8a34-45972a8ba861
Cache-Control: no-cache
Date: Wed, 07 Jul 2021 12:48:50 GMT
Location: https://management.azure.com/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/providers/Microsoft.DataProtection/locations/westus/operationResults/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==?api-version=2021-01-01
X-Powered-By: ASP.NET

Lacak operasi yang dihasilkan menggunakan header Azure-AsyncOperation dengan perintah GET sederhana.

GET https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==?api-version=2021-01-01

{
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==",
  "name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==",
  "status": "Inprogress",
  "startTime": "2021-07-07T12:48:50.3432229Z",
  "endTime": "0001-01-01T00:00:00"
}

Ini mengembalikan 200 (OK) setelah selesai dan isi respons mencantumkan lebih banyak persyaratan yang harus dipenuhi, seperti izin.

GET https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==?api-version=2021-01-01

{
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==",
  "name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzM2NDdhZDNjLTFiNGEtNDU4YS05MGJkLTQ4NThiYjRhMWFkYg==",
  "status": "Failed",
  "error": {
    "additionalInfo": [
      {
        "type": "UserFacingError",
        "info": {
          "message": "Appropriate permissions to perform the operation is missing.",
          "recommendedAction": [
            "Grant appropriate permissions to perform this operation as mentioned at https://aka.ms/UserErrorMissingRequiredPermissions and retry the operation."
          ],
          "code": "UserErrorMissingRequiredPermissions",
          "target": "",
          "innerError": {
            "code": "UserErrorMissingRequiredPermissions",
            "additionalInfo": {
              "DetailedNonLocalisedMessage": "Validate for Protection failed. Exception Message: The client '00001111-aaaa-2222-bbbb-3333cccc4444' with object id 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' does not have authorization to perform action 'Microsoft.Authorization/roleAssignments/read' over scope '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver/providers/Microsoft.Authorization' or the scope is invalid. If access was recently granted, please refresh your credentials."
            }
          },
          "isRetryable": false,
          "isUserError": false,
          "properties": {
            "ActivityId": "3e7cacb3-65cd-4b3c-8145-71fe90d57327"
          }
        }
      }
    ],
    "code": "UserErrorMissingRequiredPermissions",
    "message": "Appropriate permissions to perform the operation is missing."
  },
  "startTime": "2021-07-07T12:48:50.3432229Z",
  "endTime": "2021-07-07T12:49:22Z"
}

Jika Anda memberikan semua izin, kirim ulang permintaan validasi, dan lacak operasi yang dihasilkan. Hal ini akan manampilan respons yang berhasil sebagai 200 (OK) jika semua kondisi terpenuhi.

GET https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzlhMjk2YWM2LWRjNDMtNGRjZS1iZTU2LTRkZDNiMDhjZDlkOA==?api-version=2021-01-01

{
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzlhMjk2YWM2LWRjNDMtNGRjZS1iZTU2LTRkZDNiMDhjZDlkOA==",
  "name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzlhMjk2YWM2LWRjNDMtNGRjZS1iZTU2LTRkZDNiMDhjZDlkOA==",
  "status": "Succeeded",
  "startTime": "2021-07-07T13:03:54.8627251Z",
  "endTime": "2021-07-07T13:04:06Z"
}

Mengonfigurasi permintaan pencadangan untuk PostgreSQL - Server fleksibel

Setelah permintaan divalidasi, Anda dapat mengirimkan hal yang sama ke API buat instans cadangan. Salah satu layanan proteksi data Azure Backup melindungi instans Cadangan di dalam vault Cadangan. Di sini, server fleksibel Azure PostgreSQL adalah instans cadangan. Gunakan isi permintaan yang telah divalidasi di atas dengan sedikit penambahan.

Gunakan nama unik untuk instans cadangan. Kami menyarankan Anda untuk menggunakan kombinasi nama sumber daya dan pengidentifikasi unik. Misalnya, dalam operasi berikut, kita akan menggunakan pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149 dan menandainya sebagai nama instans cadangan.

Untuk membuat atau memperbarui instans cadangan, gunakan operasi PUT berikut:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/{BkpvaultName}/backupInstances/{UniqueBackupInstanceName}?api-version=2021-01-01

Misalnya, API ini diterjemahkan menjadi:

 PUT https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149?api-version=2021-01-01

Buat permintaan konfigurasi cadangan

Untuk membuat instans cadangan, berikut adalah komponen isi permintaannya:

Nama Tipe Deskripsi
properti/sifat BackupInstance Properti dari Sumber Daya BackupInstance

Contoh permintaan untuk mengonfigurasi pencadangan:

Kita akan menggunakan isi permintaan yang sama yang biasa kita gunakan untuk memvalidasi permintaan cadangan dengan nama unik seperti yang disebutkan di atas.

{
  "name": "pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149",
  "type": "Microsoft.DataProtection/backupvaults/backupInstances",
  "properties": {
    "dataSourceInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "Datasource"
      },
      "dataSourceSetInfo": {
          "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
          "resourceUri": "",
          "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceName": "pgflextestserver",
          "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
          "resourceLocation": "westUS",
          "objectType": "DatasourceSet"
      },
      "policyInfo": {
          "policyId": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/pgflexpol1",
          "policyVersion": ""
      }
    },
    "objectType": "BackupInstance"
  }
}

Respons untuk mengonfigurasi permintaan cadangan

Membuat permintaan instans cadangan adalah operasi asinkron. Jadi, operasi ini akan menciptakan operasi lain yang perlu dilacak secara terpisah. Ini mengembalikan dua respons: 201 (Dibuat) saat instans cadangan dibuat dan perlindungan dikonfigurasi. 200 (OK) ketika konfigurasi selesai.

Nama Tipe Deskripsi
201 Tercipta Instans cadangan Instans cadangan dibuat dan perlindungan sedang dikonfigurasi.
200 OK Instans cadangan Perlindungan telah dikonfigurasi.
Kode status lainnya CloudError Respons kesalahan yang menjelaskan mengapa operasi gagal.

Contoh respons untuk mengonfigurasi permintaan pencadangan:

Setelah Anda mengirimkan permintaan PUT untuk membuat instans cadangan, respons awalnya adalah 201 (Dibuat) dengan header Azure-asyncOperation. Harap diingat bahwa isi permintaan berisi semua properti instans cadangan.

HTTP/1.1 201 Created
Content-Length: 1149
Content-Type: application/json
Expires: -1
Pragma: no-cache
Retry-After: 15
Azure-AsyncOperation: https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzI1NWUwNmFlLTI5MjUtNDBkNy1iMjMxLTM0ZWZlMDA3NjdkYQ==?api-version=2021-01-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: 5d9ccf1b-7ac1-456d-8ae3-36c93c0d2427
x-ms-routing-request-id: WESTUS:20210707T170219Z:9e897266-5d86-4d13-b298-6561c60cf043
Cache-Control: no-cache
Date: Wed, 07 Jul 2021 17:02:18 GMT
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET

{
      "properties": {
           "friendlyName": "pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149",
           "dataSourceInfo": {
           "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
           "resourceUri": "",
           "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
           "resourceName": "pgflextestserver",
           "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
           "resourceLocation": "westUS",
           "objectType": "Datasource"
       },
       "dataSourceSetInfo": {
           "resourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/pgflextest/providers/Microsoft.DBforPostgreSQL/flexibleServers/pgflextestserver",
           "resourceUri": "",
           "datasourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
           "resourceName": "pgflextestserver",
           "resourceType": "Microsoft.DBforPostgreSQL/flexibleServers",
           "resourceLocation": "westUS",
           "objectType": "DatasourceSet"
       },
       "policyInfo": {
           "policyId": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupPolicies/pgflexpol1",
           "policyVersion": ""
       },
       "protectionStatus": {
           "status": "ProtectionConfigured"
       },
       "currentProtectionState": "ProtectionConfigured",
       "provisioningState": "Succeeded",
       "objectType": "BackupInstance"
    },
    "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149",
    "name": "pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149",
    "type": "Microsoft.DataProtection/backupVaults/backupInstances"
}

Kemudian lacak operasi yang dihasilkan menggunakan header Azure-AsyncOperation dengan perintah GET sederhana.

GET https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzI1NWUwNmFlLTI5MjUtNDBkNy1iMjMxLTM0ZWZlMDA3NjdkYQ==?api-version=2021-01-01

Setelah operasi selesai, itu akan mengembalikan 200 (OK) dengan pesan keberhasilan dalam isi respons.

{
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzI1NWUwNmFlLTI5MjUtNDBkNy1iMjMxLTM0ZWZlMDA3NjdkYQ==",
  "name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzI1NWUwNmFlLTI5MjUtNDBkNy1iMjMxLTM0ZWZlMDA3NjdkYQ==",
  "status": "Succeeded",
  "startTime": "2021-07-07T17:02:19.0611871Z",
  "endTime": "2021-07-07T17:02:20Z"
}

Menghentikan perlindungan dan menghapus data untuk PostgreSQL - Server fleksibel

Untuk menghapus perlindungan pada database Azure PostgreSQL dan juga menghapus data cadangan, lakukan operasi penghapusan.

Menghentikan perlindungan dan menghapus data adalah operasi DELETE.

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataProtection/backupVaults/{vaultName}/backupInstances/{backupInstanceName}?api-version=2021-01-01

Misalnya, API ini diterjemahkan menjadi:

DELETE "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/resourceGroups/TestBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/testBkpVault/backupInstances/pgflextestserver-857d23b1-c679-4c94-ade6-c4d34635e149?api-version=2021-01-01"

Respons untuk perlindungan penghapusan:

Perlindungan DELETE adalah operasi asinkron. Jadi, operasi ini akan menciptakan operasi lain yang perlu dilacak secara terpisah. Fungsi ini menghasilkan dua respons: 202 (Diterima) ketika fungsi lain dibuat, dan 200 (OK) ketika fungsi selesai.

Nama Tipe Deskripsi
200 OK Status permintaan hapus
202 Diterima Diterima

Contoh respons untuk perlindungan penghapusan:

Setelah Anda mengirimkan permintaan DELETE , respons awal adalah 202 (Diterima) dengan header Azure-asyncOperation.

HTTP/1.1 202 Accepted
Content-Length: 0
Expires: -1
Pragma: no-cache
Retry-After: 30
Azure-AsyncOperation: https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzE1ZjM4YjQ5LWZhMGQtNDMxOC1iYjQ5LTExMDJjNjUzNjM5Zg==?api-version=2021-01-01
X-Content-Type-Options: nosniff
x-ms-request-id:
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-deletes: 14999
x-ms-correlation-request-id: fee7a361-b1b3-496d-b398-60fed030d5a7
x-ms-routing-request-id: WESTUS:20210708T071330Z:5c3a9f3e-53aa-4d5d-bf9a-20de5601b090
Cache-Control: no-cache
Date: Thu, 08 Jul 2021 07:13:29 GMT
Location: https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationResults/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzE1ZjM4YjQ5LWZhMGQtNDMxOC1iYjQ5LTExMDJjNjUzNjM5Zg==?api-version=2021-01-01
X-Powered-By: ASP.NET

Lacak header Azure-AsyncOperation dengan permintaan GET sederhana. Ketika permintaan berhasil, akan mengembalikan 200 (OK) dengan respons status sukses.

GET "https://management.azure.com/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzE1ZjM4YjQ5LWZhMGQtNDMxOC1iYjQ5LTExMDJjNjUzNjM5Zg==?api-version=2021-01-01"

{
  "id": "/subscriptions/00001111-aaaa-2222-bbbb-3333cccc4444/providers/Microsoft.DataProtection/locations/westus/operationStatus/ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzE1ZjM4YjQ5LWZhMGQtNDMxOC1iYjQ5LTExMDJjNjUzNjM5Zg==",
  "name": "ZmMzNDFmYWMtZWJlMS00NGJhLWE4YTgtMDNjYjI4Y2M5OTExOzE1ZjM4YjQ5LWZhMGQtNDMxOC1iYjQ5LTExMDJjNjUzNjM5Zg==",
  "status": "Succeeded",
  "startTime": "2021-07-08T07:13:30.23815Z",
  "endTime": "2021-07-08T07:13:46Z"
}

Langkah berikutnya

Pulihkan Azure Database for PostgreSQL - Server Fleksibel menggunakan REST API.

Untuk informasi selengkapnya tentang REST API Azure Backup, lihat artikel berikut ini: