إعداد نسخة احتياطية منتظمة لقاعدة بيانات MS SQL Server. إنشاء نسخة احتياطية تلقائية من قاعدة بيانات SQL على خادم SQL Express Edition. إنشاء نسخة احتياطية من SQL

09.11.2020

sqlcmd -S DECLSERVER \ SQLGTD -E -Q "أعلنs varchar (255) set @ s = 'E: \ backup \ GTD_' + convert (varchar (1) ، datepart (dw ، getdate ())) + '. GTD لقاعدة بيانات النسخ الاحتياطي bak إلى القرص =s مع init ، noformat ، تخطي ، nounload "

sqlcmdيسمح لك بإدخال عبارات SQL للعمليات وإجراءات النظام وملفات البرامج النصية من سطر الأوامرإلى محرر الاستعلام في وضع SQLCMD ،

  • - يحدد اسم الخادم ، الخادم [\ اسم_المثيل];
  • DECLSERVER \ SQLGTD - اسم الخادم / اسم المثيل الذي تعمل عليه قاعدة البيانات ؛
  • -E - يستخدم اتصالاً موثوقًا به للاتصال بخادم SQL بدلاً من اسم المستخدم وكلمة المرور ؛
  • -Q "cmdlinequery" - عند بدء البرنامج sqlcmdينفذ الطلب ، لكنه يخرج من البرنامج عند الانتهاء من تنفيذه. يمكن تنفيذ استعلامات متعددة ، مفصولة بفواصل منقوطة. أرفق استفسارك بعلامات اقتباس كما هو موضح أعلاه ؛
  • يعلن - نعلن عن متغير s ، يبدأ اسم المتغير دائمًا بـ @ ، لذلك ... في حالتنا هذه - هذا مجلد (قرص) لتخزين النسخ الاحتياطية ؛
  • فارشار (ن) - يحدد نوع المتغير كسلسلة ذات سلسلة طويلة n ، في المثال 255 حرفًا ؛
  • يضع - يحدد قيمة المتغير ، في المثال ، هذا هو مجلد النسخ الاحتياطي على محرك الأقراص E ( هـ: \ نسخ احتياطي \) ، ثم يتم تعيين اسم ملف النسخ الاحتياطي ، حيث يتم تعيين مجموعة الوظائف تحويل (varchar (1) ، datepart (dw ، getdate ()))يعود الى تنسيق النصبطول حرف واحد في اليوم الحالي من الأسبوع (الاثنين - 1 ، يوم الثلاثاء - 2 ، وما إلى ذلك) ويتم إضافة الامتداد خبز... في الإخراج ، نحصل على ملف اسمه GTD_WeekDayNumber.bak;
  • دعم - يقوم بإنشاء نسخة احتياطية ؛
  • قاعدة البيانات - يشير إلى إنشاء نسخة احتياطية من قاعدة البيانات بأكملها ؛
  • GTD - في مثالنا ، اسم قاعدة البيانات على خادم SQL ؛
  • إلى القرص - يشير إلى نوع جهاز تخزين النسخ الاحتياطي ، الملف القرص الصلب، ويتم تحديد المتغير ، والذي يتم تعيين مسار واسم الملف المراد إنشاؤه ؛
  • مع init ، noformat ، تخطي ، nounload - يشير إلى أنه من الضروري إعادة كتابة البيانات في دائرة مع إعادة تعريف الرؤوس ، مما سيتيح لنا الحصول على 7 ملفات نسخ احتياطي لكل يوم من أيام الأسبوع ، يمكن إعادة كتابتها في دائرة.

يمكنك استخدام وظائف أخرى حسب الحاجة ، مثل الضغط ، راجع استعلام SQL للعمليات وتعليمات الوظيفة.

الخطوة 2. قم بتغيير امتداد الملف النصي إلى .cmd

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

الخطوة 3. نقوم بأتمتة هذه العملية

لنفكر في هذه الخطوة باستخدام مثال MS مشغل برامج وندوز 2008: إدارة الخادم -> التكوين -> برنامج جدولة المهام -> مكتبة برنامج جدولة المهام.

ينقسم مسؤولو قواعد البيانات إلى أولئك الذين يقومون بعمل نسخ احتياطية ، وأولئك الذين سيقومون بعمل نسخ احتياطية.

مقدمة

توضح هذه المقالة النسخ الاحتياطي الأكثر شيوعًا لـ IS 1C باستخدام أدوات MS خادم قاعدة البيانات 2008 R2 ، يشرح لماذا يجب أن يتم ذلك بهذه الطريقة وليس بطريقة أخرى ، وبدد العديد من الأساطير. تحتوي المقالة على عدد غير قليل من الارتباطات لوثائق MS SQL ، وهذه المقالة هي نظرة عامة على آليات النسخ الاحتياطي أكثر من كونها دليلًا شاملاً. ولكن بالنسبة لأولئك الذين يواجهون هذه المهمة لأول مرة ، بسيطة و تعليمات خطوه بخطوهالتي تنطبق على المواقف البسيطة. المقال ليس مخصصًا لمعلمي الإدارة والمعلمين وهكذا يعرف الجميع ذلك ، ولكن يُفترض أن القارئ قادر على تثبيت MS SQL Server بنفسه وإجبار هذه المعجزة من التكنولوجيا المعادية على إنشاء قاعدة بيانات في أعماقه ، والتي بدورها ، فهو قادر على إجبار تخزين بيانات 1C.

أنا أعتبر أن أمر TSQL BACKUP DATABASE (وشقيقه BACKUP LOG) هو في الأساس أداة النسخ الاحتياطي الوحيدة لقواعد بيانات 1C باستخدام MS SQL Server كنظام DBMS. لماذا ا؟ دعنا نلقي نظرة على الطرق التي لدينا بشكل عام:

