السلام عليكم ...
اقتباس
كيف يمكن ان استفيد من ملف الـ log اذا كان الـ Recovery model هو Full
وفى نفس الوقت لا اقوم انا كمسئول عن السيستم بعمل باك اب لملف اللوج
مدير قواعد البيانات يستفيد من اللوغ فقط في عملية الباك آب (حسب معلوماتي)..و سيكوال سيرفر طبعا يستخدم اللوغ لتشغيل القاعدة بشكل صحيح (مثلا يستخدمه للتراجع عندما يحصل خطأ في تنفيذ الاستعلامات .. مثال : افرض انك كتبت استعلام تحديث البيانات بعبارة update لتقوم بتحديث 500 سجل و حصل خطأ داخلي أو مشكلة ما , بعد تحديث 200 سجل فقط .. فإن سيكوال سيرفر يتراجع عن هذه الــ 200 سجل باستخدام اللوغ .. أي إن عبارة الــ update أما تنفذ كاملة أو لا تنفذ منها شي , و لا يمكن تنفيذ جزء منها فقط (هذا المبدأ يسمى Atomicity).. يتم ذلك باستخدام الــ log ) .
أي أن استرجاع البيانات من الـــ log دون باك اب , يقوم بها سيكوال سيرفر بشكل تلقائي ...
لتوضيح الأمور اكثر, إليك المعلومات التالية (على فرض أن الــ recovery model المستخدم للقاعدة هو full ) :
- في الصورة السابقة في مشاركتك , الخيار المحدد هو backup type .. ويوجد ثلاثة خيارات : Full : يعمل باك أب لبيانات القاعدة (نقصد mdf) + باك أب لسجلات اللوغ التي تم إنشاؤها بعد آخر عمليه full backup (الموضوع دقيق , ركز على الكلمات بالضبط ).
- Differential Backups : يعمل باك أب لبيانات القاعدة التي تم إدخالها بعد آخر عملية full backup + باك أب لسجلات الـلوغ التي تم إنشاؤها منذ آخر عملية full backup .إذا و بمحاكمة منطقية , نستنج انه فقط نحتاج للــ full backup واحدة و آخر Differential Backup لاستعادة القاعدة , أما الـــ Differential Backups التي في الوسط فيمكن الاستغناء عنها ...
- log backup : يعمل باك أب لسجلات اللوغ التي تم إنشاؤها بعد آخر عملية backup (مهما كان نوعها سواء أكانت full backup او log backup) . (لاحظ أنه لا يعمل باك أب لبيانات في القاعدة) ... نستنج أيضا ان الــ log backup صغيرة الحجم على حسب العمليات التي تمت على القاعدة .. و هذا مفيد جدا لنا كما ستوضح في البنود التالية ...
- لاحظ ان كل log backup يعتمد على ما قبله ... لذلك تسمى نسخ الباك أب للوغ المتتالية بــالسلسلة (log chain) (لمن يقرأ في مراجع اجنبية) ...
- أفضل خطة لعمل نسخ احتياطية backup تتحدث عنها المراجع و المنتديات تقوم على مايلي :
- نقوم بــ full backup في بداية يوم العمل ...
- كل (ربع أو نصف أو ساعة) نقوم بـــ log backup (لا تقلق , الحجم سيكون صغيرا , لأنه فقط يشمل السجلات منذ آخر عملية back up كما ذكرنا) .
- لو حصل مشكلة , يمكننا استعادة القاعدة إلى أي لحظة زمنية , ولكن الاستعادة تبدأ حصرا من عند full backup ..
- يمكن حذف الــ full backups القديمة , كي لا تشغل حجما .إذا كنا لسنا بحاجة إليها .

- لاحظ في الصورة المرفقة ...فقمت بعدة عمليات backup على القاعدة (و في نفس الملف) و عند اختيار restore تظهر هذه العمليات ..
- لاحظ عمود النوع (Type) أول باك أب هو full و الباقي هم log .
- لاحظ عمود الحجم (size) و هو بالبايت ..لاحظ حجم الــ full تقريبا هو 18 ميغا .. أما حجم الــ Log فهي بضع كيلو بايتات .. لاحظ توفير الحجم ..مقارنة لو كنا سنعمل full كل مرة
- لاحظ عمود (restore) ان أول سجل (full) لا يمكن إلغاء تحديده , و بمجرد تحديد أي سطر , سيتم تحديده بشكل تلقائي ...
- كيف يعمل الــ restore : يبدأ من الــ full backup و ينقل محتواها للقاعدة , ثم ينتقل على الــ Log واحدة تلو الأخرى و يعدل البيانات حسب محتوى الــ Log ...
- لاحظ الحقل (to point int time) هنا يمكن تحديد الزمن المطلوب استعادة القاعدة إليه , حتى لو لم تكن لحظة أخذ الــ backup كما شرحنا .
- إذا ظهرت رسالة خطأ عند الاستعادة (The Tail of the log for database DB02 has not been backed up) , فهذا سببها أن هناك سجلات في اللوغ لم يتم عمل باك أب لها , الحل : نذهب للتبويب Options ونحدد الخيار (Overwrite the existing database) لاستبدال كامل القاعدة , أو تلتف على الموضوع بتفيذ عملية باك أب وهمية مع الخيار NORECOVERY كالتالي :
use masterBACKUP LOG DB02 TO DISK = 'NULL' WITH NORECOVERY
مع ضمان أن القاعدة غير مستخدمة حاليا من قبل مستخدمين آخرين .
- عمليات الــ backup تؤدي بشكل تلقائي إلى حذف سجلات الللوغ , و بالتالي اللوغ لن يزداد حجمه مع الوقت و لن تحتاج لعمل shrink .. :)
- غاليا مدير قاعدة البيانات يقوم بجدولة عملية الباك أب , بشكل تلقائي , (عن طريق جدولة المهام في ويندوزمثلا أو برامج خارجية كثيرة تقوم بذلك) عن طريق باتش فايل , يقوم بتنفذ اوامر الباك أب , مشروحة في (How can I schedule a daily backup) رابط .
اقتباس
هل تنحصر اهميه وجود ملف اللوج فى عمل الباك اب
ام انه يوجد طريقه اخرى يمكن ان استرجع بها البيانات من اللوج ان لم اكن اعمل له باك اب
لوكان استعادة البيانات ممكنة من اللوغ مباشرة , فإن سيكوال سيرفر سيقوم بذلك مباشرة و بشكل تلقائي دون تدخل المستخدم (تذكر مثال الــ update لــ 500 سجل) ..المشاكل العملية تحصل ان جزء من القاعدة أو ربما جدول بكامله يصبح معطوب , فلا يتمكن سيكوال سيرفر من استعادته من اللوغ .. لان اللوغ يحوي فقط نسخة من البيانات (تسمى تحديدا pages) التي تم إجراء التعديل عليها , و لا يحوي نسخة كاملة من الجدول .. فلا يستطيع أستعادة جدول بكامله من اللوغ ... و بالتالي يجب أخذ باك أب .. إضافة أن نسبة حصول عطب في اللوغ نفسه كبيرة log corrupted ...
ملاحظة : يجب تطبيق العلمليات السابقة على قاعدة بيانات تجريبية , و عندما نتأكد ان ما نقوم به صحيح , نطبق ذلك على قاعدة البيانات الحقيقية .. فالأخطاء هنا قد تكون قاتلة :) .
بالتوفيق .
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
