InnoDB: ข้อผิดพลาด: ไฟล์บันทึก. / ib_logfile0 มีขนาดต่างกัน


106

ฉันเพิ่งเพิ่มบรรทัดต่อไปนี้ใน /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

แต่มันยก "ข้อผิดพลาด 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

คำตอบ:


121

InnoDB จู้จี้จุกจิกเกี่ยวกับการกำหนดค่าของมันอย่างบ้าคลั่ง หากบางสิ่งไม่ถูกต้องมันก็จะยอมแพ้และกลับบ้าน ในการเปลี่ยนแปลงขนาดไฟล์บันทึกโดยไม่ทำให้ข้อมูลสูญหายให้ทำดังนี้

  1. ย้อนกลับการเปลี่ยนแปลงการกำหนดค่าที่คุณทำกับขนาดไฟล์บันทึกและเริ่ม MySQL อีกครั้ง
  2. ในการรัน MySQL ของคุณ: SET GLOBAL innodb_fast_shutdown = 0;
  3. หยุด MySQL
  4. ทำการกำหนดค่าเปลี่ยนเป็นขนาดไฟล์บันทึก
  5. ลบไฟล์บันทึกทั้งสอง
  6. เริ่ม MySQL มันจะบ่นเกี่ยวกับการขาดไฟล์บันทึก แต่มันจะสร้างพวกเขาและทุกอย่างจะดี

1
สวัสดีขอบคุณสำหรับคำตอบของคุณฉันลองใช้วิธีการของคุณแล้ว แต่ยังไม่สำเร็จ
แจ็ค

44
การลบทั้ง ib_logfile0 และ ib_logfile1 แก้ปัญหาให้ฉันแล้ว
Temnovit

1
และสำหรับฉัน ขอบคุณมากเรามี wiki ของเรากลับมาแล้ว!
Stephen Kennedy

1
ตั้งแต่ฉันมาตั้งรกรากเป็น db ที่ติดตั้งใหม่ผมข้ามขั้นตอนที่ 1-4 และเริ่มต้นด้วย 5 - และมันทำงาน :)
Limbo Peng

ขอบคุณ @Temnovit การลบ 2 ไฟล์เหล่านี้ก็เป็นเคล็ดลับสำหรับฉันเช่นกัน
ชาน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.