النسخ الاحتياطي للموقع :
لقد ذكرنا للتوه ثلاثة عناصر آساسية لعملية النسخ الاحتياطي لنحص على نسخة احتياطية آمنة ضد أحداث الطوارئ.
قاعدة البيانات :
تتكون عملية النسخ الاحتياطي لقاعدة البيانات نسخ بنية قاعدة البيانات (الجداول) و البيانات .يمكن ان يتم ذلك باستخدام ادواة ادارة قاعدة البيانات أو باستخدام سكربتات sql . سوف نركز على قاعدة البيانات العلائقية MYSQL ,في حال استخدام قاعدة بيانات علائقية آخرى يمكن مراجعة ملفات المساعدة لمعرفية كيفية اجراء ذلك.
تحتوى mysql على العديد من الادوات الادارية متعددة الاغراض , الاداة المسؤلة عن عملية نسخ قاعدة البيانات احتياطيا (تصديرها) هي mysqldump . التعليمة التالية هي لتصدير قاعدة البيانات مفردة (وحيدة) حيث يتم تنفيذ الامر على نفس خادم قاعدة البيانات و هي تعمل :
Mysqldump –u <username> -p <password> --op –result-file=<output file> <database name>من أجل خادم لينكس تصبح التعليمة كمايلي
mysqldump –u root –psomepass --opt –result-file=/tmp/moodle-export.sql moodledbمن أجل خادم ويندوز
mysql -u root –psomepass –opt –result-file=Z:/tmp/moodle-expot.sql moodledbبذلك تعلمنا كيفية نسخ قاعدة البيانات احتياطيا بشكل يدوي و سوف نتعلم لاحقا كيفية يتم ذلك آليا .
لاجراء نسخ احتياطي لقاعدة البيانات آليا نحتاج لانشاء سكربت ينسخ قاعدة البيانات في المجلد المسبق التعريف في الخادم .يتم ذلك باستخدام سكربتات شل (Shell script) . يستخدم كل من نظاما التشغيل لينكس و ويندوز صياغة نحوية مختلفة لسكربتات شل .
قبل البدء يمكن تحسين فعالية الامر mysqldump بمراعاة الثغرة الامنية اذا تمكن المستخدمون المدراء من استخدام سطر الاوامر لبعض كلمات المرور التي تحمي الموارد ووضعها في سطر الاوامر . يمنحنا mysqldump خيار خاص لقراءة كلمات المرور من ملف خاص وبذلك الشيئ الوحيد علينا ضمان حمايته ملف الاعدادات نفسه من وصول المستخدمين غير الرغوب بهم . هذا الملف هو my.ini و الذي سوف نستخدمه مع التعليمة mysqldump .
[client]default-character-set=utf8add-drop-table=trueadd-locks=truecomments=truecomplete-insert=truecreate-options=truedisable-keys=trueextended-insert=truequick=truequote-names=trueset-charset=truesingle-transaction=truedump-date=trueverbose=true#this should be modified by useruser=<username>password=<password>#host=<host address>#pipe=true#socket=<socketname>المتحولات المعلمة بامكانية التغير هي فقط المتحولات التي تحتاج لتعديلها لتتوافق مع اعدادت خادمك . اذا كان الخادم قاعدة البيانات قد تم تنصيبه على نفس خادم الويب و موودل فقط تحتاج لتغير اسم المستخدم وكلمة المرور.
ملاحظة: تاكد من استخدام مستخدم لقاعدة البيانات لديه صلاحيات النسخ الاحتياطي . لايمكنك استخدام نفس ميتخدم موودل .يمكن استخدام المستخدم الرئيسي root او انشاء مستخدم له صلاحيات النسخ الاحتاطي .
ملفات ولوج الخادم :
ملفات ولوج الخادم هي ملف او عدة ملفات يتم انشاءها بشكل آلي منقبل خدم ولوج النظام .تستخدم كمستودع لكل سجلات الاحداث لكل أحداث النشاطات التي تمت في الخادم .مراجعة السجلات بشكل قياسي تعطينا تحذير مبكر لاي مشكلة او خطر كامن يمكن ان يحدث .سوف نزودك بشرح مقتضب عن ملفات ولوج النظام لخادم لينكس و ويندوز بسب ان كل السكربتات في هذا المقال سوف تقوم بالكتابة الى ملفات ولوج النظام الفرعية .
لينكس :
تستخدم جميع توزيعات لينكس و يونكس ملفات الولوج Syslog كتحقيق لملفات ولوج النظام القياسية .هناك العديد من ملفات الولوج في توزيعات لينكس القياسية ولكن الذي يهمنا هو الملف المتعلق بالتطبيقات و هو /var/log/messages لعرض اخر الاحداث المسجلة فيه من التطبيقات استخدم الأمر التالي :
اذا احببت تطبيق فلتر محدد على العرض استخدم التعليمة التالية :/usr/bin/tail /var/log/messages
كل مدخل في ملف الولوج يحتوي على عدد من المحددات مثل السهولة و أولوية الحدث و بطاقة الحدث مع وصف للرسالة ./bin/cat /var/log/messages | /bin/grep <filter word(s) >
السهولة هي تصنيف عام يحدد مصدر الحدث , يمكن ان ياخذ قيم مثل تطبيق في الخلفية أو تطبيق مجدول أو تطبيق للمستخدم أو خبر ( deamon, cron,user,news) الى اخره ...
الأولوية هي مستوى اهمية الحدث ممكن ان تاخذ قيم مثل طوارئ أو تعديل أو حرج أو خطأ أو تحذير أو ملاحظات mergency,alter,critical,error,warning,notes الى اخره...
بطاقة : معرف مجموعة للتطبيق مخصص يستخدم لسهولة تحديد المدخل . عادو هو كلمة واحدة .
لاضافة مدخل في ملفات ولوج النظام نستخدم التعليمة التالية:
/bin/logger –s –p <facility>.<priority> -t <tag> <description message>كمثال سوف ننفذ التعليمة التالية :
/bin/logger/ -ss –p user.err –t moodle “Test error entry”لعرض مدخل حقيقي من ملف ولوج النظام لنستخدم التعليمة التالية :
/bin/cat /var/log/messages | /bin/grep Moodleوتكون نتيجة التنفيذ مشابهة لمايلي :
ويندوز :Nov 21 19:07:28 ip-10-212-155-65 Moodle: Test error entry
لنظام ويندوز مفهوم مختلف لملفات ولوج النظام عن لينكس , يعتمد بشكل اكبر على بيئة النوافذ .مدخلات ملفات الولوج تدعى أحداث .لرؤية احداث النظام يمكن استعمال تطبيق رؤية الأحداث event viewer . يمكننا تشغيله من
قائمة ابدأ ثم ادوات إدارية ثم عارض الأحداث
لانشاء حدث معين من سطر الاوامر يمكن استخدام الاداة eventcreate كمايلي :
Eventcreate /I <logname> /t <level> /so <facility> /id <event id> /d <descriptio>Longname : يمثل واحد من ملفات الولوج المتوفرة . افتراضيا يعرض التطبيقات و الامن و الاعداد و النظام و الاحداث المرسلة . و الذي نستخدمه في سكربتنا هو التتطبيق.
Level : يحدد نوع الحدث خطأ أو تحذير أو معلومة .
Facility : وهو معرف مخصص يصف مصدر الحث يمكن ان يكون اي قيمة نصية .
Event ID : وهو معرف عددي ياخ قيمة بين 1 الى 1000.
Description : شرح نصي للحدث
مثال على انشاء حدث من أمر سطر الاوامر التالي
كيف يظهر الحدث في عارض الاحداثeventcreate /l application /t error /so Moodle /id 1 /d “Test error event”
يمكن استعراض لاحداث من سطر الاوامر باستخدام الاداة wevtutil التي تاخذ السياق التالي
ويكون خرج التعليمة كمايلي :wevtutil qe application /rd:true /c:1 /f:text
Event[0]:Log Name: ApplicationSource: MoodleDate: 2010-11-21T21:50:56.000Event ID: 1Task: N/ALevel: ErrorOpcode: InfoKeyword: ClassicUser: S-1-5-21-3609673158-3230877478-3424243811-500User Name: SVR-MOODLE\AdministratorComputer: svr-moodleDescription:Test error eventالنسخ الاحتياطي لقاعدة البيانات آليا في لينكس :
لاخذ نسخة احتياطية من قاعدة البيانات يجب كتابة سكربت يقوم بذلك ثم اضافة هذا السكربت الى المهام المجدولة (CRON) . بنفس الوقت نحن بحاجة لكتابة نتيجة عملية التنفيذ في ملف ولوج النظام .
قم بانشاء الملف /etc/cron.daily/ moodle_backup.cron واكتب فيه التعليمات التالية :
#!/bin/shnow=$(date +%d-%m-%Y)backupcmd=/usr/bin/mysqldumpdbname=moodlebckupdir=/var/db/backupconfig=/etc/cron.daily/my.iniarchive=$bckupdir/dump_$nowlogfile=$archive.logbackupfile=$archive.sqlscriptname=Moodlesuccessmsg=Backup finished OK!failmsg=”Unable to backup database! \Checkout log file $logfile.”$backupcmd --defaults-extra-file=$config \-r $backupfile $dbname 2> $logfilerval=$?if [ $rval -eq 0 ] ;then/bin/logger -s -p user.info \-t $scriptname “$successmsg”else/bin/logger -s -p user.err \-t $scriptname “$failmsg”fiالان قم بانشاء الملف my.ini في نفس المجلد و انسخ نفس التعليمات السابقة فيه و لاتنسى تعديل قيمة متحولات اسم المستخدم وكلمة المرور و بقية المتحولات وفقا لاعدادات خادمك .exit $rval
نحتاج لجعل السكربت قابلا للتنفيذ باستخدام التعليمة :
اخيرا نحتاج لانشاء مجلدات الوجهة التي تحوي النسخة الاحتياطية وتعديل صلاحياتهاchmod u=rwx,gu= /etc/cron.daily/moodle_backup.cron
mkdir /var/db/backup
chmod u=rw,g=r,o= /var/db/backupشرح سكربت النسخ الاحتياطي :
حتى نفهم سكربت النسخ الاحتياطي يجب ان تكون على معرفة بكتابة سكربتات لينكس الدفعية (BASH).
السطور الخمسة الآولى من السكربت هي متحولات التي تحتاج لتغيرها حسي اعدادات الخادم و هي :
· NOW : يحتوى على التاريخ بتنسيق نصي وفق الترتيب يوم – شهر –سنة , يمكن تغير التنسيق فقط اذا كنت تفضل تنسيق آخر التاريخ .سوف يتم الحاق هذا النص لملف الوجهة للنسخة الاحتياطية لسهولة تميز تاريخ النسخة الاحتياطية.
· Backupcmd : يحتى على مسار تطبيق mysqldump .غيره فقط ان كان المسار مختلف عن القيمة الحالية .
· Dbname : اسم قاعدة البيانات التي تقوم بنسخها احتياطيا .على الارجح تحتاج لتغيرها الى اسم قاعدة البيانات على الخادم .
· Bckupdir : المجلد حيث النسخة الاحتياضية ستخزن. اذا كان تنسيق القرص الصلب مختلف قم بتعديل المتحول .
· Config : يحتو موقع ملف الاعدادات المخصص my.ini ننصح بوضع الملف في نفس المجلد كسكربت مجول (cron script) , قم بتغيره فقط اذا كان موقع الملف مختلف عما هو عليه.
يتم انشاء ملف ولوج بعد كل تنفيذ في مجلد النسخة الاحتياطية الرئيسي .معلومات هذا الملف مهمة لمراجعة وتدقيق اي خطأ يمكن أن يحدث . تذكر انه عليك حذف ملفات الولوج القديمة كل فترة .
النسخ الاحتياطي لقاعدة البيانات آليا في ويندوز :
سكربتات شل الدفعية في ويندز تختلف قليلا عنها في لينكس . ولكنه يتطلب صلاحيات مدير نظام التشغيل المسؤول عن صيانة قاعدة البيانات .
قم بانشاء مجلد للنسخ الاحتياطي :
mkdir Z:\backupmkdir Z:\scriptsقم بانشاء ملف نصي و اكتب النص التالي :
@echo off@set backupcmd=”C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump. exe”@set dbname=moodle@set now=%date:~4,2%-%date:~7,2%-%date:~10,4%@set bckupdir=Z:\backup@set config=%~dp0my.ini@set archive=%bckupdir%\dump_%now%@set logfile=%archive%.log@set backupfile=%archive%.sql@set successmsg=Backup finished OK!@set errormsg=Unable to backup database ^%dbanme%. Check %logfile%.@%backupcmd% --defaults-extra-file=%config% ^-r %backupfile% %dbname% 2> %logfile%@if %errorlevel% neq 0 goto dberr@echo %successmsg%@goto end:dberr@echo %errormsg% 1>&2@eventcreate /l application /t error ^/so Moodle /id 1 /d “%errormsg%”قم بحفظ الملف الى:end
الآن قم بانشاء ملف في نفس المجلد يحمل الاسم my.ini وحفظ فيه البيانات التي تمثل قاعدة البيانات لاتنسى ان تعدل اسم المستخدم وكلمة المرور و اسم قاعدة البيانات وفقا لاعدادات خادمك .نلاحظ ان السكربتان في لينكس و وويندوز متشابها الاختلاف فقط في النحو الاوامر .Z:\scripts\moodle_backup.cmd.
في الختام يمكنك انشاء مهمة مجدولة لتنفيذ السكربت كل يوم , من سطر الأوامر نفذ التعليمات التالية :
schtasks /Create /TN “Moodle Backup”/TR “Z:\scripts\moodle_backup.cmd” /SC DAILY /NP
استعادة النسخة الاحتياطية لقاعدة البيانات :
الحصول على نسخة احتياطية لقاعدة البياننات هام لكن من المهم ايضا تعلم كيفية استعادتها .
بداية يجب انشاء قاعدة بيانات فارغة ومن ثمة تنفيذ عملية الاستيراد (الاستعادة ) . يمكن تنفيذ ذلك من سطر الأوامر بالتعليمة :
mysqladmin -u<user> -p<password> create <database name>mysql -u<user> -p<password> <database name> < <backupfile.sql>في حالة كنت تود استبدال قاعدة البيانات الموجودة :
mysqladmin -u<user> -p<password> drop <database name>
mysqladmin -u<user> -p<password> create <database name>
mysql -u<user> -p<password> <database name> < <backupfile.sql>لتنفيذ هذه التعليمات يجب ان تكون بصلاحية المدير (root) في قاعدة البيانات MYSQl أو اي مستخدم آخر بصلاحية المدير