في البداية قبل التعرف على انواع النسخ الاحتياطية المختلفة لابد من معرفة ما هي انواع ال Recovery Model لارتباطها باحد انواع النسخ الاحتياطية
انواع ال Recovery Model
قواعد بيانات ال SQL Server يتم تخزين بياناتها في نوعين ملفات اساسيين
Data File And Log File
Primary Data File
هو الملف الذي تخزن فيه البيانات الفعلية ويكون بامتداد MDF او NDF
Transaction LOG File
وهذا الملف له عدة وظائف ولكن اشهرها انه ملف مرحلي يتم فيه تخزين البيانات مؤقتا الى ان تنتقل الى ملف ال Data File ويكون بامتداد LDF ولكن لماذا لا يتم الكتابة مباشرة في ملف ال Data File؟
تخيل معي انك تقوم باعداد برنامج للقيام بادخال فاتورة مبيعات وهذه الفاتورة بياناتها على جدولين في قاعدة البيانات مثلا
(الفاتورة و اصناف الفاتورة) تخيل انه تم نجاح الادخال في الجدول الاول ولم ينجح في الثاني , سينتج عن ذلك وجود فواتير بدون اصناف مثلا
ولحل هذه المشكلة تجد اهمية استخدام ال Transaction LOG File حيث يتم كتابة البيانات فيه, فاذا نجحت كل العمليات , يتم نقلها الى ال Data File اما اذا حدث خطأ في اي مرحلة , يتم الغاء العملية كأن لم تكن.
على حسب نوع ال Recovery Model يتم الاحتفاظ بالبيانات في ال Transaction LOG File او لا والانواع المتاحة هي
1. SELECT INTO
2. BULK IMport operations including BULK INSERT and BCP
3. INSERT INTO SELECT command using the OPENROWSET(BULK) function
4. Partial updates to columns having large value data type
5. Using WRITE clause in UPDATE statements
6. Index operations e.g CREATE INDEX, ALTER INDEX REBUILD , DROP INDEX
والمشكلة الوحيدة التي قد تواجه مديرين قواعد البيانات مع هذا النوع هو التأثير على اداء قاعدة البيانات اثناء اخذ النسخة الاحتياطية خصوصا لو قاعدة البيانات بحجم كبير.
ملاحظة هامة: يمكن اخذ الBackup لقاعدة البيانات ككل او ل File Group معينة ويمكنك مراجعة المقال التالي لتوضيح المقصود شرح SQL Server FileGroups بالعربي
على حسب نوع ال Recovery Model يتم الاحتفاظ بالبيانات في ال Transaction LOG File او لا والانواع المتاحة هي
Simple Recovery Model
في هذا النوع لا يتم الاحتفاظ باي بيانات في ال Transaction LOG File مما يؤدي الى ان حجم الملف يكون صغير جداFull Recovery Model
في هذا النوع يتم الاحتفاظ دائما باي بيان يتم كتابته داخل ال Transaction LOG File وهذا يؤدي الى تضخم حجم الملف الى ان يقوم مدير قواعد البيانات بتفريغهBulk Logged Recovery Model
وهذا النوع يتم الاحتفاظ فيه بكل البيانات التي يتم كتابتها في ال Transaction LOG File عدا العمليات الناتجة عن Bulk Operation يتم الاحتفاظ بالحد الادنى الممكن الاحتفاظ به داخل ال Log File وذلك لتقليل مساحته وهذه العمليات هي1. SELECT INTO
2. BULK IMport operations including BULK INSERT and BCP
3. INSERT INTO SELECT command using the OPENROWSET(BULK) function
4. Partial updates to columns having large value data type
5. Using WRITE clause in UPDATE statements
6. Index operations e.g CREATE INDEX, ALTER INDEX REBUILD , DROP INDEX
انواع النسخ الاحتياطية
Full Backup
في هذا النوع من النسخ الاحتياطية يتم اخذ نسخة كاملة من قاعدة البيانات وهذا اهم نوع من انواع النسخ الاحتياطية لان اي نوع من الانواع التالية يعتمد على وجود نسخة Full Backup وهذا النوع يمكن اخذه مع اي Recovery Modelوالمشكلة الوحيدة التي قد تواجه مديرين قواعد البيانات مع هذا النوع هو التأثير على اداء قاعدة البيانات اثناء اخذ النسخة الاحتياطية خصوصا لو قاعدة البيانات بحجم كبير.
ملاحظة هامة: يمكن اخذ الBackup لقاعدة البيانات ككل او ل File Group معينة ويمكنك مراجعة المقال التالي لتوضيح المقصود شرح SQL Server FileGroups بالعربي
Differential Backup
في هذا النوع يتم اخذ نسخة من كل البيانات الPages التي تمت من اخر نسخة Full Backup الى وقت اخذ النسخة ال Differential فقط ولذلك تكون مساحته صغيرة نوعا ما .
ولعمل Restore لل Differential Backup لابد من عمل Restore لملف ال Full Backup الذي يعتمد عليه حيث انه لا يحتوي على كل قاعدة البيانات انما يحتوي على التغيرات فقط بين اخر نسخة Full والنسخة ال Differential.
ويتخيل البعض انه عندما يأخذ نسخة Differential ثانية فانها تحتوي على التغيرات بين نسخة الDifferential الاولى و الثانية ولكن هذا خطأ حيث انها تحتوي على التغيرات بين اخر Full واخر Differential يتم اخذه ولذلك عند عمل Restore لا تحتاج الا اخر نسخة Differential ونسخة ال Full التي تعتمد عليها
ويمكن اخذ هذا النوع مع اي نوع من ال Recovery Model
ويمكن اخذ هذا النوع مع اي نوع من ال Recovery Model
Log Backup
هذا النوع من ال Backup يتم اخذ نسخة احتياطية من ال Transaction Log File ولذلك فهو يعتمد على ان تكون قاعدة البيانات ب Recovery Model من نوع Full او بحد ادنى Bulk Logged وهذه الانواع التي تحتفظ بالبيانات في ال Transaction Log.
فعند اخذ هذا ال Backup يتم تفريغ ملف ال Transaction Log مباشرة بعد اخذ ال Backup ولذلك عند اخذ Log Backup مرة اخرى تكون البيانات التي تمت من اخر Log Backup حتى ال Log Backup الحالي ولذلك في حالة الاحتياج الى عمل Restore لابد من ارجاع اخر ملف Full واخر ملف Differential وكل ملفات ال Log Backups التي تمت بعد ذلك.
وفي حالة قواعد البيانات ذات الحجم الكبير يعتبر هذا النوع من ال Backups ذو اهمية عالية حيث انه اقل تأثيرا على اداء قاعدة البيانات لما يحتويه على بيانات قليلة من اخر Log Backup تم اخذه قبل ذلك.
ومن مزايا هذا النوع انك ممكن تقوم بعمل Restore للبيانات حتى وقت معين بمعنى انك تريد عمل استرجاع مثلا للبيانات حتى الساعة الثانية ظهرا وليس للوقت الذي تم فيه الباكب.
ملاحظة: تفريغ ملف ال Transaction Log File بعد اخذ ال Log Backup ليس معناه تقليل حجم الملف انما يتم تفريغ الملف من البيانات ويتم ترك مكانها فارغ متاح للكتابة عليه مرة اخرى ولكن لتقليل حجم الملف لابد من عمل Shrink لل Transaction Log File
التأكد من سلامة النسخة الاحتياطية
يوجد خطأ شائع يقوم به مديروا قوعد البيانات وهو انهم يقومون باخذ النسخة الاحتياطية دون التأكد من امكانية استرجاعها ففي بعض الاحيان قد يتلف ملف الباكب ويكون غير صالح للاسترجاع لذلك لابد من التأكد من سلامة الملف وبياناته
يوجد خاصية لقاعدة البيانات لعمل فحص ملف الباكب وتسمى Restore Verify Only ولكن حتى هذه الخاصية لا تؤكد بنسبة مائة بالمائة بسلامة الملف وقابليته للاسترجاع لذلك الوسيلة الوحيدة للتأكد بنسبة مائة بالمائة هي عمل Restore.
طريقة اخذ النسخ الاحتياطية من ال Management Studio
كليك يمن على قاعدة البيانات ثم اختر Tasks ثم اختر Backup ثم انظر الشكل التالي
ولعمل استرجاع Restore لقاعدة البيانات يمكنك زيارة المقال من هنـــــا
--
تم بحمد الله
تم بحمد الله
هناك 4 تعليقات:
شكرا جزيلا لك ع هذا الموضوع قليل مانجد مثله باللغه العربيه وفقك الله ❤
شكرا جدا لتعليق حضرتك والله التعليقات دي اللي بتحسسني بقيمة المواضيع اللي بكتبها
شكرا جدا
كل الشكر باش مهندس
احسنت اخي
إرسال تعليق