مشاركة عبر


إدارة قواعد بيانات SQL في جهاز Azure الظاهري باستخدام Azure CLI

يتم استخدام Azure CLI لإنشاء موارد Azure وإدارتها من سطر الأوامر أو من خلال البرامج النصية. توضح هذه المقالة كيفية إدارة قاعدة بيانات SQL احتياطية على Azure VM باستخدام Azure CLI. يمكنك أيضا تنفيذ هذه الإجراءات باستخدام مدخل Microsoft Azure.

ملاحظه

إذا كنت قد استخدمت النسخ الاحتياطي لقاعدة بيانات SQL في Azure باستخدام CLI لنسخ قاعدة بيانات SQL احتياطيا، فأنت تستخدم الموارد التالية:

  • مجموعة موارد تسمى SQLResourceGroup
  • مخزن يسمى SQLVault
  • حاوية محمية تسمى VMAppContainer؛ حسب; SQLResourceGroup; testSQLVM
  • قاعدة بيانات/عنصر تم نسخه احتياطيا باسم sqldatabase؛ mssqlserver؛ أحسن
  • الموارد في منطقة westus2

يسهل Azure CLI عملية إدارة قاعدة بيانات SQL تعمل على جهاز Azure الظاهري الذي تم نسخه احتياطيا باستخدام Azure Backup. تصف الأقسام التالية كل عملية من عمليات الإدارة.

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

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

استخدم الأمر az backup job list لمراقبة المهام المكتملة أو قيد التشغيل حاليا (النسخ الاحتياطي أو الاستعادة). يسمح لك CLI أيضا بتعليق مهمة قيد التشغيل حاليا أو الانتظار حتى تكتمل المهمة.

az backup job list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --output table

يظهر الإخراج على النحو التالي:

Name                                  Operation              Status      Item Name       			Start Time UTC
------------------------------------  ---------------        ---------   ----------      			-------------------  
e0f15dae-7cac-4475-a833-f52c50e5b6c3  ConfigureBackup        Completed   master [testSQLVM]         2019-12-03T03:09:210831+00:00  
ccdb4dce-8b15-47c5-8c46-b0985352238f  Backup (Full)          Completed   master [testSQLVM]   		2019-12-01T10:30:58.867489+00:00
4980af91-1090-49a6-ab96-13bc905a5282  Backup (Differential)  Completed   master [testSQLVM]			2019-12-01T10:36:00.563909+00:00
F7c68818-039f-4a0f-8d73-e0747e68a813  Restore (Log)          Completed   master [testSQLVM]			2019-12-03T05:44:51.081607+00:00

تغيير نهج

لتغيير النهج الأساسي لتكوين النسخ الاحتياطي SQL، استخدم الأمر az backup policy set . تشير معلمة الاسم في هذا الأمر إلى عنصر النسخ الاحتياطي الذي تريد تغيير نهجه. هنا، استبدل نهج قاعدة بيانات SQL sqldatabase؛ mssqlserver؛ master مع نهج جديد جديدSQLPolicy. يمكنك إنشاء نهج جديدة باستخدام الأمر az backup policy create .

az backup item set-policy --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name newSQLPolicy \
    --name sqldatabase;mssqlserver;master \

يظهر الإخراج على النحو التالي:

Name                                  Operation        Status     Item Name    Backup Management Type    Start Time UTC                    Duration
------------------------------------  ---------------  ---------  -----------  ------------------------  --------------------------------  --------------
ba350996-99ea-46b1-aae2-e2096c1e28cd  ConfigureBackup  Completed  master       AzureWorkload             2022-06-22T08:24:03.958001+00:00  0:01:12.435765

إنشاء نهج نسخ احتياطي تفاضلي

لإنشاء نهج نسخ احتياطي تفاضلي، استخدم الأمر az backup policy create مع المعلمات التالية:

  • --backup-management-type: حمل عمل Azure.
  • --نوع حمل العمل: قاعدة بيانات SQL.
  • --name: اسم النهج.
  • --policy: ملف JSON مع التفاصيل المناسبة للجدول الزمني والاحتفاظ.
  • --resource-group: مجموعة موارد المخزن.
  • --vault-name: اسم المخزن/