كيف حسن بشكل سيئ المجموع
تحميل إلى dt تنسيق مضغوط للغاية. يستغرق التكوين وقتًا طويلاً ، ويتطلب وصولاً خاصًا ، ولا يحفظ بعض البيانات غير المهمة (مثل إعدادات المستخدم في الإصدارات القديمة) ، تتكشف لفترة طويلة. إنها ليست طريقة نسخ احتياطي بقدر ما هي طريقة لنقل البيانات من بيئة إلى أخرى. مثالي للقنوات الضيقة.
نسخ mdfو ldf طريقة واضحة جدًا للمسؤولين المبتدئين. يتطلب تحرير ملفات قاعدة البيانات من القفل ، وهذا ممكن إذا كانت قاعدة البيانات غير متصلة بالإنترنت (خذ دون اتصال قائمة السياق) أو فصل أو أوقف الخادم ببساطة. من الواضح أن المستخدمين لن يكونوا قادرين على العمل في هذا الوقت. من المنطقي استخدام هذه الطريقة في حالة وقوع حادث بالفعل وفقط في حالة حدوثه ، بحيث تكون قادرًا على الأقل عند محاولة التعافي على العودة إلى الخيار الذي بدأ منه الاسترداد.
النسخ الاحتياطي عن طريق نظام التشغيل أو برنامج Hypervisor طريقة ملائمة لبيئات التطوير والاختبار. ليست دائما ودية مع سلامة البيانات. طريقة كثيفة الاستخدام للموارد. يمكن استخدامها إلى حد محدود من أجل التنمية. لا معنى عملي في بيئة البقالة.
النسخ الاحتياطي عن طريق MS SQL لا حاجة لتعطل. يسمح لك باستعادة حالة متكاملة في لحظة اعتباطية ، إذا كنت قلقًا بشأنها مسبقًا. مؤتمتة تمامًا. اقتصادية في الوقت والموارد الأخرى. ليس تنسيقًا مضغوطًا جدًا. لا يعرف الجميع كيفية استخدام هذه الطريقة بالقدر اللازم. لبيئات البقالة - الأداة الرئيسية.

تنشأ الصعوبات الرئيسية عند استخدام النسخ الاحتياطي بواسطة أدوات MS SQL المدمجة من سوء فهم أولي لمبادئ التشغيل. يرجع هذا جزئيًا إلى الكسل الكبير ، جزئيًا إلى عدم وجود تفسير بسيط ومفهوم على مستوى "الوصفات الجاهزة" (حسنًا ، لنفترض أنني لم ألتقِ بها) ، وحتى الموقف تفاقم بسبب النصائح الأسطورية " صغير الحجم "في المنتديات. لا أعرف ماذا أفعل مع الكسل ، لكنني سأحاول شرح أساسيات النسخ الاحتياطي.

ماذا نحفظ ولماذا؟

منذ زمن بعيد ، في مجرة ​​بعيدة ، كان هناك نتاج هندسي وفكر محاسبي مثل 1C: Enterprise 7.7. على ما يبدو ، نظرًا لحقيقة أن الإصدارات الأولى من 1C: تم تطوير Enterprise لاستخدام تنسيق ملف dbf الشائع ، فإن إصدار SQL الخاص به لم يخزن معلومات كافية في قاعدة البيانات لاعتبار النسخة الاحتياطية MS SQL كاملة ، وحتى مع كل بنية تغييره تم انتهاك ظروف العمل لنموذج الاسترداد الكامل ، لذلك كان عليك الذهاب إلى حيل مختلفة للحصول على نظام النسخ الاحتياطي لأداء وظيفته الرئيسية. ولكن منذ إصدار الإصدار 8 ، تمكن مسؤولو قواعد البيانات في النهاية من الاسترخاء. تتيح لك أدوات النسخ الاحتياطي القياسية إنشاء نظام كامل وكامل النسخ الاحتياطية... فقط السجل وبعض التفاصيل الصغيرة مثل ضبط موضع النماذج (في الإصدارات القديمة) لا يتم تضمينها في النسخة الاحتياطية ، لكن فقدان هذه البيانات لا يؤثر على وظائف النظام ، على الرغم من أنه من الصحيح والمفيد بالتأكيد عمل نسخ احتياطية من السجل.

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

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

لضمان استخدام النسخة الاحتياطية للأغراض "السلمية" فقط ، استخدم وسائل أخرى لضمان قابلية التشغيل:

  • احتفظ بخوادمك بأمان ماديًا: الحرائق والفيضانات وإمدادات الطاقة الضعيفة والمنظفات والبنائين والنيازك والحياة البرية قريبة جدًا في انتظار تدمير غرفة الخادم الخاصة بك.
  • مسؤول عن تهديدات أمن المعلومات.
  • قم بإجراء تغييرات على النظام بطريقة احترافية وتأكد مقدمًا قدر الإمكان من أن هذه التغييرات لن تؤدي إلى التدهور. بالإضافة إلى خطة التغيير ، من المستحسن أن يكون لديك خطة "ماذا تفعل إذا ساءت الأمور".
  • استفد بشكل فعال من التقنيات لتحسين توافر وموثوقية النظام بدلاً من تنظيف عواقب الحوادث لاحقًا. بالنسبة لـ MS SQL ، يجب الانتباه إلى الميزات التالية:
    • استخدام مجموعات MS SQL (على الرغم من أنني بصراحة ، أعتقد أن هذه واحدة من أكثر الطرق تكلفة وعديمة الجدوى لإبقاء DBA مشغولاً للأنظمة التي لا تتطلب 24 × 7)
    • انعكاس قاعدة البيانات (متزامن وغير متزامن حسب التوافر والأداء ومتطلبات التكلفة)
    • سجلات معاملات الشحن
    • النسخ عن طريق 1C (قواعد البيانات الموزعة)

اعتمادًا على متطلبات توفر النظام والميزانية المخصصة لهذه الأغراض ، من الممكن تمامًا اختيار الحلول التي من شأنها تقليل وقت التوقف عن العمل ووقت الفشل بمقدار 1-2 أوامر من حيث الحجم. ليست هناك حاجة للخوف من تقنيات إمكانية الوصول: فهي بسيطة بما يكفي للتعلم في غضون أيام قليلة مع المعرفة الأساسية بـ MS SQL.

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

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

