مشاركة عبر


إنشاء نسخة احتياطية من قواعد بيانات خادم SQL في Microsoft Azure VMs باستخدام Microsoft Azure Backup عبر REST API

توضح هذه المقالة كيفية عمل نسخة احتياطية من قواعد بيانات خادم SQL في Microsoft Azure VMs باستخدام Microsoft Azure Backup عبر REST API.

إشعار

راجع مصفوفة دعم النسخ الاحتياطي لـ SQL لمعرفة المزيد حول التكوينات والسيناريوهات المدعومة.

المتطلبات الأساسية

  • مخزن خدمات الاسترداد
  • نهج لتكوين النسخ الاحتياطي لقواعد بيانات SQL الخاصة بك.

لمزيد من المعلومات حول كيفية إنشاء مخازن ونُهج جديدة، راجع البرامج التعليمية التي بعنوان إنشاء مخزن وإنشاء نهج لـ REST API.

استخدم الموارد التالية:

  • مخزن خدمات الاسترداد: SQLServer2012
  • النهج: HourlyLogBackup
  • مجموعة الموارد: SQLServerSelfHost

تكوين نسخة احتياطية لقواعد بيانات خادم SQL غير المحمية في Microsoft Azure VM

اكتشف قواعد بيانات SQL Server غير المحمية

يحتاج المخزن إلى اكتشاف كل Microsoft Azure VMs في الاشتراك مع قواعد بيانات SQL التي يمكنك نسخها احتياطياً إلى مخزن خدمات الاسترداد. لجلب التفاصيل، قم بتشغيل refresh operation. إنها عملية POST غير متزامنة تضمن أن يتلقى المخزن أحدث قائمة بجميع قواعد بيانات SQL غير المحمية في الاشتراك الحالي وcaches لها. بمجرد أن يتم cached، يمكن لخدمات الاسترداد الوصول إلى قاعدة البيانات وحمايتها.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{vaultResourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/{fabricName}/refreshContainers?api-version=2016-12-01&$filter={$filter}

يحتوي POST URI على معلمات {subscriptionId}، {vaultName}، {vaultresourceGroupName} و{fabricName}. في المثال التالي، تكون قيم المعلمات المختلفة كما يلي:

  • {fabricName}: Azure
  • {vaultName}: SQLServer2012
  • {vaultresourceGroupName}: SQLServerSelfHost
  • $filter: backupManagementType eq 'AzureWorkload'

نظراً لأنه يتم توفير جميع المعلمات المطلوبة في URI3، فلن تكون هناك حاجة إلى نص طلب منفصل.

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/refreshContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

الردود على عملية التحديث

عملية refresh هي عملية غير متزامنة. وهذا يعني أن هذه العملية تنشئ عملية أخرى تحتاج إلى تعقبها بشكل منفصل.

تقوم بإرجاع استجابتين: 202 (Accepted) عند إنشاء عملية أخرى، و200 (OK) عند اكتمال تلك العملية.

الردود على سبيل المثال لعملية التحديث

بمجرد إرسال طلب POST، يتم إرجاع استجابة (‎202 (Accepted.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-client-request-id: 4653a4ed-ffbe-4492-ae7d-3e1ab03722af; 4653a4ed-ffbe-4492-ae7d-3e1ab03722af
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a85ee4a2-56d7-4477-b29c-d140a8bb90fe
x-ms-routing-request-id: SOUTHINDIA:20180528T075517Z:a85ee4a2-56d7-4477-b29c-d140a8bb90fe
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:55:16 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01
X-Powered-By: ASP.NET

تتبع العملية الناتجة باستخدام رأس Location باستخدام أمر GET بسيط.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/operationResults/a60bfc5e-e237-4ead-be5c-b845e9566ea8?api-version=2016-12-01

بمجرد اكتشاف جميع قواعد بيانات SQL، يقوم الأمر GET بإرجاع ‏‎200 (No Content). يمكن للمخزن الآن اكتشاف أي جهاز ظاهري بقواعد بيانات SQL يمكن نسخها احتياطياً ضمن الاشتراك.

HTTP/1.1 204 NoContent
Pragma: no-cache
X-Content-Type-Options: nosniff
x-ms-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-client-request-id: b5ffa56f-a521-48a4-91b2-e3bc1e3f1110; b5ffa56f-a521-48a4-91b2-e3bc1e3f1110
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-reads: 14968
x-ms-correlation-request-id: 55ae46bb-0d61-4284-a408-bcfaa36af643
x-ms-routing-request-id: SOUTHINDIA:20180528T075607Z:55ae46bb-0d61-4284-a408-bcfaa36af643
Cache-Control: no-cache
Date: Mon, 28 May 2018 07:56:06 GMT
X-Powered-By: ASP.NET

سرد أجهزة VM ذات قواعد بيانات SQL لإجراء نسخ احتياطي لها باستخدام مخزن Recovery Services

للتأكد من أنه قد تم التخزين في الذاكرة المؤقتة، قم بإدراج جميع الأجهزة الظاهرية في الاشتراك مع قواعد بيانات SQL التي يمكن نسخها احتياطياً باستخدام مخزن Recovery Services. ثم حدد موقع حساب التخزين المطلوب في الاستجابة. يتم ذلك باستخدام عملية GET ProtectableContainers.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

إشعار

يشتمل معرف الموارد المنتظم الخاص بـ GET جميع المعلمات المطلوبة. ليس هناك حاجة إلى نص طلب إضافي.

مثال على هيئة الاستجابة:

{
  "value": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;ad-primary-dc",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "ad-primary-dc",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-primary-dc"
      }
    },
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;ad-secondry-dc",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "ad-secondry-dc",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/ad-secondry-dc"
      }
    },
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
      "name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectableContainers",
      "properties": {
        "friendlyName": "sqlserver-0",
        "backupManagementType": "AzureWorkload",
        "protectableContainerType": "VMAppContainer",
        "healthStatus": "Healthy",
        "containerId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0"
      }
    }
  ]
}