على سبيل المثال:

az backup policy create --resource-group SQLResourceGroup --vault-name SQLVault --name SQLPolicy --backup-management-type AzureWorkload --policy SQLPolicy.json --workload-type SQLDataBase

نموذج JSON (sqlpolicy.json):

  "eTag": null,
  "id": "/Subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SQLResourceGroup/providers/Microsoft.RecoveryServices/vaults/SQLVault/backupPolicies/SQLPolicy",
  "location": null,
  "name": "sqlpolicy",
  "properties": {
    "backupManagementType": "AzureWorkload",
    "workLoadType": "SQLDataBase",
    "settings": {
      "timeZone": "UTC",
      "issqlcompression": false,
      "isCompression": false
    },
    "subProtectionPolicy": [
      {
        "policyType": "Full",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Sunday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T19:30:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "LongTermRetentionPolicy",
          "weeklySchedule": {
            "daysOfTheWeek": [
              "Sunday"
            ],
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 104,
              "durationType": "Weeks"
            }
          },
          "monthlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 60,
              "durationType": "Months"
            }
          },
          "yearlySchedule": {
            "retentionScheduleFormatType": "Weekly",
            "monthsOfYear": [
              "January"
            ],
            "retentionScheduleWeekly": {
              "daysOfTheWeek": [
                "Sunday"
              ],
              "weeksOfTheMonth": [
                "First"
              ]
            },
            "retentionTimes": [
              "2022-06-13T19:30:00Z"
            ],
            "retentionDuration": {
              "count": 10,
              "durationType": "Years"
            }
          }
        }
      },
      {
        "policyType": "Differential",
        "schedulePolicy": {
          "schedulePolicyType": "SimpleSchedulePolicy",
          "scheduleRunFrequency": "Weekly",
          "scheduleRunDays": [
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
          ],
          "scheduleRunTimes": [
            "2022-06-13T02:00:00Z"
          ],
          "scheduleWeeklyFrequency": 0
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 30,
            "durationType": "Days"
          }
        }
      },
      {
        "policyType": "Log",
        "schedulePolicy": {
          "schedulePolicyType": "LogSchedulePolicy",
          "scheduleFrequencyInMins": 120
        },
        "retentionPolicy": {
          "retentionPolicyType": "SimpleRetentionPolicy",
          "retentionDuration": {
            "count": 15,
            "durationType": "Days"
          }
        }
      }
    ],
    "protectedItemsCount": 0
  },
  "resourceGroup": "SQLResourceGroup",
  "tags": null,
  "type": "Microsoft.RecoveryServices/vaults/backupPolicies"
} 

بمجرد إنشاء النهج بنجاح، يظهر إخراج الأمر نهج JSON الذي قمت بتمريره كمعلمة أثناء تنفيذ الأمر.

يمكنك تعديل القسم التالي من النهج لتحديد تكرار النسخ الاحتياطي المطلوب والاحتفاظ به للنسخ الاحتياطية التفاضلية.

على سبيل المثال:

{
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 30,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday",
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

على سبيل المثال:

إذا كنت تريد الحصول على نسخ احتياطية تفاضلية فقط يوم السبت والاحتفاظ بها لمدة 60 يوما، فقم بإجراء التغييرات التالية في النهج:

  • تحديث عدد مدة الاستبقاء إلى 60 يوما.
  • حدد يوم السبت فقط ك ScheduleRunDays.
 {
  "policyType": "Differential",
  "retentionPolicy": {
    "retentionDuration": {
      "count": 60,
      "durationType": "Days"
    },
    "retentionPolicyType": "SimpleRetentionPolicy"
  },
  "schedulePolicy": {
    "schedulePolicyType": "SimpleSchedulePolicy",
    "scheduleRunDays": [
      "Saturday"
    ],
    "scheduleRunFrequency": "Weekly",
    "scheduleRunTimes": [
      "2017-03-07T02:00:00+00:00"
    ],
    "scheduleWeeklyFrequency": 0
  }
}

حماية قواعد البيانات الجديدة المضافة إلى مثيل SQL

تسجيل مثيل SQL مع مخزن خدمات الاسترداد يكتشف تلقائيا جميع قواعد البيانات في هذا المثيل.

ومع ذلك، إذا قمت بإضافة قواعد بيانات جديدة إلى مثيل SQL لاحقا، فاستخدم الأمر az backup protectable-item initialize . يكتشف هذا الأمر قواعد البيانات الجديدة المضافة.

az backup protectable-item initialize --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --workload-type SQLDataBase

ثم استخدم az backup protectable-item list cmdlet لسرد جميع قواعد البيانات التي تم اكتشافها على مثيل SQL الخاص بك. ومع ذلك، تستبعد هذه القائمة قواعد البيانات التي تم تكوين النسخ الاحتياطي عليها بالفعل. بمجرد اكتشاف قاعدة البيانات التي سيتم نسخها احتياطيا، راجع تمكين النسخ الاحتياطي على قاعدة بيانات SQL.

az backup protectable-item list --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --workload-type SQLDataBase \
	--protectable-item-type SQLDataBase \
    --output table

تظهر قاعدة البيانات الجديدة التي تريد نسخها احتياطيا في هذه القائمة، والتي تظهر على النحو التالي:

Name                            Protectable Item Type    ParentName    ServerName    IsProtected
---------------------------     ----------------------   ------------  -----------   ------------
sqldatabase;mssqlserver;db1     SQLDataBase              mssqlserver   testSQLVM	 NotProtected  
sqldatabase;mssqlserver;db2     SQLDataBase              mssqlserver   testSQLVM	 NotProtected

إيقاف الحماية لقاعدة بيانات SQL

يمكنك إيقاف حماية قاعدة بيانات SQL في العمليات التالية:

  • أوقف جميع مهام النسخ الاحتياطي المستقبلية واحذف جميع نقاط الاسترداد.
  • أوقف جميع مهام النسخ الاحتياطي المستقبلية واترك نقاط الاسترداد سليمة.

إذا اخترت ترك نقاط الاسترداد، فضع في اعتبارك هذه التفاصيل:

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

فيما يلي تفاصيل عمليات إيقاف الحماية.

إيقاف الحماية مع الاحتفاظ بالبيانات

لإيقاف الحماية مع الاحتفاظ بالبيانات، استخدم الأمر az backup protection disable' .

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --output table

يظهر الإخراج على النحو التالي:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

للتحقق من حالة هذه العملية، استخدم الأمر az backup job show .

إيقاف الحماية دون الاحتفاظ بالبيانات

لإيقاف الحماية دون الاحتفاظ بالبيانات، استخدم الأمر az backup protection disable .

az backup protection disable --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --item-name sqldatabase;mssqlserver;master \
    --workload-type SQLDataBase \
    --delete-backup-data true \
    --output table

يظهر الإخراج على النحو التالي:

Name                                  ResourceGroup
------------------------------------  ---------------  
g0f15dae-7cac-4475-d833-f52c50e5b6c3  SQLResourceGroup

للتحقق من حالة هذه العملية، استخدم الأمر az backup job show .

استئناف الحماية

عند إيقاف الحماية لقاعدة بيانات SQL مع الاحتفاظ بالبيانات، يمكنك استئناف الحماية لاحقا. إذا لم تحتفظ بالبيانات التي تم نسخها احتياطيا، فلن تتمكن من استئناف الحماية.

لاستئناف الحماية، استخدم الأمر az backup protection resume .

az backup protection resume --resource-group SQLResourceGroup \
    --vault-name SQLVault \
    --container-name VMAppContainer;Compute;SQLResourceGroup;testSQLVM \
    --policy-name SQLPolicy \
    --output table

يظهر الإخراج على النحو التالي:

Name                                  ResourceGroup
------------------------------------  ---------------  
b2a7f108-1020-4529-870f-6c4c43e2bb9e  SQLResourceGroup

للتحقق من حالة هذه العملية، استخدم الأمر az backup job show .

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