سؤال InnoDB: خطأ: ملف السجل ./ib_logfile0 بحجم مختلفة


أنا فقط أضفت السطور التالية في /etc/mysql/my.cnf بعد أن قمت بتحويل قاعدة بيانات واحدة لاستخدام محرك InnoDB.

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT

لكنها ترفع "ERROR 2013 (HY000) في السطر 2: فقد الاتصال بخادم MySQL أثناء الاستعلام" حدث خطأ أثناء إعادة تشغيل mysqld. ويظهر سجل الخطأ mysql ما يلي

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting

لذلك علقت على هذا الخط

# innodb_log_file_size  = 256M

واعادة تشغيل mysql بنجاح.

وأتساءل ما هو "بايت 5242880 من ملف السجل" أظهر في الخطأ mysql؟ انها قاعدة البيانات الأولى على محرك InnoDB على هذا الخادم حتى متى وأين يتم إنشاء ملف الدخول هذا؟ في هذه الحالة ، كيف يمكنني تمكين الأمر innodb_log_file_size في my.cnf؟

تصحيح

حاولت حذف / var / lib / mysql / ib_logfile0 وإعادة تشغيل mysqld لكنه لا يزال فشل. يعرض الآن ما يلي في سجل الخطأ.

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

القرار

يعمل الآن بعد حذف ib_logfile0 و ib_logfile1 في / var / lib / mysql


101
2018-01-19 03:02


الأصل




الأجوبة:


InnoDB هو صعب الإرضاء بجنون عن التكوين ؛ إذا كان هناك شيء غير صحيح ، فسيستسلم ويعود إلى المنزل. لإجراء تغيير على حجم ملف السجل بدون فقد البيانات:

  1. قم بإرجاع أي تغييرات تهيئة قمت بها إلى حجم ملف السجل وابدأ تشغيل MySQL مرة أخرى.
  2. في تشغيل MySQL: SET GLOBAL innodb_fast_shutdown= 0؛
  3. إيقاف MySQL
  4. قم بتغيير التكوين إلى حجم ملف السجل.
  5. احذف كلا ملفي السجل.
  6. ابدأ MySQL. سوف يشتكي من عدم وجود ملفات السجل ، لكنه سيخلقها وسيكون كل شيء على ما يرام.

114
2018-01-19 03:06



مرحبًا ، شكرًا جوابًا ، لقد جربت طريقتك ولكنك فشلت. - jack
حذف كل ib_logfile0 و ib_logfile1 يحل المشكلة بالنسبة لي. - Temnovit
و لي ايضا. شكراً جزيلاً لك. - Stephen Kennedy
نظرًا لأنني أقوم بنقل db مثبت حديثًا ، فإنني أتخطى الخطوة 1-4 وأبدأ بالرقم 5 - ويعمل :) - Limbo Peng
شكراTemnovit حذف هذه الملفات 2 كما فعل خدعة بالنسبة لي. - bashan