استعادة قاعدة بيانات MySQL InnoDB
سؤال
لا بد لي من استعادة قاعدة البيانات التي تم إسقاطها عن غير قصد في MySQL 5.0.من خلال التحقق من ملفات النسخ الاحتياطي، يبدو أن لدي ملفات .FRM فقط للاحتفاظ ببيانات قاعدة البيانات.
هل يمكن لأي شخص أن يخبرني ما إذا كان هذا هو كل ما أحتاجه لإجراء استعادة/استيراد قاعدة البيانات من النسخة الاحتياطية، أم أن هناك ملفات أخرى يجب علي تسليمها لإكمال هذا؟
المحلول
ملفات .frm ليست ملفات بيانات، بل تقوم فقط بتخزين "معلومات قاموس البيانات" (انظر دليل ماي اس كيو ال).يقوم InnoDB بتخزين بياناته في ملفات ib_logfile*.هذا ما تحتاجه للقيام بالنسخ الاحتياطي/الاستعادة.لمزيد من التفاصيل انظر هنا.
نصائح أخرى
استعادة innodb:(بافتراض أن مجلد البيانات الخاص بك هو C:\ProgramData\MySQL\MySQL Server 5.5\data)
- انسخ مجلدات قواعد البيانات (المسماة باسم قاعدة البيانات) التي تريد استعادتها إلى C:\ProgramData\MySQL\MySQL Server 5.5\data
انسخ ملفات ibdata الثلاثة إلى مجلد البيانات على سبيل المثال.(C:\ProgramData\MySQL\MySQL Server 5.5\data)
_ib_logfile0 _ib_logfile1 _ibdata1
احصل على حجم _ib_logfile0 بالميجابايت (يجب أن يكون هو نفسه _ib_logfile1) عن طريق "ملف" انقر بزر الماوس الأيمن -> خصائص
قم بتحرير ملف التكوين mysql (mysql\bin\my.ini) ليكون حجم innodb_log_file_size=343M هو الحجم الدقيق لملفات ibdata
يجري
mysqld-defaults-file = mysql bin my.ini-standalone-console-innodb_force_recovery = 6
الآن يجب أن تعود بياناتك إلى قاعدة البيانات الخاصة بك.قم بتصديرها باستخدام phpmysql أو أي أداة أخرى
يا بلدي...أنت في ورطة.اغلاق قاعدة البيانات.قم بعمل نسخة احتياطية لملف innodb.صلي من أجل أنك لم تفعل شيئًا بعد إسقاط قاعدة البيانات.
يجب أن يكون بمقدور الأشخاص في Percona (بما في ذلك مؤلفو مدونة أداء MySQL) مساعدتك: بيركونا دعم الطوارئ.
إذا كنت تغامر بمفردك، خذ معك هذا: مجموعة أدوات استعادة البيانات لـ Innodb.
اللوجستية من ذلك؟عليك أن تقرأ كل صفحة (صفحة مصطلح الكمبيوتر...كتلة 16 كيلو بايت في حالة Innodb) وإعادة بناء بياناتك بهذه الطريقة.إنه عمل منخفض المستوى للغاية (نحن نتحدث عن فتح محررك السداسي والبدء في حساب البايتات إذا لم تقم مجموعة الأدوات بذلك نيابةً عنك)، وإذا لم تكن مبرمجًا ذو خبرة كبيرة، فسوف تتألم .
الحل التفصيلي تجده هنا:
http://www.unilogica.com/mysql-innodb-recovery/ (المقالة باللغة البرتغالية)
بالإضافة إلى علم innodb_force_recovery, ، لقد وجدت حلاً آخر: innodb_file_per_table, الذي يقسم جداول InnoDB في كل ملف مثل جداول MyISAM.
في عملية التعافي من العطل، من الممكن أن تفقد بيانات أقل من تلك الموجودة في ملف واحد ibdata1.