لينكساوي

لكل من يهتم باللينكس والبرامج الحرة والمفتوحة المصدر ,أبسط شرح ممكن عن البرامج والخدمات

أهلا بك. إذا كانت هذه زيارتك الأولى فإني أنصحك بالإشتراك في خدمة RSS . لتحصل على المواضيع الجديدة فور نشرها. ويمكنك متابعتنا من خلال Twitter و Facebook

نسخ احتياطي تلقائي لقواعد بيانات MySql

كتبه زاهر القدور في 2010/04/10مجموع التعليقات 13 4,390 مشاهدة




عملية النسخ الاحتياطي (Backup) غاية في الأهمية ﻷي عمل نقوم عليه ويجب علينا القيام به بشكل دوري حتى نضمن الحفاظ على بياناتنا (ملفات – إعدادات – قواعد بيانات) بشكل سليم حتى لو حصل أي ضرر للسيرفر (الهارد مثلاً)أو تخريب أو اختراق كل ماعليك إعادة رفع النسخة الاحتياطية السليمة والأحدث ويادار مادخلك شر :cheerful:
موضوعنا نتكلم فيه عن عمل نسخ احتياطي تلقائي اتوماتيكي (يومي – أسبوعي – شهري) لجميع قواعد البيانات MySql الموجودة على السيرفر
سنستخدم لهذه الغاية سكربت AutoMySQLBackup الموجود على موقع SourceForge

A script to take daily, weekly and monthly backups of your MySQL databases using mysqldump. Features – Backup mutiple databases – Single backup file or to a seperate file for each DB – Compress backup files – Backup remote servers – E-mail logs – More..


الشرح:
نقوم بتحميل السكربت

wget http://sourceforge.net/projects/automysqlbackup/files/AutoMySQLBackup/AutoMySQLBackup%20VER%202.5/automysqlbackup.sh.2.5/download

ونحرر السكربت من أجل التعديل عليه وإضافة المعلومات اللازمة باستخدام nano , vi لاحظ المقطع التالي هو مايلزمنا

# Username to access the MySQL server e.g. dbuser
USERNAME=dbuser

# Username to access the MySQL server e.g. password
PASSWORD=password

# Host name (or IP address) of MySQL server e.g localhost
DBHOST=localhost

# List of DBNAMES for Daily/Weekly Backup e.g. "DB1 DB2 DB3"
DBNAMES="DB1 DB2 DB3"

# Backup directory location e.g /backups
BACKUPDIR="/backups"

# Mail setup
# What would you like to be mailed to you?
# - log   : send only log file
# - files : send log file and sql files as attachments (see docs)
# - stdout : will simply output the log to the screen if run manually.
# - quiet : Only send logs if an error occurs to the MAILADDR.
MAILCONTENT="stdout"

# Set the maximum allowed email size in k. (4000 = approx 5MB email [see docs])
MAXATTSIZE="4000"

# Email Address to send mail to? ([email protected])
MAILADDR="[email protected]"

نستبدل dbuser باسم المستخدم لسيرفر MySql
نستبدل password بكلمة السر الخاصة بالمستخدم
نستبدل DB1 DB2 DB3 بأسماء قواعد البيانات الموجودة على السيرفر اللي نريد ناخذ منها نسخة احتياطية
نستبدل /backups بالمسار اللي نريد يتم فيه حفظ النسخ الاحتياطية
استبدل [email protected] بإيميلك إذا أردت أن يتم إرسال نسخة على الايميل

بقي علينا خطوة ليقوم بالعمل بشكل تلقائي
انسخ هذا السكربت إلى المجلد

/etc/cron.daily

وأعطيه صلاحية التنفيذ

chmod +x automysqlbackup.sh.2.5

ومبروك عليك :smile:

زاهر القدور

زاهر القدور مدون تقني ومؤسس لينكساوي أهتم بالمصادر الحرة والمفتوحة عموماً واللينكس والووردبريس خصوصاً يمكنك متابعتي من خلال Twitter و Facebook

