وثائق لينوكس العربية

عمل نسخة إحتياطية لقاعدة بيانات mysql

كتب بواسطة مسلم عادل بتاريخ 2008/09/10

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

ساقوم بشرح طريقتين لعمل النسخة الاحتياطية لقاعدة البيانات. الطريقة الاولى هي عبر سكريبت متوفر في الانترنت والطريقة الثانية (التي تهمنا) هي يدويا.

الطريقة الالية

قم بفتح سطر الاوامر واطبع فيه:

arabian@laptop:~$ wget http://heanet.dl.sourceforge.net/sourceforge/automysqlbackup/automysqlbackup.sh.2.5

الان قم بفتح السكريبت باستخدام اي محرر نصوص تحبه وعدل فيه القيم التالية:

USERNAME=dbuser
PASSWORD=password
DBNAMES=”DB1 DB2 DB3″
BACKUPDIR=”/backups”

احفظ الملف، واعطه صلاحيات تنفيذ ونفذه.

arabian@laptop:~$ chmod 700 automysqlbackup.sh
arabian@laptop:~$ ./automysqlbackup.sh

 

الطريقة اليدوية

جميع قواعد البيانات الخاصة بـ mysql يتم تخزينها داخل الدليل /var/lib/mysql
فلو قمت مثلا بانشاء قاعدة بيانات باسم linux فانك ستجدها داخل الدليل المذكور.

أبسط طريقة لعمل نسخة احتياطية لكل قواعد البيانات هي اخذ نسخة من الدليل /var/lib/mysql كالاتي:

root@laptop:~# /etc/init.d/mysql stop
root@laptop:~# tar zcvf mysql.tar.gz /var/lib/mysql/
root@laptop:~# /etc/init.d/mysql start

ولكن هذه الطريقة غير محبذة بسبب اننا نضطر الى ايقاف تشغيل الخدمة لاخذ النسخة الاحتياطية.

الطريقة الثانية وربما الاكثر استخداما ايضا هي عبر استخدام البرنامج mysqldump المرفق مع mysql
لاستخدام هذا البرنامج لا تحتاج الى ايقاف تشغيل mysql.

* لاخذ نسخة احتاطية لكل قواعد البيانات الموجودة في mysql:

root@laptop:~# mysqldump -uroot -p<password> -x -e -A > backup.sql

-u لتحديد اسم المستخدم الخاص بقاعدة البيانات mysql وفي هذه الحالة استخدمنا المستخدم root وهو مدير قاعدة البيانات وليس root مستخدم لينوكس
-p كلمة المرور الخاصة بالمستخدم root
-x يعمل على منع عمليات الـ update, insert, delete من قاعدة البيانات اثناء قراءة محتوياتها
-e يعمل على اضافة INSERT في الملف بحيث يسرع عملية استعادة البيانات
-A يقوم بنسخ كل قواعد البيانات الموجودة في mysql

في حال احببت ان تضغط الملف الناتج يمكنك ان تعمل الاتي

root@laptop:~# mysqldump -uroot -p<password> -x -e -A | backup.sql.gz

* لاخذ نسخة احتياطية لقاعدة بيانات واحدة (مثلا قاعدة بيانات اسمها linux)

root@laptop:~# mysqldump -uroot -p<password> -x -e -B linux > linux.sql

* لاستعادة النستخة الاحتياطية:

root@laptop:~# mysqldump -uroot -p<password> --database=linux < linux.sql
, , , , ,

أكتب تعليق

هل تبحث عن شيء؟

إستخدم النموذج التالي للبحث:

مواقع أنصح بها!

أنصح بزيارة المواقع التالية:

الأرشيف

ستجد هنا أرشيف المقالات السابقة: