استعادة قاعدة البيانات المعجلة في Azure SQL

ينطبق على:قاعدة بيانات Azure SQ مثيل Azure SQL المدار

الاسترداد المعجل لقواعد البيانات (ADR) هو ميزة محرك قاعدة بيانات SQL Server التي تعمل على تحسين توفر قاعدة البيانات بشكل كبير، خاصة في وجود عمليات تشغيل طويلة، عن طريق إعادة تصميم عملية استرداد محرك قاعدة بيانات SQL Server.

يتوفر ADR حالياً لـ Azure SQL Database ومثيل Azure SQL المُدار وقواعد البيانات في Azure Synapse Analytics وSQL Server على Azure VMs بدءاً من SQL Server 2019. للحصول على معلومات عن قاعدة النشر التلقائي ADR في SQL Server، راجع إدارة الاسترداد السريع لقاعدة البيانات.

ملاحظة

يتم تمكين قاعدة النشر التلقائي افتراضياً في Azure SQL Database ومثيل Azure SQL المُدار. لا يتم دعم تعطيل قاعدة النشر التلقائي ADR في Azure SQL Database ومثيل Azure SQL المُدار.

نظرة عامة

الفوائد الأساسية لتسوية المنازعات هي:

  • استرداد سريع ومتسق لقاعدة البيانات

    مع ADR، لا تؤثر العمليات طويلة الأمد على وقت الاسترداد الإجمالي، ما يتيح استرداد قاعدة البيانات بشكل سريع ومتسق بغض النظر عن عدد العمليات النشطة في النظام أو أحجامها.

  • التراجع الفوري عن العمليات

    مع ADR، يكون التراجع عن المعاملة فورياً، بغض النظر عن الوقت الذي كانت فيه المعاملة نشطة أو عدد التحديثات التي تم إجراؤها.

  • اقتطاع صارم من السجل

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

عملية استعادة قاعدة البيانات القياسية

تتبع استعادة قاعدة البيانات نموذج الاسترداد ARIES وتتكون من ثلاث مراحل، موضحة في الرسم التخطيطي التالي وموضحة بمزيد من التفصيل بعد الرسم التخطيطي.

current recovery process

  • مرحلة التحليل

    مسح إلى الأمام لسجل العمليات من بداية آخر نقطة تفتيش ناجحة (أو أقدم صفحة متسخة LSN) حتى النهاية، لتحديد حالة كل معاملة في الوقت الذي توقفت فيه قاعدة البيانات.

  • مرحلة الإعادة

    مسح إلى الأمام لسجل العمليات من أقدم معاملة غير ملتزمة حتى النهاية، لإحضار قاعدة البيانات إلى الحالة التي كانت عليها وقت الانهيار عن طريق إعادة جميع العمليات الملتزمة.

  • مرحلة التراجع

    لكل معاملة كانت نشطة اعتباراً من وقت الانهيار، تتجاوز السجل للخلف، والتراجع عن العمليات التي نفذتها هذه المعاملة.

بناءً على هذا التصميم، فإن الوقت الذي يستغرقه محرك قاعدة بيانات SQL Server للتعافي من إعادة التشغيل غير المتوقعة (تقريباً) يتناسب مع حجم أطول معاملة نشطة في النظام وقت حدوث الانهيار. يتطلب الاسترداد التراجع عن جميع العمليات غير المكتملة. يتناسب طول الفترة الزمنية المطلوبة مع العمل الذي قامت به المعاملة والوقت الذي كانت نشطة فيه. لذلك، يمكن أن تستغرق عملية الاسترداد وقتاً طويلاً في وجود عمليات طويلة الأمد (مثل عمليات الإدراج بالجملة الكبيرة أو عمليات إنشاء الفهرس مقابل جدول كبير).

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

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

عملية الاسترداد المعجل لقاعدة البيانات

يعالج ADR المشكلات المذكورة أعلاه من خلال إعادة تصميم عملية استرداد محرك قاعدة بيانات SQL Server بالكامل إلى:

  • اجعله وقتاً ثابتاً/فورياً عن طريق تجنب الاضطرار إلى مسح السجل من/إلى بداية أقدم معاملة نشطة. باستخدام ADR، تتم معالجة سجل العمليات فقط من آخر نقطة تحقق ناجحة (أو أقدم رقم تسلسل سجل للصفحة المهملة (LSN)). نتيجة لذلك، لا يتأثر وقت الاسترداد بالعمليات طويلة الأمد.
  • قلل من مساحة سجل العمليات المطلوبة حيث لم تعد هناك حاجة لمعالجة السجل للمعاملة بأكملها. نتيجة لذلك، يمكن اقتطاع سجل العمليات بقوة عند حدوث نقاط التفتيش والنسخ الاحتياطية.

على مستوى عالٍ، يحقق ADR استرداداً سريعاً لقاعدة البيانات عن طريق تعيين إصدارات لجميع تعديلات قاعدة البيانات المادية والتراجع فقط عن العمليات المنطقية، والتي تكون محدودة ويمكن التراجع عنها على الفور تقريباً. يتم وضع علامة على أي معاملة كانت نشطة اعتباراً من وقت الانهيار على أنها تم إحباطها، وبالتالي، يمكن تجاهل أي إصدارات تم إنشاؤها بواسطة هذه العمليات من خلال استعلامات المستخدم المتزامنة.

عملية استرداد ADR لها نفس المراحل الثلاث لعملية الاسترداد الحالية. يتم توضيح كيفية عمل هذه المراحل مع ADR في الرسم البياني التالي ويتم شرحها بمزيد من التفصيل بعد الرسم التخطيطي.

