النسخ الاحتياطي لقواعد بيانات MySQL أو MariaDB متعددة تلقائيا

المقدمة

في هذه المقالة ، سنستعرض كيفية النسخ الاحتياطي لقواعد بيانات MySQL أو MariaDB المتعددة الموجودة على نفس الجهاز باستخدام نص bash مخصص وإعداد مهمة cron.

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

سنفترض أن لدينا ثلاث قواعد بيانات MySQL في مثيل Vultr الخاص بنا المسمى db-vultr-site و db-vultr-blog و db-vultr-app (لا تقلق بشأن إنشاء قواعد البيانات هذه ، فستتمكن من استبدال أسمائها بالنسبة لك ، فقد تم استخدامها في البرنامج النصي في الخطوة 2 أدناه) .

  1. قم بتسجيل الدخول إلى قاعدة بيانات MySQL أو MariaDB وقم بتشغيل الاستعلام أدناه لإنشاء مستخدم قاعدة بيانات db_user_backupsللتعامل مع النسخ الاحتياطية

    GRANT LOCK TABLES, SELECT, SHOW VIEW, REPLICATION CLIENT ON *.* TO 'db_user_backups'@'%' IDENTIFIED BY '{COMPLEX-PASSWORD}';
    

    قم أيضًا بتشغيل أدناه للتأكد من تكوين MySQL لاستعادة الإجراءات المخزنة بشكل صحيح

    SET GLOBAL log_bin_trust_function_creators = 1;
    
  2. قم بإعداد بنية الدليل بالضرورة والملفات المطلوبة

    # create backup directory with environment and log file
    sudo mkdir /backups && cd /backups
    sudo touch .env db-backup.sh db-backup.log
    sudo chmod -R 775 /backups
    sudo chmod -R g+s /backups
    sudo chmod +x db-backup.sh
    
    # add mysql backup user credentials into environment file
    echo "export MYSQL_USER=db_user_backups" > /backups/.env
    echo "export MYSQL_PASS={COMPLEX-PASSWORD}" >> /backups/.env
    
  3. افتح db-backup.sh nano /backups/db-backup.shوالصق الرمز أدناه بداخله ، ثم احفظ الملف (Ctrl + X -> Y -> اضغط Enter) .

    DB_NAMES=( 'db-vultr-site' 'db-vultr-blog' 'db-vultr-app' ) #replace with your own database name(s)
    BKUP_NAMES=()
    BKUP_DIR="/backups"
    
    # get total number of directories
    total_dbs=${#DB_NAMES[@]}
    
    # create backup file names
    for (( i=0; i<${total_dbs}; i++ )); do
        BKUP_NAMES[$i]="`date +%Y%m%d%H%M`-backup-$${DB_NAMES[$i]}.sql.gz"
    done
    
    # get backup users credentials
    source $BKUP_DIR/.env
    
    # create backups
    for (( i=0; i<${total_dbs}; i++ )); do
        # NOTE: --routines flag makes sure stored procedures are also backed up
        mysqldump --routines -u ${MYSQL_USER} -p${MYSQL_PASS} | gzip > ${BKUP_DIR}/${BKUP_NAMES[$i]}
    done
    

    يتكرر الرمز أعلاه عبر مصفوفة باسم (أسماء) قاعدة البيانات (قواعد البيانات) التي تريد نسخها احتياطيًا والقيام بذلك.

إعداد Cronjob

قم بإعداد cronjob لتشغيل كل منتصف الليل الذي يقوم بتشغيل البرنامج النصي للنسخ الاحتياطي ويحفظ النتيجة / الإخراج في سجل النسخ الاحتياطي.

  1. افتح crontab

    crontab -e
    
  2. أضف الإدخال أدناه إلى crontab

    0 0 * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    ملاحظة: أثناء الاختبار ، يمكنك ضبط تشغيل cronjob كل دقيقة واحدة بدلاً من ذلك كما هو موضح أدناه

    * * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

    -أو- كل 5 دقائق (استبدل 5 بعدد الدقائق التي تريدها)

    */5 * * * * /usr/bin/env bash /backups/db-backup.sh &>> /backups/db-backup.log
    

ماذا بعد

من المحتمل أنك لن ترغب في الاحتفاظ بنسخة احتياطية من النسخ الاحتياطية على نفس الخادم (الخوادم) الذي يشغّل قاعدة بياناتك ، ولكن بدلاً من ذلك على خادم في موقع جغرافي مختلف. هناك عدة طرق للقيام بذلك ، بدءًا من استخدام SFTP ، إلى استخدام الأدوات المخصصة التي يوفرها عدد لا يحصى من موفري التخزين السحابي المتاحين هناك. أحد البدائل الجيدة هو Rsync كما هو موضح هنا - vultr.com/docs/setup-file-mirroring-using-rsync-in-debian-ubuntu

كتبه لامي أدابونيان

اترك تعليقاً

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

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

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

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد