ذكري المظهر

كيفية عمل نسخة احتياطية واستعادة قواعد بيانات mysql مع mysqldump

تكنولوجيا - كيفية عمل نسخة احتياطية من قاعدة بيانات mysql الى قاعدة بيانات mysql اخرى

تكنولوجيا - كيفية عمل نسخة احتياطية من قاعدة بيانات mysql الى قاعدة بيانات mysql اخرى

جدول المحتويات:

Anonim

يشرح هذا البرنامج التعليمي كيفية النسخ الاحتياطي واستعادة قواعد بيانات MySQL أو MariaDB من سطر الأوامر باستخدام الأداة المساعدة mysqldump.

ملفات النسخ الاحتياطي التي تم إنشاؤها بواسطة الأداة المساعدة mysqldump هي في الأساس مجموعة من عبارات SQL التي يمكن استخدامها لإعادة إنشاء قاعدة البيانات الأصلية. يمكن لأمر mysqldump أيضًا إنشاء ملفات بتنسيق CSV و XML.

يمكنك أيضًا استخدام الأداة المساعدة mysqldump لنقل قاعدة بيانات MySQL إلى خادم MySQL آخر.

بناء جملة الأمر Mysqldump

قبل الدخول في كيفية استخدام الأمر mysqldump ، لنبدأ بمراجعة بناء الجملة الأساسي.

تأخذ تعبيرات الأداة المساعدة mysqldump النموذج التالي:

mysqldump > file.sql

  • options - خيارات file.sql mysqldump. file.sql - تفريغ (النسخ الاحتياطي)

لاستخدام الأمر mysqldump ، يجب أن يكون خادم MySQL متاحًا وقيد التشغيل.

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

حالة الاستخدام الأكثر شيوعًا لأداة mysqldump هي النسخ الاحتياطي لقاعدة بيانات واحدة.

على سبيل المثال ، لإنشاء نسخة احتياطية من قاعدة البيانات المسماة database_name باستخدام root المستخدم وحفظه في ملف باسم database_name.sql فستقوم بتشغيل الأمر التالي:

mysqldump -u root -p database_name > database_name.sql

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

mysqldump database_name > database_name.sql

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

لإجراء نسخ احتياطي لقواعد بيانات MySQL متعددة بأمر واحد ، يلزمك استخدام خيار قاعدة البيانات - متبوعًا بقائمة قواعد البيانات التي تريد --database احتياطيًا. يجب فصل كل اسم قاعدة بيانات بمسافة.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

سيقوم الأمر أعلاه بإنشاء ملف تفريغ يحتوي على قاعدتي البيانات.

النسخ الاحتياطي لجميع قواعد بيانات MySQL

استخدم خيار --all-databases لعمل نسخة احتياطية من جميع قواعد بيانات MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

كما هو الحال في المثال السابق ، سيقوم الأمر أعلاه بإنشاء ملف تفريغ واحد يحتوي على جميع قواعد البيانات.

النسخ الاحتياطي لجميع قواعد بيانات MySQL لفصل الملفات

لا توفر الأداة المساعدة mysqldump خيارًا لإجراء نسخ احتياطي لكافة قواعد البيانات لفصل الملفات ، لكننا نحقق ذلك بسهولة باستخدام bash FOR :

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

سيقوم الأمر أعلاه بإنشاء ملف تفريغ منفصل لكل قاعدة بيانات باستخدام اسم قاعدة البيانات باسم الملف.

إنشاء قاعدة بيانات MySQL مضغوطة

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

mysqldump database_name | gzip > database_name.sql.gz

إنشاء نسخة احتياطية مع الطابع الزمني

mysqldump database_name > database_name-$(date +%Y%m%d).sql

سيقوم الأمر أعلاه بإنشاء ملف بالتنسيق التالي database_name-20180617.sql

استعادة تفريغ الخلية

يمكنك استعادة ملف تفريغ MySQL باستخدام أداة mysql . بناء جملة الأمر العام كما يلي:

mysqld database_name < file.sql

في معظم الحالات ، ستحتاج إلى إنشاء قاعدة بيانات للاستيراد إليها. إذا كانت قاعدة البيانات موجودة بالفعل ، فأنت تحتاج أولاً إلى حذفها.

في المثال التالي ، سيقوم الأمر الأول بإنشاء قاعدة بيانات باسم database_name ثم سيقوم باستيراد ملف تفريغ database_name.sql فيه:

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

استعادة قاعدة بيانات MySQL واحدة من تفريغ MySQL كامل

mysql --one-database database_name < all_databases.sql

تصدير واستيراد قاعدة بيانات MySQL في أمر واحد

بدلاً من إنشاء ملف تفريغ من قاعدة بيانات واحدة ثم استيراد النسخة الاحتياطية إلى قاعدة بيانات MySQL أخرى ، يمكنك استخدام الخطوط التالية:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

سيقوم الأمر أعلاه بتوجيه الإخراج إلى عميل mysql على المضيف البعيد ، وسيتم استيراده إلى قاعدة بيانات باسم remote_database_name . قبل تشغيل الأمر ، تأكد من وجود قاعدة البيانات بالفعل على الخادم البعيد.

أتمتة النسخ الاحتياطي مع كرون

إن أتمتة عملية نسخ احتياطي لقواعد البيانات بسيطة مثل إنشاء وظيفة cron ما الذي سيتم تشغيل الأمر mysqldump عليه في الوقت المحدد.

لإعداد نسخ احتياطية تلقائية لقاعدة بيانات MySQL باستخدام cronjob ، اتبع الخطوات التالية:

  1. قم بإنشاء ملف باسم .my.cnf في دليل المستخدم الرئيسي الخاص بك:

    sudo nano ~/.my.cnf

    انسخ والصق النص التالي في ملف.my.cnf.

    user = dbuser password = dbpasswd

    لا تنسَ استبدال dbuser و dbpasswd قاعدة البيانات وكلمة مرور المستخدم.

    قم بتقييد أذونات ملف بيانات الاعتماد بحيث يمكن للمستخدم الخاص بك فقط الوصول إليه:

    chmod 600 ~/.my.cnf

    قم بإنشاء دليل لتخزين النسخ الاحتياطية:

    mkdir ~/db_backups

    افتح ملف المستخدم crontab:

    crontab -e

    أضف وظيفة cron التالية التي ستنشئ نسخة احتياطية من اسم قاعدة البيانات mydb كل يوم في الثالثة صباحًا:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    لا تنسَ استبدال username المستخدم باسم المستخدم الفعلي.

يمكنك أيضًا إنشاء cronjob آخر لحذف أي نسخ احتياطية يزيد عمرها عن 30 يومًا:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

بالطبع ، تحتاج إلى ضبط الأمر وفقًا لموقع النسخ الاحتياطي وأسماء الملفات. لمعرفة المزيد حول الأمر find ، تحقق من كيفية العثور على الملفات في Linux باستخدام دليل Command Line.

استنتاج

يغطي هذا البرنامج التعليمي الأساسيات فقط ، ولكن يجب أن يكون بداية جيدة لأي شخص يريد أن يتعلم كيفية إنشاء واستعادة قواعد بيانات MySQL من سطر الأوامر باستخدام الأداة المساعدة mysqldump.

يمكنك أيضًا التحقق من البرنامج التعليمي حول كيفية إعادة تعيين كلمة مرور جذر MySQL في حال نسيانها.

مسابق ماربب