ADR recovery process

  • مرحلة التحليل

    تظل العملية كما كانت من قبل مع إضافة إعادة بناء SLOG ونسخ سجلات السجل للعمليات دون إصدار.

  • مرحلة إعادة

    مقسمة إلى مرحلتين (P)

    • المرحلة الأولى

      مرحلة الإعادة من SLOG (أقدم عملية غير مثبتة حتى آخر نقطة تحقق). تعتبر الإعادة عملية سريعة لأنها تحتاج فقط إلى معالجة بعض السجلات من SLOG.

    • المرحلة الثانية

      تبدأ الإعادة من سجل العمليات من آخر نقطة فحص (بدلاً من أقدم معاملة غير ملتزمة)

  • مرحلة التراجع

    تكتمل مرحلة التراجع باستخدام قاعدة النشر التلقائي ADR على الفور تقريباً باستخدام SLOG للتراجع عن العمليات التي لا تحتوي على إصدارات ومخزن الإصدارات الثابتة (PVS) مع الرجوع المنطقي لأداء التراجع المستند إلى الإصدار على مستوى الصف.

مكونات استرداد ADR

المكونات الأربعة الرئيسية لتسوية المنازعات هي:

  • مخزن الإصدارات الثابتة (PVS)

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

  • عودة منطقية

    العودة المنطقية هي العملية غير المتزامنة المسؤولة عن تنفيذ التراجع المستند إلى الإصدار على مستوى الصف - ما يوفر التراجع الفوري عن العمليات والتراجع عن جميع العمليات التي تم إصدارها. يتم تحقيق العودة المنطقية عن طريق:

    • تتبع جميع العمليات المجهضة وتمييزها بأنها غير مرئية للعمليات الأخرى.
    • إجراء التراجع عن طريق استخدام PVS لجميع عمليات المستخدم، بدلاً من المسح الفعلي لسجل العمليات والتراجع عن التغييرات واحدة تلو الأخرى.
    • تحرير جميع الأقفال مباشرة بعد إحباط المعاملة. نظراً لأن الإجهاض ينطوي ببساطة على تعليم التغييرات في الذاكرة، فإن العملية فعالة للغاية وبالتالي لا يلزم الاحتفاظ بالأقفال لفترة طويلة.
  • SLOG

    إن SLOG عبارة عن دفق سجل ثانوي في الذاكرة الداخلية يخزن سجلات السجل للعمليات التي ليس لها إصدار (مثل إبطال ذاكرة التخزين المؤقت لبيانات التعريف، وعمليات الحصول على القفل، وما إلى ذلك). إن SLOG هو:

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

    يعد Cleaner عملية غير متزامنة تبدأ العمل بشكل دوري وتنظف إصدارات الصفحات غير المطلوبة.

أنماط الاسترداد المعجل لقواعد البيانات (قاعدة النشر التلقائي ADR)

تستفيد الأنواع التالية من أعباء العمل أكثر من ADR:

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

أفضل الممارسات لاستعادة قاعدة البيانات المعجلة

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

  • تجنب العمليات الكبيرة مع تغييرات تعريف البيانات أو عمليات لغة تعريف البيانات. يستخدم قاعدة النشر التلقائي آلية SLOG (دفق سجل النظام) لتتبع عمليات لغة تعريف البيانات المستخدمة في الاسترداد. يتم استخدام SLOG فقط أثناء تنشيط العملية. تم إجراء نقطة تحقق لـSLOG، لذا فإن تجنب العمليات الكبيرة التي تستخدم SLOG يمكن أن يساعد في الأداء العام. يمكن أن تتسبب هذه السيناريوهات في شغل SLOG مساحة أكبر:

    • يتم تنفيذ العديد من لغات تعريف البيانات في عملية واحدة. على سبيل المثال؛ في عملية واحدة، يتم إنشاء جداول مؤقتة وإفلاتها بسرعة.

    • يحتوي الجدول على عدد كبير جداً من الأقسام/الفهارس التي تم تعديلها. على سبيل المثال؛ قد تتطلب عملية DROP TABLE في هذا الجدول حجزاً كبيراً لذاكرة SLOG، ما يسمح قد يؤخر اقتطاع سجل العمليات ويؤخر عمليات التراجع/الإعادة. يمكن أن يكون الحل البديل هو إفلات الفهارس بشكل فردي وتدريجي، ثم إسقاط الجدول. لمزيد من المعلومات عن SLOG، راجع مكونات استرداد قاعدة النشر التلقائي.

  • منع أو تقليل المواقف المجهضة غير الضرورية. سيؤدي معدل الإجهاض المرتفع إلى الضغط على منظف PVS وانخفاض أداء قاعدة النشر التلقائي. قد تأتي عمليات الإحباط من ارتفاع معدل حالات التوقف التام أو المفاتيح المكررة أو حالات خرق القيود الأخرى.

    • يعرض sys.dm_tran_aborted_transactions طريقة عرض الإدارة الديناميكية جميع العمليات التي تم إحباطها على مثيل SQL Server. يشير العمود nested_abort إلى أن العملية تم تنفيذها ولكن هناك أجزاء تم إحباطها (نقاط حفظ أو عمليات متداخلة) والتي يمكن أن تمنع عملية تنظيف PVS. لمزيد من المعلومات، راجع sys.dm_tran_aborted_transactions (Transact-SQL).

    • لتنشيط عملية تنظيف PVS يدوياً بين أحمال العمل أو أثناء فترات الصيانة، استخدم sys.sp_persistent_version_cleanup. لمزيد من المعلومات، راجع sys.sp_persistent_version_cleanup.

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

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