نظراً لأنه يمكننا تحديد موقع الأجهزة الظاهرية في نص الاستجابة بأسمائها المألوفة، فإن عملية التحديث التي تم إجراؤها أعلاه كانت ناجحة. يمكن الآن لمخزن خدمات الاسترداد أن يكتشف بنجاح أجهزة ظاهرية ذات قواعد بيانات SQL غير محمية في نفس الاشتراك.

تسجيل الأجهزة الظاهرية VM باستخدام مخزن Recovery Services

تحتاج إلى تسجيل أجهزة ظاهرية مع مخزن خدمات الاسترداد بحيث يمكن لخدمة Microsoft Azure Backup التفاعل مع قواعد بيانات SQL داخل الجهاز الظاهري (استخدم القيمة في حقل Name لتحديد حاوية Microsoft Azure VM). تحتاج إلى توفير القيم في طلب JSON للحصول على نص طلب HTTP من جزء خصائص نتائج الحاويات القابلة للحماية الموجود بالقائمة.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.recoveryservices/vaults/{vaultName}/backupFabrics/Azure/protectionContainers/{containerName}?api-version=2016-12-01

اضبط متغيرات معرّف الموارد المنتظم على النحو التالي:

  • {resourceGroupName} - SQLServerSelfHost
  • {fabricName} - أسمانجوني
  • {vaultName} - SQLServer2012
  • {containerName} - هذه هي سمة الاسم الموجودة في نص الاستجابة لعملية GET ProtectableContainers. في مثالنا، اسم السمة هو VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0.

إشعار

خذ دائماً سمة الاسم الخاصة بالاستجابة وقم بتعبئتها في هذا الطلب. لا تقم بإنشاء تعليمات برمجية ثابتة أو إنشاء تنسيق اسم الحاوية. إذا قمت بإنشائه أو ترميزه، فسيفشل طلب واجهة برمجة التطبيقات إذا تغير تنسيق اسم الحاوية في المستقبل.


PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0?api-version=2016-12-01

نص إنشاء الطلب هو كما يلي:

{
  "properties": {
    "backupManagementType": "AzureWorkload",
    "friendlyName": "sqlserver-0",
    "containerType": "VMAppContainer",
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectableContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
    "workloadType": "SQLDataBase"
  }
}

للحصول على قائمة كاملة بتعريفات نص الطلب والتفاصيل الأخرى، راجع ProtectionContainers-Register.

هذه عملية غير متزامنة وتعيد استجابتين: ‎202 (Accepted) عند قبول العملية، و‎200 (OK) عند اكتمال العملية. لتتبع حالة العملية، استخدم عنوان الموقع للحصول على أحدث حالة للعملية.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/2a72d206-b4d8-4c59-89ef-ef3283132237?api-version=2016-12-01

مثال على هيئة الاستجابة عند اكتمال العملية:

