حول النَّسخ الاحتياطي لـ SQL Server في Azure VMs

يوفرAzure Backup حلّاً متخصصاً قائماً على التدفق لعمل نسخة احتياطية من SQL Server الذي يتم تشغيله في Azure VMs. يتوافق هذا الحل مع مزايا Azure Backup للنسخ الاحتياطي دون بنية الأساسية واستبقاء طويل الأمد وإدارة مركزية. يوفر بالإضافة إلى ذلك المزايا التالية خصوصاً لـ SQL Server:

  1. حمل العمل على علم بالنسخ الاحتياطية التي تدعم جميع أنواع النسخ الاحتياطي -- النسخ الاحتياطي الكامل، والنسخ الاحتياطي التفاضلي، والنسخ الاحتياطي للسجل
  2. 15 دقيقة RPO (هدف نقطة الاسترداد) مع نسخ احتياطي متكرر للسجلات
  3. استرداد في نقطة زمنية حتى ثانية
  4. نسخ احتياطي واستعادة مستوى قاعدة بيانات فردية

ملاحظة

النسخ الاحتياطي المستند إلى لقطة لقواعد بيانات SQL في Azure VM قيد المعاينة الآن. يجمع هذا العرض الفريد بين جودة اللقطات، وهو ما يؤدي إلى تحسين RTO وتأثير منخفض على الخادم، إلى جانب مزايا عمليات النَّسخ الاحتياطي للسجلات المتكررة لنسبة منخفضة من RPO. لأي استفسارات/الحصول على معلومات وصول، راسلنا على AskAzureBackupTeam@microsoft.com.

لعرض سيناريوهات النَّسخ الاحتياطي والاستعادة التي ندعمها اليوم، راجع مصفوفة الدعم.

عملية النَّسخ الاحتياطي

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

  • بمخزون تحديد SQL Server VM الذي تريد حمايته والاستعلام عن قواعد البيانات الموجودة فيه، ستقوم Azure Backup Service بتثبيت ملحق نسخة احتياطية لحمل العمل على الجهاز الظاهري حسب الاسم AzureBackupWindowsWorkload الملحق.

  • يتكون هذا الملحق من منسق ومكوِّن إضافي لـ SQL. بينما يكون المنسق مسؤولاً عن بدء سير العمل لمختلف العمليات، مثل تكوين النَّسخ الاحتياطي والنَّسخ الاحتياطي والاستعادة، فإن المكون الإضافي مسؤول عن تدفق البيانات الفعلي.

  • لتتمكن من اكتشاف قواعد البيانات على هذا الجهاز الظاهري، يقوم Azure Backup بإنشاء الحساب NT SERVICE\AzureWLBackupPluginSvc. يتم استخدام هذا الحساب للنسخ الاحتياطي والاستعادة، ويتطلب أذونات SQL sysadmin. حساب NT SERVICE\AzureWLBackupPluginSvc هو حساب خدمة ظاهري، وبالتالي لا يتطلب أي إدارة لكلمات المرور. يستخدم Azure Backup حساب NT AUTHORITY\SYSTEM لاكتشاف/استعلام قاعدة البيانات؛ لذلك يجب أن يكون هذا الحساب تسجيل دخول عامّاً على SQL. إذا لم تقم بإنشاء الجهاز الظاهري SQL Server من Azure Marketplace، فقد تتلقى خطأ UserErrorSQLNoSysadminShip. إذا حدث هذا، فاتبع هذه الإرشادات.

  • بمخزون تشغيل تكوين الحماية على قواعد البيانات المحددة، تقوم خدمة النَّسخ الاحتياطي بإعداد المنسق بجداول النَّسخ الاحتياطي وتفاصيل النُّهج الأخرى، والتي يخزنها الملحق مؤقتاً محليًا على الجهاز الظاهري.

  • في الوقت المحدد، يتواصل المنسق مع المكون الإضافي ويبدأ في دفق بيانات النسخ الاحتياطي من خادم SQL باستخدام VDI.

  • يرسل المكون الإضافي البيانات مباشرة إلى خزنة خدمات الاسترداد، وبالتالي يُلغي الحاجة إلى موقع التدريج. يتم تشفير البيانات وتخزينها بواسطة خدمة Azure Backup في حسابات التخزين.

  • عند اكتمال نقل البيانات، يؤكد المنسق الالتزام بخدمة النَّسخ الاحتياطي.

    بنية SQL الاحتياطية

قبل البدء

قَبل أن تبدأ، تحقق من المتطلبات التالية:

  1. تأكد من تشغيل مثيل SQL Server في Azure. يمكنك إنشاء مثيل SQL Server بسرعة في السوق.
  2. راجع اعتبارات الميزات ودعم السيناريو.
  3. راجع الأسئلة المتداولة حول هذا السيناريو.

تعيين أذونات الجهاز الظاهري