معلومات أساسية حول تخزين بيانات MS SQL ومعالجتها

عادةً ما يتم تخزين البيانات في MS SQL في ملفات البيانات (المشار إليها فيما يلي باسم FD هو اختصار غير مستخدم بشكل شائع ، وستحتوي هذه المقالة على العديد من الاختصارات غير الشائعة جدًا) مع الامتدادات mdf أو ndf. بالإضافة إلى هذه الملفات ، هناك أيضًا سجلات المعاملات (TT) ، والتي يتم تخزينها في ملفات بامتداد ldf. ليس من غير المألوف أن يتعامل المسؤولون المبتدئون مع VTs بطريقة غير مسؤولة وخفة ، سواء من حيث الأداء أو موثوقية التخزين. هذا خطأ فادح. في الواقع ، على العكس من ذلك ، إذا كان هناك نظام نسخ احتياطي يعمل بشكل موثوق ويمكن تخصيص الكثير من الوقت لاستعادة النظام ، فيمكنك تخزين البيانات على RAID-0 سريع ولكن غير موثوق به للغاية ، ولكن بعد ذلك يجب أن يكون VT مخزنة على مورد منفصل وموثوق ومنتج (على الرغم من أنه سيكون على RAID-1). لماذا هذا؟ دعونا نلقي نظرة فاحصة. سأحجز على الفور أن العرض التقديمي مبسط إلى حد ما ، لكنه كافٍ لفهم أولي.

يقوم FD بتخزين البيانات في صفحات 8 كيلوبايت (والتي يتم دمجها في نطاقات 64 كيلوبايت ، ولكن هذا ليس ضروريًا). MS SQL لا يضمنأنه بعد تنفيذ أمر تغيير البيانات مباشرة ، ستقع هذه التغييرات في FD. لا ، مجرد صفحة في الذاكرة يتم تمييزها على أنها "سيتم حفظها". إذا كان الخادم يحتوي على موارد كافية ، فستظهر هذه البيانات قريبًا على القرص. علاوة على ذلك ، يعمل الخادم "بتفاؤل" وإذا حدثت هذه التغييرات في معاملة ، فقد ينتهي الأمر بها على القرص قبل تنفيذ المعاملة. أي ، في الحالة العامة ، مع العمل النشط ، يحتوي FD على أجزاء متناثرة من البيانات غير المكتملة والمعاملات غير المكتملة ، والتي لا يُعرف ما إذا كان سيتم إلغاؤها أو الالتزام بها. هناك أمر خاص "CHECKPOINT" ، والذي يخبر الخادم بمسح جميع البيانات غير المحفوظة إلى القرص "الآن" ، لكن نطاق هذا الأمر محدد تمامًا. يكفي أن نقول إن 1C لا يستخدمها (لم أجدها) ونفهم أنه أثناء التشغيل ، لا يكون FD عادة في حالة متكاملة.

للتعامل مع هذه الفوضى ، نحتاج فقط إلى VT. تمت كتابة الأحداث التالية لها:

  • معلومات حول بدء المعاملة ومعرفها.
  • معلومات حول حقيقة تنفيذ أو إلغاء معاملة.
  • معلومات حول جميع التغييرات في البيانات في FD (تقريبًا ، ما كان وماذا كان).
  • معلومات حول التغييرات في FD نفسه أو بنية قاعدة البيانات (زيادة الملفات ، تقليل الملفات ، تخصيص الصفحات وإصدارها ، إنشاء الجداول والفهارس وحذفها)

تتم كتابة كل هذه المعلومات مع الإشارة إلى معرّف المعاملة التي حدثت فيها وفي حجم كافٍ لفهم كيفية الانتقال من الحالة قبل هذه العملية إلى الحالة بعد هذه العملية والعكس بالعكس (الاستثناء هو التسجيل المجمع نموذج الاسترداد).

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

حدد * من :: fn_dblog (خالية ، خالية)

بسبب محركات الأقراص الصلبةإنهم يعملون بكفاءة أكبر بكثير مع الكتابة المتسلسلة مقارنة بالدفق الفوضوي لأوامر القراءة والكتابة ، ونظرًا لحقيقة أن أوامر SQL ستنتظر حتى نهاية الكتابة إلى VT ، تظهر التوصية التالية:

إذا كان هناك أدنى احتمال ، ففي بيئة المنتج ، يجب وضع VTs على وسائط مادية منفصلة (عن أي شيء آخر) ، ويفضل أن يكون ذلك مع الحد الأدنى من وقت الوصول للتسجيل المتسلسل وبأقصى قدر من الموثوقية. بالنسبة للأنظمة البسيطة ، فإن RAID-1 جيد.

إذا تم إلغاء المعاملة ، فسيرجع الخادم جميع التغييرات التي تم إجراؤها بالفعل على الحالة السابقة... لهذا السبب

عادة ما يستمر إلغاء المعاملة في MS SQL Server مقارنة بالمدة الإجمالية للعمليات التي تغير بيانات المعاملة نفسها. حاول عدم إلغاء المعاملات أو اتخاذ قرار الإلغاء في أقرب وقت ممكن.

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

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