{
  "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
  "name": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
  "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers",
  "properties": {
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/Microsoft.Compute/virtualMachines/sqlserver-0",
    "lastUpdatedTime": "2018-05-28T08:33:14.7304852Z",
    "extendedInfo": {
      "hostServerName": "sqlserver-0.shopkart.com",
      "inquiryInfo": {
        "status": "Success",
        "errorDetail": {
          "code": "Success",
          "message": "",
          "recommendations": [
            ""
          ]
        },
        "inquiryDetails": [
          {
            "type": "SQL",
            "itemCount": 5,
            "inquiryValidation": {
              "status": "Success",
              "errorDetail": {
                "code": "Success",
                "message": "",
                "recommendations": [
                  ""
                ]
              }
            }
          }
        ]
      }
    },
    "friendlyName": "sqlserver-0",
    "backupManagementType": "AzureWorkload",
    "registrationStatus": "Registered",
    "healthStatus": "Healthy",
    "containerType": "VMAppContainer",
    "protectableObjectType": "VMAppContainer"
  }
}

يمكنك التحقق مما إذا كان التسجيل ناجحا من قيمة معلمة registrationstatus في نص الاستجابة. في حالتنا، فإنه يُظهر الحالة كما هي مسجلة لـ SQLServer2012؛ لذلك، كانت عملية التسجيل ناجحة.

استعلم عن جميع قواعد بيانات SQL غير المحمية الموجودة في الجهاز الظاهري

للاستعلام عن العناصر القابلة للحماية في حساب التخزين، استخدم عملية Protection Containers-Inquire. إنها عملية غير متزامنة ويجب تتبع النتائج باستخدام عنوان الموقع.

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/inquire?api-version=2016-12-01$filter={$filter}

اضبط متغيرات معرّف الموارد المنتظم أعلاه على النحو التالي:

  • {resourceGroupName}: SQLServerSelfHost
  • {vaultName}: SQLServer2012
  • {fabricName}: Azure
  • {containerName}: راجع سمة الاسم في نص الاستجابة لعملية GET ProtectableContainers. في مثالنا، اسم السمة هو VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0.
POST https://management.azure.com/subscriptions/e3d2d341-4ddb-4c5d-9121-69b7e719485e/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/inquire?api-version=2016-12-01$filter=workloadType EQ 'SQLDatabase'

بمجرد نجاح الطلب، يقوم بإرجاع رمز الحالة OK.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
X-Content-Type-Options: nosniff
x-ms-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-client-request-id: 4174f98a-80b9-4747-9500-6f702ed83930; 4174f98a-80b9-4747-9500-6f702ed83930
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1197
x-ms-correlation-request-id: 50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
x-ms-routing-request-id: SOUTHINDIA:20180528T084628Z:50295ae9-3d5b-48d1-8a6d-a0acb6d06b98
Cache-Control: no-cache
Date: Mon, 28 May 2018 08:46:28 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/operationResults/f0751ec2-445a-4d0e-a6a5-a19957459655?api-version=2016-12-01
X-Powered-By: ASP.NET

حدد قواعد البيانات التي تريد نسخها احتياطياً

لسرد جميع العناصر القابلة للحماية ضمن الاشتراك وتحديد موقع قاعدة البيانات المطلوبة ليتم نسخها احتياطياً، استخدم عملية GET backupprotectableItems.

GET https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupProtectableItems?api-version=2016-12-01&$filter={$filter}

أنشئ معرّف الموارد المنتظم على النحو التالي:

  • {resourceGroupName}: SQLServerSelfHost
  • {vaultName}: SQLServer2012
  • {$filter}: backupManagementType eq 'AzureWorkload'
GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupProtectableItems?api-version=2016-12-01&$filter=backupManagementType eq 'AzureWorkload'

نموذج الاستجابة:

Status Code:200

{
  "value": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/vmappcontainer;compute;SQLServerSelfHost;SQLServersql2012/protectableItems/sqldatabase;mssqlserver;msdb",
      "name": "sqldatabase;mssqlserver;msdb",
      "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectableItems",
      "properties": {
        "parentName": "MSSQLSERVER",
        "serverName": "SQLServersql2012",
        "isAutoProtectable": false,
        "subinquireditemcount": 0,
        "subprotectableitemcount": 0,
        "backupManagementType": "AzureWorkload",
        "workloadType": "SQL",
        "protectableItemType": "SQLDataBase",
        "friendlyName": "msdb",
        "protectionState": "NotProtected"
      }
    }
]
}

تحتوي الاستجابة على قائمة بجميع قواعد البيانات غير المحمية وتحتوي على جميع المعلومات المطلوبة بواسطة Microsoft Azure Recovery Service لتكوين النسخ الاحتياطي. احفظ أسماء قاعدة البيانات لاستخدامها في المستقبل.

تمكين النسخ الاحتياطي لقاعدة البيانات