عند تشغيل اكتشاف على SQL Server، تقوم خدمة Azure Backup بما يلي:

  • إضافة الملحق AzureBackUpWindowsWorkload.
  • إنشاء حساب NT SERVICE\AzureWLBackupPluginSvc لاكتشاف قواعد البيانات على الجهاز الظاهري. يتم استخدام هذا الحساب للنسخ الاحتياطي والاسترداد ويتطلب أذونات مسؤول نظام SQL.
  • اكتشاف قواعد البيانات التي تعمل على الجهاز الظاهري، تستخدم خدمة Azure Backup حساب NT AUTHORITY\SYSTEM. يجب أن يكون هذا الحساب مخصصًا لتسجيل الدخول العام على SQL.

إذا لم تقم بإنشاء SQL Server VM في Azure Marketplace أو إذا كنت تستخدم SQL 2008 أو 2008 R2، فقد تتلقى خطأ UserErrorSQLNoSysadminMembership.

لمنح الأذونات في حالة تشغيل SQL 2008 و2008 R2 على Windows 2008 R2، راجع هنا.

لجميع الإصدارات الأخرى، أصلح الأذونات من خلال الخطوات التالية:

  1. استخدم حساباً به أذونات مسؤول النظام في SQL Server لتسجيل الدخول إلى SQL Server Management Studio (SSMS). يجب أن تعمل مصادقة Windows ما لم تكن بحاجة إلى أذونات خاصة.

  2. في SQL Server، افتح المجلد Security/Logins.

    افتح مجلد Security/Logins لمشاهدة الحسابات

  3. انقر بزر الماوس الأيمن فوق المجلد Logins وحدد New Login. في تسجيل الدخول - جديد، حدد Search.

    في مربع الحوار تسجيل الدخول - جديد، حدد Search

  4. تم إنشاء حساب خدمة Windows الافتراضية NT SERVICE \ AzureWLBackupPluginSvc في أثناء تسجيل الجهاز الظاهري ومرحلة اكتشاف SQL. أدخل اسم الحساب كما هو موضح في أدخل اسم الكائن لتحديد. حدد Check Names لتحديد الاسم. حدد "OK".

    تحديد التحقق من الأسماء لحل اسم الخدمة غير المعروف

  5. في أدوار الخادم، تأكد من تحديد دور مسؤول النظام. حدد "OK". يجب أن تكون الأذونات المطلوبة موجودة الآن.

    تأكد من تحديد دور خادم مسؤول النظام

  6. الآن قم بربط قاعدة البيانات بمخزن خدمات الاسترداد. في مدخل Microsoft Azure، في قائمة Protected Servers، انقر بزر الماوس الأيمن فوق الخادم الموجود في حالة خطأ >Rediscover DBs.

    تحقق من أن الخادم لديه الأذونات المناسبة

  7. تحقق من التقدم في منطقة التنبيهات. عند العثور على قواعد البيانات المحددة، تظهر رسالة نجاح.

    رسالة نجاح النشر

ملاحظة

إذا كان لدى SQL Server مثيلات متعددة من SQL Server مثبتة، يجب عليك إضافة إذن مسؤول النظام لحساب NT Service \ AzureWLBackupPluginSvc إلى جميع مثيلات SQL.

امنح أذونات SQL sysadmin لكلٍّ مِن SQL 2008 وSQL 2008 R2

أضف تسجيلات دخول NT AUTHORITY \ SYSTEM وNT Service \ AzureWLBackupPluginSvc إلى مثيل SQL Server:

  1. انتقل إلى مثيل SQL Server في مستكشف الكائنات.

  2. انتقل إلى Security -> Logins

  3. انقر بزر الماوس الأيمن فوق عمليات تسجيل الدخول، وحدد New Login…

    تسجيل دخول جديد باستخدام Management Studio

  4. انتقل إلى علامة التبويب "عام" وأدخل NT AUTHORITY \ SYSTEM كاسم تسجيل الدخول.

    اسم تسجيل الدخول لـ Management Studio

  5. انتقل إلى Server Roles واختر الدورَيْن public وsysadmin.

    اختيار الأدوار في Management Studio

  6. انتقل إلى Status. امنح الإذن بالاتصال بمحرك قاعدة البيانات وتسجيل الدخول كـ ممكَّن.

    منح الأذونات في Management Studio

  7. حدد "OK".

  8. كرر تسلسل الخطوات نفسه (1-7 أعلاه) لإضافة تسجيل دخول NT Service \ AzureWLBackupPluginSvc إلى مثيل SQL Server. إذا كان تسجيل الدخول موجوداً بالفعل، فتأكد من أنه يحتوي على دور خادم مسؤول النظام وتحت الحالة، منح الإذن بالاتصال بمحرك قاعدة البيانات وتسجيل الدخول كممكَّن.

  9. بعد منح الإذن، انتقل إلى Rediscover DBs في المدخل: Vault -> Backup Infrastructure -> Workload في Azure VM:

    أعد اكتشاف قواعد البيانات في مدخل Microsoft Azure

بدلاً من ذلك، يمكنك أتمتة منح الأذونات عن طريق تشغيل أوامر PowerShell التالية في وضع المسؤول. يتم تعيين اسم المثيل إلى MSSQLSERVER افتراضيًا. تغيير وسيطة اسم المثيل في البرنامج النصي إذا لزم الأمر.