مجموع التعليقات 13

  1. السلام عليكم و رحمة الله
    بارك الله فيك أستاذي
    موضوع و سكريبت مميزين فعلا
    لكن لو لدينا سيرفر عليها تقريبا 500 قاعدة بيانات صغيرة و متوسطة و 10 قواعد بيانات كبيرة مثلا
    لا يمكننا ان نعمل في الكونفيج كل القواعد يدويا هل توجد طريقة اخرى لعمل ذلك؟
    شكرا

  2. عليكم السلام ورحمة الله وبركاته

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

    كل ماعليك استبدال هذا السطر

    DBNAMES="DB1 DB2 DB3"

    بهذا السطر

    DBNAMES="all"

    وبالتوفيق

  3. بارك الله فيك استاذ زاهر :kissing:
     
    طيب لو نريد عمل مثلا القواعد تاخذ نسخ داخلية بالسيرفر الساعة 12 ظهرا بداخل السيرفر :whistle:
    و نعمل امر تاني الساعة 5 بعد الظهر يعني لما ينتهي نسخ القواعد الداخلي يتم نقله لسيرفر خارجي :wink:
    طبعا العملية يلزمها برمجة بالكرون او انا خاطئ :sick:
    انت تعرف الطلب ده لايش لأنه لا سمح الله اخترق اي موقع و راحت القاعدة بيكون عندنا اكثر من حل سواء باك آب داخلي للقواعد او باك آب كامل للمواقع و كمان باك آب خارجي للمواقع و كمان باك آب خارجي للقواعد
     
    شكرا لك و متابع مواضيعك :blush:

  4. أهلا بك أخوي اسامة
    طبعا كلامك وتفكيرك صحيح ﻷن عملية النسخ الإحتياطي مهمة جدا وتدل على احتراف هذا العمل
    انت ممكن تعمل شل سكربت يقوم بهذه العملية بشكل دوري
    وفي طريقة حلوة كثير ممكن تعمل مزامنة لمجلد backup على سيرفر ثاني باستخدام rsync وأيضا ممكن تستخدم nfs
    ولاتنسى تنزل ملفات BACKUP الاسبوعي أو الشهري على جهازك الخاص :wink:

  5. شكرا لك على ردك السريع
    هل ممكن ان تشرح لنا عملية برمجة سكريبت شيل بسيط للامر ده و شرح المخرجات او ما بعرف ايش ههههه انا جديد على البرمجة الخاصة بالشيل سكريبت كنت قريت عنها من قبل و عن اسم الطرق البرمجية بس مش فاكر الحين يلزمني اتعلمها عن جد
    لو تقدر لا تبخل علينا بالأساسيات و انا عارفك تقدر ولو بالبحث انا كمان حبحث لا تخاف :)
    اخوك اسامة من المغرب

  6. احمد سالم قال:

    السلام عليكم ورحمه الله وبركاته
    انا لسه مجرب عمليه اخذ نسخه من قواعد لبيانات ولكن الى الان لم ياخذ اي نسخه
    ثانيا بعد عمليه اخذ النسه كيف يمكن اعادتها
    شكرا

  7. عليكم السلام ورحمة الله وبركاته

    1- تأكد أنك قمت بنسخه إلى هذا المجلد /etc/cron.daily بعد عمل التعديلات اللازمة
    وأيضا منحه صلاحية التنفيذ
    هذه الأوامر تقوم بها وأنت root
    2- لإدارة قواعد البيانات ممكن تستخدم الكثير من البرامج اللي تسهل عليك هذه المهمة
    مثل phpmyadmin بعد فتح البرنامج اختار زر import
    أو يمكنك استخدام هذا البرنامج MySQL Administrator وهذا شرح له
    http://linuxawi.com/mysql-administrator/

  8. nidal قال:

    اوﻻ شكرا للينكساوي على مجهوداته الجميلة للتطوير في مجال لينكس
    ارغب بالمساعدة اذا سمحت لي :
    كيف اعمل مزامنة بين قاعدتين بيانات كل منهم على سيرفر ، على ان يكون احدهماقاعدة بيانات رئيسية واﻻخرى فرعية ، بحيث يتم تحديث قاعدة البيانات الفرعيىه من الرئيسية بشكل اوتوماتيكي
    مع الشكر

  9. بارك الله فيك يا لنكساوي

    و طرح جيد جدا من طرف نضال :)

    نتمنى الاجابة عليه :)
    انا اللي اعرفه و لم اجربها من قبل
    انه يمكنك عمل سيرفر خاص بالتصفح و سيرفر آخر خاص بالقواعد بعد اعطاء تصريح للسيرفر الحالي بالاتصال مع سيرفر القواعد

    :)

  10. شكرا لكم على الردود المشجعة

    التأخر في الرد سببه أن الجواب لا يمكن وضعه في تعليق فهو يحتاج إلى أكثر من سطر أو عدة سطور
    قمت بكتابة موضوع يوضح كيفية المزامنة من خلال rsync مع قليل من التوسع فيه
    http://linuxawi.com/sync-folder-with-rsync/

    أتمنى أن تجدوا فيه الفائدة

  11. nidal قال:

    شكرا على الشرح ولكل من ساهم … الاجابات كلها مفيدة جدا … لا … بل رائعة .
    لكن الفكرة الموجودة عندي و يمكن ما قدرت وصلها بشكل واضح هي :
    انا عندي موقع اخباري مثلا .. و هذا الموقع كل 30 دقيقة بيحصل على قواعد البيانات الخاصة بة تغيير و في نفس الوقت انا عندي نسخة اخرى من الموقع على سيرفر اخر و عناوين (ip -user -password)مختلفة طبعا ، و ارغب بأن يحصل نفس التغيير الحاصل على السيرفر الاول على السيرفر التاني … (طبعا قصدي على قاعدة البيانات خصوصا )و بدون تدخل يدوي بشكل نهائي .
    مع العلم ان اقل حجم هو 1غيغا بيت
    مع الشكر الجزيل لكل من ساهم … و خصوصا لنكساوي العزيز

  12. أحمد عربي قال:

    @nidal : ماتبحث عنه لايسمي نسخ احتياطي بل Data Replication
    انصحك ان تقرا عن clusters الخاص بقاعدة البيانات التي تستخدمها وعن clusters عموما
    الفكرفكرتها هي تمام ماقلته انت , لديك سيرفران , احدهما يتلقي تغييرات ضخمة جدا وعلي الاخر ان يكون لديه نفس التغييرات (اما لانه لعمل كبديل او شئ اخر)
    http://www.mysql.com/products/cluster/
    http://en.wikipedia.org/wiki/MySQL_Cluster

  13. sayed قال:

    كيفية تدخيل مثلاً أسم جديد فى جدول الأشخاص بدون ما أدخل idبتاع الشخص الجديد يعنى أنا عايز my sql يزود أوتوماتيك

TrackBacks / PingBacks

أضف تعليق وشاركنا رأيك

*