بعد identified قاعدة البيانات ذات الصلة بالاسم المألوف:

  1. حدد النهج الذي تريد حمايته.
  2. اسرد النُهج الموجودة في المخزن، راجع قائمة واجهة برمجة تطبيقات النهج.
  3. حدد relevant policy بالإشارة إلى اسم النهج.
  4. إنشاء البرنامج التعليمي للنهج.

تمكين الحماية هو عملية PUT غير متزامنة تنشئ protected item.

PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/{containerName};sqlserver-0/protectedItems/{protectedItemName}?api-version=2016-12-01

قم بتعيين متغيري containerName وprotectedItemName باستخدام سمة المعرف في نص الاستجابة لعملية GET backupprotectableitems.

في مثالنا، معرف مشاركة الملف الذي نريد حمايته هو:

/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb
  • {containerName}: VMAppContainer؛ حسب; SQLServerPMDemo; sqlserver-0
  • {protectedItemName}: قاعدة بيانات sqldatabase؛ mssqlserver؛ msdb

إنشاء نص طلب:

يحدد نص الطلب التالي الخصائص المطلوبة لإنشاء عنصر محمي.

{
  "properties": {
    "backupManagementType": "AzureWorkload",
    "workloadType": "SQLDataBase",
    "policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
  },
  "location": "westcentralus"
}

بمجرد إرسال طلب PUT لإنشاء عنصر محمي أو تحديثه، تكون الاستجابة الأولية 202 (مقبولة) مع عنوان موقع.

استجابة العينة

يعد إنشاء عنصر محمي عملية غير متزامنة، مما يؤدي إلى إنشاء عملية أخرى يجب تعقبها. تقوم بإرجاع استجابتين: 202 (Accepted) عند إنشاء عملية أخرى، و200 (OK) عند اكتمال تلك العملية.

بمجرد إرسال طلب PUT لإنشاء عنصر محمي أو تحديثه، تكون الاستجابة الأولية 202 (مقبولة) مع عنوان موقع.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-client-request-id: 7d03bcef-562a-4ddc-8086-a3f4981be915; 7d03bcef-562a-4ddc-8086-a3f4981be915
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: ab6a8c6c-ab90-433a-8dc2-5194901d428d
x-ms-routing-request-id: SOUTHINDIA:20180528T102112Z:ab6a8c6c-ab90-433a-8dc2-5194901d428d
Cache-Control: no-cache
Date: Mon, 28 May 2018 10:21:12 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01
X-Powered-By: ASP.NET

ثم تعقب العملية الناتجة باستخدام رأس الموقع أو رأس Microsoft Azure-AsyncOperation باستخدام الأمر GET.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/b686a165-387f-461d-8579-c55338566338?api-version=2016-12-01

بمجرد اكتمال العملية، تقوم بإرجاع ‎200 (OK) مع محتوى العنصر المحمي في نص الاستجابة.

هيئة استجابة العينة:

{
  "id": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/SQLDataBase;mssqlserver;msdb",
  "name": "SQLDataBase;mssqlserver;msdb",
  "type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
  "properties": {
    "friendlyName": "msdb",
    "serverName": "sqlserver-0.shopkart.com",
    "parentName": "MSSQLSERVER",
    "parentType": "AzureVmWorkloadSQLInstance",
    "protectionStatus": "Healthy",
    "protectionState": "IRPending",
    "lastBackupStatus": "IRPending",
    "lastBackupErrorDetail": {
      "code": "Success",
      "message": ""
    },
    "protectedItemDataSourceId": "17592741727863",
    "protectedItemHealthStatus": "IRPending",
    "extendedInfo": {
      "recoveryPointCount": 0,
      "policyState": "Consistent"
    },
    "protectedItemType": "AzureVmWorkloadSQLDatabase",
    "backupManagementType": "AzureWorkload",
    "workloadType": "SQLDataBase",
    "containerName": "VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0",
    "sourceResourceId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerPMDemo/providers/VMAppContainer/sqlserver-0",
    "policyId": "/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupPolicies/HourlyLogBackup"
  }
}

يؤكد هذا تمكين الحماية لقاعدة البيانات، وسيتم تشغيل النسخة الاحتياطية الأولى وفقاً لجدول النهج.

تشغيل نسخة احتياطية لقاعدة البيانات عند الطلب

بمجرد الانتهاء من تكوين قاعدة بيانات للنسخ الاحتياطي، يتم تشغيل النسخ الاحتياطية وفقاً لجدول النهج. يمكنك انتظار أول نسخة احتياطية مجدولة أو تشغيل نسخة احتياطية عند الطلب في أي وقت.