param(
    [Parameter(Mandatory=$false)]
    [string] $InstanceName = "MSSQLSERVER"
)
if ($InstanceName -eq "MSSQLSERVER")
{
    $fullInstance = $env:COMPUTERNAME   # In case it is the default SQL Server Instance
}
else
{
    $fullInstance = $env:COMPUTERNAME + "\" + $InstanceName   # In case of named instance
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT Service\AzureWLBackupPluginSvc', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}
try
{
    sqlcmd.exe -S $fullInstance -Q "sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin'" # Adds login with sysadmin permission if already not available
}
catch
{
    Write-Host "An error occurred:"
    Write-Host $_.Exception|format-list -force
}

تكوين النسخ الاحتياطية المتزامنة

يمكنك الآن تكوين النسخ الاحتياطية لحفظ نقاط وسجلات استرداد خادم SQL في مخزن محلي ومخزن خدمات الاسترداد في وقت واحد.

لتكوين النسخ الاحتياطية المتزامنة، اتبع الخطوات التالية:

  1. انتقل إلى C:\Program Files\Azure Workload Backup\bin\plugins الموقع، ثم قم بإنشاء الملف PluginConfigSettings.json، إذا لم يكن موجودا.

  2. أضف كيانات قيمة المفتاح المفصولة بفواصل، مع المفاتيح EnableLocalDiskBackupForBackupTypes وإلى LocalDiskBackupFolderPath ملف JSON.

    • ضمن EnableLocalDiskBackupForBackupTypes، قم بإدراج أنواع النسخ الاحتياطي التي تريد تخزينها محليا.

      على سبيل المثال، إذا كنت تريد تخزين النسخ الاحتياطية الكاملةوالسجل ، فذكر ["Full", "Log"]. لتخزين النسخ الاحتياطية للسجل فقط، قم بذكر ["Log"].

    • ضمن LocalDiskBackupFolderPath، قم بذكر المسار إلى المجلد المحلي. تأكد من استخدام الشرطة المائلة للأمام المزدوجة أثناء الإشارة إلى المسار في ملف JSON.

      على سبيل المثال، إذا كان المسار المفضل للنسخ الاحتياطي المحلي هو E:\LocalBackup، فذكر المسار في JSON ك E:\\LocalBackup.

      يجب أن يظهر JSON النهائي على النحو التالي:

      {
         "EnableLocalDiskBackupForBackupTypes": ["Log"],
         "LocalDiskBackupFolderPath": "E:\\LocalBackup",
      }
      

      إذا كانت هناك إدخالات أخرى تم ملؤها مسبقا في ملف JSON، فأضف الإدخالين أعلاه في أسفل ملف JSON قبل قوس الإغلاق المتعرج.

  3. لكي تسري التغييرات على الفور بدلا من ساعة واحدة عادية، انتقل إلى TaskManager>Services، وانقر بزر الماوس الأيمن فوق AzureWLbackupPluginSvc وحدد Stop.

    تنبيه

    سيؤدي هذا الإجراء إلى إلغاء جميع مهام النسخ الاحتياطي المستمرة.

    سيكون {LocalDiskBackupFolderPath}\{SQLInstanceName}\{DatabaseName}اصطلاح التسمية لملف النسخ الاحتياطي المخزن وبنية المجلد له .

    على سبيل المثال، إذا كان لديك قاعدة بيانات Contoso ضمن مثيل MSSQLSERVERSQL ، فستوجد الملفات في .E:\LocalBackup\MSSQLSERVER\Contoso

    اسم الملف هو VDI device set guid، والذي يستخدم لعملية النسخ الاحتياطي.

  4. تحقق مما إذا كان الموقع الهدف ضمن LocalDiskBackupFolderPath لديه أذونات القراءةوالكتابة ل NT Service\AzureWLBackupPluginSvc.

    ملاحظة

    بالنسبة إلى مجلد على أقراص الجهاز الظاهري المحلية، انقر بزر الماوس الأيمن فوق المجلد وقم بتكوين الأذونات المطلوبة ل NT Service\AzureWLBackupPluginSvc في علامة التبويب الأمان .

    إذا كنت تستخدم مشاركة شبكة أو SMB، فقم بتكوين الأذونات عن طريق تشغيل أوامر PowerShell cmdlets أدناه من وحدة تحكم مستخدم لديها بالفعل الإذن للوصول إلى المشاركة:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath <FileSharePath> -Credential $cred -LocalPath <LocalDrive>:  -FullAccess @("<Comma Separated list of accounts>") -Persistent $true
    

    مثال:

    $cred = Get-Credential
    New-SmbGlobalMapping -RemotePath \\i00601p1imsa01.file.core.windows.net\rsvshare -Credential $cred -LocalPath Y:  -FullAccess @("NT AUTHORITY\SYSTEM","NT Service\AzureWLBackupPluginSvc") -Persistent $true
    

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