it-swarm.asia

هل يجب استخدام mysqldump أو mysqlhotcopy لقواعد بيانات MySQL الاحتياطية؟

لديّ WordPress مدونة تعمل على قاعدة بيانات MySQL أريد نسخها احتياطيًا بشكل منتظم. هل سيكون من الأفضل استخدام برنامج mysqldump أو البرنامج النصي mysqlhotcopy لعمل نسخ احتياطية؟ ما هي إيجابيات وسلبيات كل منها؟ هل هناك أي خيارات أخرى يجب علي مراعاتها؟

13
Matthew Shanley

أستطيع أن أخبرك أنني أستخدم mysqldump حاليًا للحفاظ على نسخة احتياطية من قاعدة البيانات الخاصة بي. أفعل ذلك لأن هدفي هو الاحتفاظ بنسخ احتياطية أسبوعية حتى يتسنى للشخص في حالة إزالة صفحات (صفحات) الويب الخاصة به ، استعادتها منذ أسبوع على الأكثر.

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

mysqldump --databases databaseName > /file/path

--databases هو ما يجعل mysqldump تفريغ الرؤوس CREATE DATABASE IF NOT EXIST حتى أستطيع استيرادها في أي مكان أريد.

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

5
Mike

سأفكر في استخدام WordPress plugin يسمى "WordPress Database Backup (WP-DB-Backup)" وهو مدرج أيضًا في Wordpress قاعدة بيانات النسخ الاحتياطي دليل . يمكن لهذا البرنامج المساعد نسخ احتياطي لقاعدة البيانات في جدول زمني وإرسالها إليك بالبريد الإلكتروني (مع افتراض وجود قاعدة بيانات صغيرة). يمكنك أيضًا استرجاعها محليًا. يمكنك استبعاد التعليقات غير المرغوب فيها والتعليقات لجعل قاعدة البيانات أصغر

تحكم أقل ولكن أسهل في التنفيذ.

تمنحك MySQL dump التحكم الأكثر . يمكن أن تكون خدمة الاستضافة الخاصة بك عاملاً محددًا. بعض المضيفين لا يمنحك حق الوصول لتشغيل وظائف cron أو تشغيل الأمر mysqldump.

5
citadelgrad

الاقتراح رقم 1

إذا قمت بإجراء أي نسخ احتياطية من مثيل MySQL ، فمن الأفضل إعداد MySQL Replicaton بحيث لا يؤثر أي تحميل خادم أو زيادة القرص I/O على قاعدة بيانات الإنتاج بأي طريقة.

بمجرد إعداد MySQL Replication ، يمكنك كتابة نصوص mysqldump بطرق مختلفة ( يرجى الاطلاع على مشاركتي على DBA StackExchange لمجموعة متنوعة من التقنيات ) ، طالما تقوم بتشغيل mysqldumps على عبد.

الاقتراح رقم 2

إذا لم تتمكن من إعداد خادم آخر لـ MySQL Replication وكانت جميع بياناتك هي InnoDB ، فسيتعين عليك إجراء mysqldump في الوقت المناسب. يتم ذلك باستخدام --single-transaction الخيار مع mysqldump. وبالتالي ، إذا قمت بتشغيل mysqldump بدءًا من منتصف الليل وانتهت النسخة الاحتياطية في الساعة 12:15 صباحًا ، فإن إخراج mysqldump عند استعادته يعكس البيانات اعتبارًا من الساعة 12:00 صباحًا.

الاقتراح رقم 3

برنامج آخر متاح لـ MySQL Backups هو XtraBackup من Percona.

XtraBackup هي أداة شاملة تتصرف مثل rsync ولكنها قد وجهت الغرض في الحياة. يمكن أن تبدأ في نسخ جميع بيانات InnoDB ومساحات الجداول. لديه القدرة على إنشاء نقاط تفتيش داخليا وإجراء استرداد تعطل InnoDB في مكانه للمساعدة في الحصول على نسخة احتياطية مثالية في الوقت المناسب. يحتوي XtraBackup أيضًا على ميزة إضافية تسمح بإنشاء نسخ احتياطية إضافية. ميزة إضافية أخرى هي إنشاء ملفات السجل InnoDB ، التي بنيت أيضا من خلال استرداد التعطل في الموقع. هناك أيضًا بعض برامج التجميع لتوفير النسخ المجمد لجداول MyISAM أيضًا.

ينفذ الجزء الخلفي من مثيل الخلية ، ولكن مع اختلاف واضح. يعتمد وقت النسخ الاحتياطي على وقت اكتمال النسخ الاحتياطي بدلاً من بدء تشغيله. وبالتالي ، إذا قمت بتشغيل XtraBackup بدءًا من منتصف الليل وانتهت النسخة الاحتياطية في الساعة 12:15 صباحًا ، فإن إخراج mysqldump عند استعادته يعكس البيانات اعتبارًا من الساعة 12:15 صباحًا.

3
RolandoMySQLDBA

يعتمد على محرك التخزين لجداولك. يعمل فقط لجداول ARCHIVE و MyISAM وفقًا لـ MySQL Manual Page ويجب تشغيله على نفس الجهاز (أي عدم استخدام المقبس المحلي أو TCP/IP)

تقول الخلية أيضا

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

2
Aiden Bell

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

يمكنني استخدام "autysqlbackup" وهو برنامج شل مفتوح المصدر يمكن تعيينه كمهمة cron على الخادم. ويغطي تقريبا كل حالة النسخ الاحتياطي يمكن تصوره: http://sourceforge.net/projects/automysqlbackup/ . لقد عملت لا تشوبه شائبة بالنسبة لي لعدة سنوات - أوصت بدقة.

1
Mark Hatton

mysqlhotcopy عبارة عن سيناريو بيرل حوالي 05. لذلك يضيف التبعيات ، لبيرل ومختلف بيرل. كنت أنقل هذا واحد.

mysqldump هو برنامج C يتم توزيعه مع MySQL والحفاظ عليه بنشاط. إذا قمت بإضافة الخيار -x فإنه يقوم بإغلاق الجداول بحيث تكون ذهبيًا.

لدي شخصيا هذا البرنامج النصي في cron (ستحتاج إلى إزالة تلك الفرار إذا كنت ترغب في تشغيلها يدويًا) ويعمل مثل السحر بالنسبة لي ، مع الاحتفاظ بنسخة احتياطية من كل واحدة من قواعد البيانات الخاصة بي ل ملف محلي ، وكذلك تفريغ كامل لجميع قواعد البيانات.

وإذا كان لديك أكثر من قاعدة بيانات واحدة ، فستحتاج أيضًا إلى تفريغ المنح الخاصة بها. Maatkit سوف يساعدك هناك ، وعليك فقط mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql أن تنسخ جداول المنح الخاصة بك وتكون جاهزة للاستيراد مرة أخرى.

1
intlect

أعرف أيضًا أن عددًا من أدوات إدارة الخادم مثل Interworx و Ensim تستخدم mysqldump لإجراء نسخ احتياطي لقواعد البيانات ثم أمر mysql بسيط لاستعادته. من هذا سيكون تخميني أن هذا هو واحد من أفضل الطرق.

0
Darryl Hein