يعد تشغيل النسخ الاحتياطي عند الطلب بمثابة عملية POST.

إشعار

يتم تحديد فترة الاحتفاظ بهذه النسخة الاحتياطية حسب نوع النسخ الاحتياطي عند الطلب الذي قمت بتشغيله.

  • يحتفظ كامل عند الطلب بالنسخ الاحتياطية لمدة لا تقل عن 45 يومًا وبحد أقصى 99 عامًا.
  • تقبل النسخة الكاملة عند الطلب فقط أي قيمة للاحتفاظ بها.
  • يحتفظ التفاضلي عند الطلب بالنسخ الاحتياطي وفقًا للاحتفاظ بالفوارق المجدولة المحددة في النهج.
  • يحتفظ السجل عند الطلب بالنسخ الاحتياطية وفقًا للاحتفاظ بالسجلات المجدولة المحددة في النهج.
POST https://management.azure.com/Subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.RecoveryServices/vaults/{vaultName}/backupFabrics/{fabricName}/protectionContainers/{containerName}/protectedItems/{protectedItemName}/backup?api-version=2016-12-01

تم إنشاء {اسم الحاوية} و{اسم العنصر المحمي} على النحو الوارد أعلاه أثناء تمكين النسخ الاحتياطي. على سبيل المثال، هذا يترجم إلى:

POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/Microsoft.RecoveryServices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/backup?api-version=2016-12-01

إنشاء نص الطلب

استخدم نص الطلب التالي لإنشاء نسخة احتياطية كاملة عند الطلب.

{
  "properties": {
    "objectType": "AzureWorkloadBackupRequest",
    "backupType": "Full"
  }
}

الاستجابات لعملية النسخ الاحتياطي عند الطلب

يعد تشغيل النسخ الاحتياطي عند الطلب عملية غير متزامنة. وهذا يعني أن هذه العملية تنشئ عملية أخرى تحتاج إلى تعقبها بشكل منفصل.

تقوم بإرجاع استجابتين: 202 (Accepted) عند إنشاء عملية أخرى و200 (OK) عند اكتمال تلك العملية.

استجابات أمثلة لعملية النسخ الاحتياطي عند الطلب

بمجرد إرسال طلب POST للنسخ الاحتياطي عند الطلب، تكون الاستجابة الأولية 202 (مقبولة) بعنوان الموقع أو عنوان مزامنة Azure.

HTTP/1.1 202 Accepted
Pragma: no-cache
Retry-After: 60
Azure-AsyncOperation: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Content-Type-Options: nosniff
x-ms-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-client-request-id: 6b033cf6-f875-4c03-8985-9add07ec2845; 6b033cf6-f875-4c03-8985-9add07ec2845
Strict-Transport-Security: max-age=31536000; includeSubDomains
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: a691e2a9-8203-462d-a4da-d1badde22f83
x-ms-routing-request-id: SOUTHINDIA:20180528T114321Z:a691e2a9-8203-462d-a4da-d1badde22f83
Cache-Control: no-cache
Date: Mon, 28 May 2018 11:43:21 GMT
Location: https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationResults/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01
X-Powered-By: ASP.NET

ثم تعقب العملية الناتجة باستخدام رأس الموقع أو رأس Microsoft Azure-AsyncOperation باستخدام الأمر GET.

GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-0000000000/resourceGroups/SQLServerSelfHost/providers/microsoft.recoveryservices/vaults/SQLServer2012/backupFabrics/Azure/protectionContainers/VMAppContainer;Compute;SQLServerPMDemo;sqlserver-0/protectedItems/sqldatabase;mssqlserver;msdb/operationsStatus/cd2a3b13-d392-4e81-86ac-02ea91cc70b9?api-version=2016-12-01

بمجرد اكتمال العملية، تقوم بإرجاع ‎200 (OK) بمعرف مهمة النسخ الاحتياطي الناتجة في جسم الاستجابة.

النص الأساسي لنموذج الاستجابة

{
  "id": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
  "name": "cd2a3b13-d392-4e81-86ac-02ea91cc70b9",
  "status": "Succeeded",
  "startTime": "2018-05-28T11:43:21.6516182Z",
  "endTime": "2018-05-28T11:43:21.6516182Z",
  "properties": {
    "objectType": "OperationStatusJobExtendedInfo",
    "jobId": "c22eca5d-0c1c-48a0-a40d-69bef708d92a"
  }
}

نظراً لأن مهمة النسخ الاحتياطي هي عملية تشغيل طويلة، فيجب تتبعها كما هو موضح في monitor jobs using REST API document.

الخطوات التالية