أووبس. وما الذي يجب فعله للحصول على مكان دائمًا في ZhT؟ هذا هو المكان الذي نأتي فيه إلى نظام النسخ الاحتياطي ونماذج الاسترداد. لإلغاء المعاملات واستعادة الحالة الصحيحة للخادم في حالة الإغلاق المفاجئ ، من الضروري تخزين السجلات في ZhT ، بدءًا من لحظة بدء أول معاملة مفتوحة. يتم كتابة هذا الحد الأدنى وتخزينه في VT بالضرورة... بغض النظر عن الطقس وإعدادات الخادم ورغبات المسؤول. لا يمكن للخادم السماح بفقد هذه المعلومات. لذلك ، إذا فتحت معاملة في جلسة واحدة وقمت بتنفيذ إجراءات مختلفة في جلسات أخرى ، فقد ينتهي سجل المعاملات بشكل غير متوقع. يمكن تحديد المعاملة الأقدم باستخدام الأمر OPENTRAN DBCC. لكن هذا ليس سوى الحد الأدنى الضروري من المعلومات. يعتمد كذلك على نماذج الاسترداد... هناك ثلاثة منهم في SQL Server:

  • بسيط- يتم تخزين ما تبقى فقط من VT الضروري للحياة.
  • ممتلىء- يتم تخزين VT بالكامل منذ آخر نسخة احتياطية سجل المعاملات... يرجى ملاحظة ، ليس من لحظة النسخ الاحتياطي الكامل!
  • تم تسجيل الجزء الأكبر- يتم تسجيل جزء (عادة جزء صغير جدًا) من العمليات بتنسيق مضغوط للغاية (في الواقع ، فقط سجل بأن مثل هذه الصفحة من ملف البيانات قد تم تغييرها). الباقي متطابق مع Full.

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

  • يتيح لك Simple تقليل الحمل على نظام القرص الفرعي... هذا ليس صحيحا. تمت كتابته تمامًا كما هو الحال مع "تسجيل الدخول بالجملة" ، إلا أنه يعتبر مجانيًا قبل ذلك بكثير.
  • يقلل التسجيل المجمع من الحمل على النظام الفرعي للقرص... بالنسبة إلى 1C ، هذا ليس هو الحال تقريبًا. في الواقع ، إحدى العمليات القليلة التي يمكن أن تندرج تحت الحد الأدنى من التسجيل - تحميل البيانات من التفريغ بتنسيق dt وجداول إعادة الهيكلة ، بدون الرقص الإضافي باستخدام الدف.
  • عند استخدام نموذج تسجيل مجمّع ، لا يتم تضمين بعض العمليات في النسخة الاحتياطية لسجل المعاملات ولا يسمح لك باستعادة الحالة في وقت هذه النسخة الاحتياطية. هذا ليس صحيحا تماما إذا كانت العملية واحدة من العمليات التي تم تسجيلها بأدنى حد ، فسيتم نسخ الصفحات الحالية التي تحتوي على بيانات احتياطيًا وسيكون من الممكن "تشغيل" سجل المعاملة حتى النهاية (على الرغم من أنه من المستحيل بالنسبة لنقطة زمنية عشوائية إذا كان هناك حد أدنى عمليات تسجيل).

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

  • هيكل سجل المعاملات
    • نماذج الاسترداد وإدارة سجل المعاملات
    • إدارة سجل المعاملات
  • استخدام النسخ الاحتياطية لسجل المعاملات

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

هناك ثلاثة أنواع من النسخ الاحتياطية حسب نوع التشكيل:

  • ممتلىء(ممتلىء)
  • التفاضليه(تفاضلي ، تفاضلي)
  • سجل(سيتم اختصار نسخة احتياطية من سجلات المعاملات ، بالنظر إلى عدد مرات استخدام هذا المصطلح ، إلى FCTC)

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

تعمل النسخ الكاملة والتفاضلية بنفس الطريقة مع Simple and Full. لا يوجد نسخ احتياطي لسجل المعاملات على الإطلاق في Simple.

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

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

النسخ الاحتياطي التفاضلي

يخزن صفحات البيانات التي تم تغييرها منذ آخر نسخ احتياطي كامل. عند الاستعادة ، يجب عليك أولاً استعادة نسخة احتياطية كاملة (في وضع NORECOVERY ، سيتم تقديم أمثلة أدناه) ، ثم يمكنك تطبيق أي من النسخ التفاضلية اللاحقة على "كعب الروتين" الناتج ، ولكن ، بالطبع ، فقط تلك التي تم إجراؤها قبل التالي نسخة احتياطية كاملة. نتيجة لهذا ، يمكنك تقليل الحجم بشكل كبير مساحة القرصلتخزين النسخة الاحتياطية.

نقاط مهمة:

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

RCWT

يحتوي على نسخة من فاتو لفترة معينة. عادة من لحظة RCWT السابقة حتى تشكيل RCWT الحالي. يسمح FCZHT باستعادة الحالة من النسخة المستعادة في وضع NORECOVERY في أي وقت ، بما في ذلك فترة النسخة المستعادة من VT ، إلى أي نقطة زمنية لاحقة مدرجة في فترة النسخ الاحتياطي المستعاد. عند إنشاء نسخة احتياطية باستخدام معلمات قياسية ، يتم تحرير مساحة في ملف سجل المعاملات (حتى لحظة آخر معاملة مفتوحة).

من الواضح أن RCT ليس له معنى في النموذج البسيط (ثم يحتوي LT على معلومات فقط من لحظة آخر معاملة غير مغلقة).

عند استخدام FCTC ، ينشأ مفهوم مهم - سلسلة مستمرة RKZHT... يمكن مقاطعة هذه السلسلة إما بفقدان بعض النسخ الاحتياطية من هذه السلسلة ، أو عن طريق تحويل قاعدة البيانات إلى Simple والعكس صحيح.

تحذير: مجموعة RCST غير مجدية بشكل أساسي إذا لم تكن سلسلة مستمرة ، ويجب أن يكون وقت بدء آخر نسخ احتياطي كامل أو تفاضلي ناجح داخلفترة هذه السلسلة.

كثرة المفاهيم الخاطئة والأساطير:

  • "يحتوي RCT على بيانات سجل المعاملات من النسخة الاحتياطية الكاملة أو التفاضلية السابقة."لا ، ليس الأمر كذلك. يحتوي FCWT على بيانات تبدو عديمة الفائدة بين FCWT السابقة والنسخ الاحتياطي الكامل اللاحق.
  • "يجب أن يفرغ النسخ الاحتياطي الكامل أو التفاضلي مساحة داخل سجل المعاملات."لا ، ليس الأمر كذلك. لا تلمس النسخ الاحتياطية الكاملة والتفاضلية سلسلة RKZHT.
  • يجب تنظيف VT بشكل دوري يدويًا وتقليله وتقليصه.لا ، هذا ليس ضروريًا ، والعكس صحيح - إنه غير مرغوب فيه. إذا تم تحرير VTs بين FCLTs ، فسيتم تعطيل سلسلة FCLT اللازمة للاسترداد. وستؤدي التناقضات / الامتدادات الثابتة للملف إلى تجزئه المادي والمنطقي.

كيف يعمل بشكل بسيط

دعنا نقول أن هناك قاعدة بيانات 1000 جيجا بايت. كل يوم تنمو قاعدة البيانات بمقدار 2 غيغابايت ، بينما تتغير 10 غيغابايت من البيانات القديمة. تم عمل النسخ الاحتياطية التالية

  • نسخة كاملة من F1 من 0:00 يوم 1 فبراير
    • نسخة دلتا D1.1 من 0:00 يوم 2 فبراير (حجم 12 جيجا بايت)
    • نسخة دلتا D1.2 من 0:00 يوم 3 فبراير (بحجم 19 جيجابايت)
    • نسخة دلتا D1.3 بتاريخ 4 فبراير 0:00 (حجم 25 جيجابايت)
    • نسخة دلتا D1.4 بتاريخ 5 فبراير 0:00 (31 جيجابايت)
    • نسخة دلتا D1.5 بتاريخ 6 فبراير 0:00 (بحجم 36 جيجابايت)
    • نسخة دلتا D1.6 بتاريخ 7 فبراير 0:00 (40 جيجابايت)
  • نسخة كاملة من F2 من 0:00 يوم 8 فبراير (المجلد 1014 جيجابايت)
    • نسخة دلتا D2.1 بتاريخ 9 فبراير 0:00 (حجم 12 جيجابايت)
    • نسخة دلتا D2.2 بتاريخ 10 فبراير 0:00 (بحجم 19 جيجابايت)
    • نسخة دلتا D2.3 بتاريخ 11 فبراير 00:00 (25 جيجابايت)
    • نسخة دلتا D2.4 من 12 فبراير 00:00 (31 جيجابايت)
    • نسخة دلتا D2.5 بتاريخ 13 فبراير 0:00 (بحجم 36 جيجابايت)
    • نسخة دلتا D2.6 بتاريخ 14 فبراير 0:00 (40 جيجابايت)

بمساعدة هذه المجموعة ، يمكننا استعادة البيانات في الساعة 0:00 في أي يوم من الأيام من 1 فبراير إلى 14 فبراير. للقيام بذلك ، نحتاج إلى أخذ نسخة كاملة من F1 للأسبوع من 1 إلى 7 فبراير أو نسخة كاملة من F2 في الفترة من 8 إلى 14 فبراير ، واستعادتها في وضع NORECOVERY ثم تطبيق النسخة التفاضلية لليوم المطلوب.

كيف يعمل بالكامل

افترض أن لدينا نفس مجموعة النسخ الاحتياطية الكاملة والتفاضلية كما في المثال السابق. بالإضافة إلى ذلك ، هناك فرق FCWT التالية:

  • RCWT 1 للفترة من 12:00 يوم 31 يناير إلى 12:00 يوم 2 فبراير (حوالي 30 جيجا بايت)
  • RCWT 2 للفترة من 12:00 يوم 2 فبراير إلى 12:00 يوم 4 فبراير (حوالي 30 جيجابايت)
  • RCWT 3 للفترة من 12:00 يوم 4 فبراير إلى 12:00 يوم 6 فبراير (حوالي 30 جيجا بايت)
  • RCWT 4 للفترة من 12:00 يوم 6 فبراير إلى 12:00 يوم 7 فبراير (حوالي 30 جيجا بايت)
  • RCWT 5 للفترة من 12:00 يوم 8 فبراير إلى 12:00 يوم 10 فبراير (حوالي 30 جيجابايت)
  • RCWT 6 للفترة من 12:00 يوم 10 فبراير إلى 12:00 يوم 12 فبراير (حوالي 30 جيجا بايت)
  • RCWT 7 للفترة من 12:00 يوم 12 فبراير إلى 12:00 يوم 14 فبراير (حوالي 30 جيجا بايت)
  • RCWT 8 للفترة من 12:00 يوم 14 فبراير إلى 12:00 يوم 16 فبراير (حوالي 30 جيجا بايت)

ملحوظة:

  1. سيكون حجم FCWP ثابتًا تقريبًا.
  2. يمكننا عمل نسخ احتياطية في كثير من الأحيان أقل من النسخ الاحتياطية التفاضلية أو الكاملة ، أو يمكننا القيام بذلك في كثير من الأحيان ، فستكون أصغر في الحجم.
  3. يمكننا الآن استعادة حالة النظام إلى أي نقطة من 0:00 يوم 1 فبراير ، عندما يكون لدينا أقدم نسخة كاملة حتى الساعة 12:00 يوم 16 فبراير.

في أبسط الحالات ، من أجل الاسترداد ، نحتاج إلى:

  1. آخر نسخة كاملة قبل الاسترداد
  2. نسخة دلتا الأخيرة قبل الاسترداد
  3. جميع RCWTs ، من لحظة آخر نسخة تفاضلية إلى لحظة الاستعادة
  • نسخة كاملة من F2 من الساعة 0:00 يوم 8 فبراير
  • نسخة دلتا D2.2 من الساعة 0:00 يوم 10 فبراير
  • RCWT 6 للفترة من 12:00 يوم 10 يناير إلى 12:00 يوم 12 فبراير

أولاً ، ستتم استعادة F2 ، ثم D2.2 ، ثم RCWT 6 حتى 13:13:13 في 10 فبراير. لكن الميزة المهمة للنموذج الكامل هي أنه لدينا خيار - استخدام آخر نسخة كاملة أو تفاضلية ، أو عدم استخدام النسخة الأخيرة. على سبيل المثال ، إذا تبين أن نسخة D2.2 تالفة ، ونحتاج إلى استعادة اللحظة التي سبقت 13:13:13 في 10 فبراير ، فعندئذٍ بالنسبة للنموذج البسيط ، فهذا يعني أنه يمكننا استعادة البيانات فقط في الوقت الحالي D2.1. مع Full - "DON" T PANIC ، لدينا الاحتمالات التالية:

  1. قم باستعادة F2 ، ثم D2.1 ، ثم RKZhT 5 ، ثم RKZhT 6 حتى 13:13:13 في 10 فبراير.
  2. قم باستعادة F2 ، ثم RKZHT 4 ، ثم RKZHT 5 ، ثم RKZHT 6 حتى 13:13:13 في 10 فبراير.
  3. أو قم باستعادة F1 بشكل عام وقيادة جميع RCWTs إلى RCWT 6 حتى 13:13:13 في 10 فبراير.

كما ترى ، يمنحنا النموذج الكامل المزيد من الخيارات.

الآن دعونا نتخيل أننا ماكرون للغاية. وقبل يومين من الفشل (13:13:13 يوم 10 فبراير) نعلم أنه سيكون هناك فشل. نقوم باستعادة قاعدة البيانات من نسخة احتياطية كاملة على خادم مجاور ، مما يترك الفرصة لمواصلة طرح الحالات اللاحقة بنسخ تفاضلية أو RCZHT ، أي أننا تركناها في وضع NORECOVERY. وفي كل مرة ، مباشرة بعد تشكيل RKZHT ، نطبقها على قاعدة الاحتياط هذه ، ونتركها في وضع NORECOVERY. رائع! لماذا ، سوف يستغرق الأمر من 10 إلى 15 دقيقة فقط لاستعادة قاعدة البيانات ، بدلاً من استعادة قاعدة بيانات ضخمة! تهانينا ، لقد أعدنا اختراع آلية شحن السجل ، وهي إحدى الطرق لتقليل وقت التوقف عن العمل. إذا قمت بنقل البيانات بهذه الطريقة أكثر من مرة في فترة ما ، ولكن بشكل مستمر ، فسيتم الحصول على النسخ المتطابق بالفعل ، وإذا كانت قاعدة المصدر تنتظر تحديث قاعدة المرآة ، فهذا يعد انعكاسًا متزامنًا ، إن لم يكن كذلك ، فهو غير متزامن .

يمكنك قراءة المزيد حول أدوات الإتاحة العالية في التعليمات:

  • الإتاحة العالية (محرك قاعدة البيانات)
    • فهم الحلول عالية التوفر
    • مستوى عالٍ من التوافر. التفاعل والتعاون

جوانب أخرى من النسخ الاحتياطي

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

مجموعات الملفات

1C: في الواقع ، لا تعرف المؤسسة كيفية العمل مع مجموعات الملفات. هناك مجموعة ملفات واحدة وهذا كل شيء. في الواقع ، يستطيع المبرمج أو مسؤول قاعدة بيانات MS SQL وضع بعض الجداول أو الفهارس أو حتى أجزاء من الجداول والفهارس في مجموعات ملفات منفصلة (في أبسط أشكالها ، في ملفات منفصلة). يعد هذا ضروريًا إما لتسريع الوصول إلى بعض البيانات (عن طريق وضعها على وسائط سريعة جدًا) ، أو العكس ، للتضحية بالسرعة لوضعها على وسائط أرخص (على سبيل المثال ، البيانات قليلة الاستخدام ولكنها ضخمة). عند العمل مع مجموعات الملفات ، من الممكن عمل نسخها الاحتياطية بشكل منفصل ، كما يمكنك استعادتها بشكل منفصل ، ولكن عليك أن تأخذ في الاعتبار أن جميع مجموعات الملفات يجب أن يتم "تجميعها" في لحظة واحدة عن طريق طي RKZHT.

ملفات البيانات

إذا كان وضع البيانات في مجموعات ملفات مختلفة يتحكم فيه شخص ما ، فعند وجود عدة ملفات داخل مجموعة الملفات ، يقوم MS SQL Server بدفع البيانات عليها بشكل مستقل (مع حجم متساوٍ من الملفات ، ستحاول بالتساوي). من وجهة نظر التطبيق ، يتم استخدام هذا لموازنة عمليات الإدخال / الإخراج. ومن وجهة نظر النسخ الاحتياطية ، هناك نقطة أخرى. بالنسبة لقواعد البيانات الكبيرة جدًا في عصر "ما قبل SQL 2008" ، كان تخصيص نافذة متجاورة لنسخة احتياطية كاملة مشكلة شائعة ، وقد لا يكون القرص الهدف لهذه النسخة الاحتياطية قادرًا على استيعابها. أكثر بطريقة بسيطةفي هذه الحالة ، كان من الضروري عمل نسخة احتياطية من كل ملف (أو مجموعة ملفات) في نافذتها الخاصة. الآن ، مع الانتشار النشط لضغط النسخ الاحتياطي ، أصبحت هذه المشكلة أقل ، ولكن لا يزال بإمكانك وضع هذه التقنية في الاعتبار.

ضغط النسخ الاحتياطية

هناك ميزة فائقة الضخامة في MS SQL Server 2008. من الآن فصاعدًا ، يمكن ضغط النسخ الاحتياطية عند إنشائها أثناء التنقل. هذا يقلل من حجم النسخة الاحتياطية لقاعدة البيانات 1C بمقدار 5-10 مرات. وبالنظر إلى أن أداء النظام الفرعي للقرص عادة ما يكون عنق الزجاجة لنظام إدارة قواعد البيانات ، فإن هذا لا يؤدي فقط إلى انخفاض تكلفة التخزين ، ولكن أيضًا تسريعًا قويًا للنسخ الاحتياطي (على الرغم من زيادة الحمل على المعالجات ، إلا أن سعة المعالج عادة يكفي تمامًا على خادم DBMS).

إذا كانت هذه الميزة في إصدار 2008 مخصصة فقط لإصدار Enterprise (وهو مكلف للغاية) ، ففي عام 2008 تم منح هذه الميزة للإصدار القياسي ، وهو أمر ممتع للغاية.

لم يتم تناول إعدادات الضغط في الأمثلة أدناه ، لكنني أوصي بشدة باستخدام ضغط النسخ الاحتياطي ما لم يكن هناك سبب محدد لتعطيله.

ملف نسخ احتياطي واحد - العديد من العناصر الداخلية

في الواقع ، النسخة الاحتياطية ليست مجرد ملف ، إنها حاوية معقدة إلى حد ما يمكن تخزين العديد من النسخ الاحتياطية فيها. هذا النهج له تاريخ قديم جدًا (لقد لاحظته شخصيًا منذ الإصدار 6.5) ، ولكن في الوقت الحالي بالنسبة لمسؤولي قواعد البيانات "العادية" ، وخاصة قواعد بيانات 1C ، لا يوجد سبب جاد لعدم استخدام "نسخة احتياطية واحدة - ملف واحد" نهج ... للتطوير العام ، من المفيد دراسة إمكانية إضافة عدة نسخ احتياطية في ملف واحد ، ولكن على الأرجح لن تضطر إلى استخدامها (أو إذا كان عليك ذلك ، فقم بالفرز بين ركام المسؤول المحتمل الذي استخدم بشكل غير ماهر هذه الفرصة).

نسخ متطابقة متعددة

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

أمثلة على أنظمة النسخ الاحتياطي

كفى نظرية. حان الوقت لتثبت بالممارسة أن هذا المطبخ بأكمله يعمل.

تكوين تكرار الخادم النموذجي باستخدام خطط الصيانة

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

استخدام معالج إنشاء خطة الخدمة

تكوين تكرار الخادم باستخدام البرامج النصية TSQL ، أمثلة على بعض الميزات

السؤال الذي يطرح نفسه على الفور ، ما هو المطلوب؟ يبدو أن كل شيء قد تم إعداده للتو وكل شيء يعمل مثل الساعة؟ لماذا تهتم بكل أنواع النصوص؟ لا تسمح خطط الصيانة بما يلي:

  • استخدم التكرار معكوس
  • استخدم إعدادات ضغط مختلفة عن إعدادات الخادم
  • لا يسمح بالاستجابة المرنة للمواقف الناشئة (لا توجد إمكانات لمعالجة الأخطاء)
  • لا يسمح بالاستخدام المرن لإعدادات الأمان
  • تعد خطط الصيانة غير ملائمة جدًا للنشر (والحفاظ عليها) على عدد كبير من الخوادم (حتى ، ربما ، بالفعل 3-4)

فيما يلي أوامر النسخ الاحتياطي النموذجية

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

يقوم النسخ الاحتياطي الكامل بالكتابة فوق الملف الموجود (إن وجد) والتحقق من المجموع الاختباري للصفحة قبل الكتابة. عند إنشاء نسخة احتياطية ، يتم احتساب كل نسبة مئوية من التقدم

قاعدة البيانات الاحتياطية على القرص = N "C: \ Backup \ mydb.bak" مع INIT ، FORMAT ، STATS = 1 ، CHECKSUM

النسخ الاحتياطي التفاضلي

وبالمثل - نسخة تفاضلية

قاعدة البيانات الاحتياطية على القرص = N "C: \ Backup \ mydb.diff" WITH التفاضليه، INIT ، FORMAT ، STATS = 1 ، CHECKSUM

RCWT

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

سجل النسخ الاحتياطي على القرص = N "C: \ Backup \ mydb.trn" مع تهيئة ، تنسيق

تكرار المرآة

غالبًا ما يكون من الملائم عدم عمل نسخة احتياطية واحدة في وقت واحد ، بل نسختين. على سبيل المثال ، يمكن للمرء الاستلقاء محليًا على الخادم (بحيث يكون في متناول اليد) ، ويتم تشكيل الثاني على الفور في مخزن بعيد ومحمي فعليًا من التأثيرات السلبية:

قاعدة البيانات الاحتياطية على القرص = N "C: \ Backup \ mydb.bak" ، مرآة لقرص = N "\\ safe-server \ backup \ mydb.bak" مع تهيئة ، تنسيق

نقطة مهمة غالبًا ما يتم تجاهلها: يجب أن يكون لدى المستخدم الذي يتم تشغيل عملية MSSQL Server نيابةً عنه إمكانية الوصول إلى مورد "\\ safe-server \ backup \" ، وإلا سينتهي النسخ بخطأ. إذا كان MSSQL Server يعمل نيابة عن النظام ، فيجب منح الوصول لمستخدم المجال "server_name $" ، ولكن لا يزال من الأفضل تكوين تشغيل MS SQL نيابة عن مستخدم تم إنشاؤه خصيصًا.

إذا لم تحدد MIRROR TO ، فلن تكون نسختان متطابقتان ، ولكن نسخة واحدة ، مقسمة إلى ملفين ، وفقًا لمبدأ التناوب. وكل واحد منهم على حدة سيكون عديم الفائدة.

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

نماذج الاسترداد

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

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

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

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

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

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

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

أنواع النسخ الاحتياطية

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

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

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

النسخ الاحتياطي لسجل المعاملات- ينطبق فقط على نموذج الاسترداد الكامل ويحتوي على نسخة من سجل المعاملات من وقت إنشاء النسخة السابقة.

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

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

سجل المعاملات

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

عند إجراء أي عملية ، تتم إضافة سجل حول بداية المعاملة إلى سجل المعاملات ، ويتم تعيين رقم فريد (LSN) لكل سجل من تسلسل غير قابل للكسر ، وكلما تغيرت البيانات ، يتم إدخال سجل مطابق في السجل ، وبعد ذلك اكتمال العملية ، تظهر علامة إغلاق المعاملة (الالتزام) في السجل.

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

يسمى جزء السجل الذي يحتوي على معاملات نشطة ويستخدم لاستعادة البيانات بالجزء النشط من السجل. يبدأ برقم يسمى رقم الاسترداد الأدنى (MinLSN).

في أبسط الحالات ، MinLSN هو الرقم القياسي للمعاملة المعلقة الأولى. إذا نظرت إلى الشكل أعلاه ، فعند فتح معاملة زرقاء ، سنحصل على MinLSN يساوي 321 ، بعد تسجيله في السجل 324 ، سيتغير رقم MinLSN إلى 323 ، والذي سيتوافق مع رقم الأخضر ، ليس بعد ارتكبت ، صفقة.

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

  • عند تنفيذ جملة CHECKPOINT بشكل صريح. يتم تشغيل نقطة الاختبار في قاعدة بيانات الاتصال الحالية.
  • عند إجراء عملية في قاعدة البيانات بأقل قدر من التسجيل ، على سبيل المثال ، عند إجراء عملية نسخة مجمعةلقاعدة البيانات التي يغطيها نموذج الاسترداد الذي تم تسجيله بأعداد كبيرة.
  • عند إضافة ملفات قاعدة البيانات أو إزالتها باستخدام عبارة ALTER DATABASE.
  • عند إيقاف مثيل SQL Server باستخدام عبارة SHUTDOWN أو عند إيقاف خدمة SQL Server (MSSQLSERVER). في كلتا الحالتين ، سيتم إنشاء نقطة تحقق لكل قاعدة بيانات في مثيل SQL Server.
  • إذا كان مثيل SQL Server يقوم بشكل دوري بإنشاء نقاط فحص تلقائية في كل قاعدة بيانات لتقصير وقت استرداد قاعدة البيانات.
  • عند عمل نسخة احتياطية من قاعدة البيانات.
  • عند تنفيذ إجراء يتطلب إيقاف تشغيل قاعدة البيانات. تتضمن الأمثلة تعيين AUTO_CLOSE إلى ON وإغلاق آخر اتصال للمستخدم بقاعدة البيانات ، أو تغيير معلمة قاعدة البيانات التي تتطلب إعادة تشغيل قاعدة البيانات.

اعتمادًا على الحدث الذي حدث في وقت سابق ، سيتم تعيين MinLSN قيمة إما رقم سجل نقطة التفتيش أو بداية أقدم معاملة معلقة.

اقتطاع سجل المعاملات

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

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

إذا تم تحديد نموذج الاسترداد البسيط ، فعندما تصل السجلات المنطقية إلى الحجم الذي يساوي 70٪ من الملف الفعلي ، يتم تنظيف الجزء غير النشط من السجل تلقائيًا ، ما يسمى. اقتطاع. ومع ذلك ، لا يؤدي هذا إلى تقليل ملف السجل الفعلي ، يتم اقتطاع السجلات المنطقية فقط ويمكن إعادة استخدامها بعد هذه العملية.

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

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

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

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

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

نموذج استعادة بسيط

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

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

نموذج الاسترداد الكامل

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

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

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

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

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

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

من ناحية أخرى ، في حالة تلف إحدى نسخ سجل المعاملات ، على سبيل المثال ، النسخة قبل الأخيرة ، فيمكننا استعادة البيانات فقط في وقت آخر نسخة احتياطية + الفترة في سلسلة نسخ السجل غير التالفة. على سبيل المثال ، إذا تم عمل السجلات في الساعة 12 و 14 و 16 وكان السجل الذي تم إنشاؤه عند الساعة 14 تالفًا ، فيمكننا عندئذٍ الحصول على نسخة يومية استعادة قاعدة البيانات حتى نهاية السلسلة المستمرة ، أي حتى الساعة 12 ظهرا.

"من يملك المعلومات - هو يملك العالم" - ماير أمشيل روتشيلد

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


من أجل ضمان سلامة المعلومات في قواعد البيانات المستخدمة ، وكذلك لتقليل الوقت لاستعادة قابلية التشغيل ، من الضروري عمل نسخ احتياطية دورية لخوادم SQL.

لنأخذ مثالًا بسيطًا: تحتاج إلى إعداد نسخة احتياطية لقاعدة البيانات على قرص منفصل.

حل:

  1. نفتح Microsoft SQL Server Management Studio... في قائمة التنقل على اليمين ، افتح علامة التبويب "مراقبة"... هناك نرى علامة تبويب "خطط الخدمة"... انقر بزر الماوس الأيمن -> "إنشاء خطة خدمة"ونعطي اسمًا لخطتنا (الشكل 1):

الشكل 1 إنشاء خطة خدمة جديدة.

2. على شريط الأدوات ، أضف مهمة "النسخ الاحتياطي لقاعدة البيانات"(الصورة 2):

الشكل 2 إضافة مهمة "النسخ الاحتياطي لقاعدة البيانات".

3. في المهمة التي تم إنشاؤها ، انقر بزر الماوس الأيمن -> "يتغيرون"(تين. 3):

4. في نافذة خصائص المهمة ، حدد نوع النسخة الاحتياطية (في حالتي ، كاملة) ، حدد قاعدة البيانات المطلوبة (لدي ka_cons) ، ودليل النسخ الاحتياطية ، والقدرة على التحقق من النسخ الاحتياطية للتأكد من تكاملها وخيارات الضغط لها (الشكل .4-6):


الشكل 4 نوع النسخ الاحتياطي - ممتلئ.

الشكل 5 تحديد قاعدة بيانات للنسخ الاحتياطي.

الشكل 6 تحديد دليل للنسخ الاحتياطية ، والتحقق من سلامة ونسبة الضغط.

5. في لوحة تخصيص خطة الخدمة على اليمين. اضغط الزر "جدول"(الشكل 7):

6. قم بإعداد الجدول الزمني الذي نحتاجه وانقر "نعم"(الشكل 8):

الشكل 8 تكوين جدول النسخ الاحتياطي.

7. احفظ خطة الخدمة الخاصة بنا (الشكل 9):

الشكل 9 حفظ خطة الصيانة.

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