Author Topic: innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]  (Read 8887 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]
« on: สิงหาคม 26, 2011, 11:09:37 AM »
Recovery mysql data from innodb database .
วันก่อนมี case เกี่ยวกับตัว file ib_logfile0 , ib_logfile1 ของ database ตัวหนึ่งที่ type เป็น innodb มีปัญหาครับ
file มัน corrupt จนทำให้เปิด mysql engine ไม่ขึ้น ทำให้ mysql service down ไป

สำหรับวิธีการแก้ปัญหาของผมคือ ต้องเปิด recovery mode ของ innodb
แล้วทำการเข้าไป dump database ก้อนนั้นออกมา
drop database ที่ใช้งาน innodb ออก

จากนั้นทำการ ลบ ib_logfile0 แล้วเปิด mysql engine แบบปกติแล้วให้ มัน generate ib_logfile0
จากนั้นทำการ create database ที่ต้องการใช้งาน เป็น innodb
ทำการ import database ลงไปใน database ที่สร้าง

วิธีการปรับ recovery mode มี อยู่ 6 ค่าด้วยกันครับลองอ่านเพิ่มได้ที่นี่นะ
http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
แต่ในเคสผม ผมจะ enable recovery mode ระดับ 5
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
Do not look at undo logs when starting the database: InnoDB treats even incomplete transactions as committed.

เริ่มโดยการ backup file (ibdata1 , ib_logfile0 , ib_logfile1 ) ไว้ก่อนนะครับ
แล้วทำ
###Enable innodb recovery mode in my.cnf
[mysqld]
innodb-force-recovery = 5

เสร็จทำการ restart mysql service.
เข้าไป dump database ที่ใช้งาน innodb ออกมา

#mysqldump -uxxx -p amavis > amavis_2011.sql

#mysql -p
>drop database amavis;
เข้าไป drop database amavis ครับ

เสร็จแล้วทำการ stop mysql engine
ลบ ibdata1 , ib_logfile0 , ib_logfile1

ทำการ comment ใน my.cnf
#innodb-force-recovery = 5
restart mysql service.

รอให้มัน generate ไฟล์
ibdata1 , ib_logfile0 , ib_logfile1

เสร็จทำการเข้าไป create database ครับ
#mysql -p
>create database amavis;
แล้วทำการ dump database กลับลงไปใน amavis.
#mysql -uxxx -p amavis < amavis_2011.sql

ก็เป็นการเสร็จสิ้นการ recovery ibdata1 ของ innodb ครับผม ^^

sukjai.krub

  • Newbie
  • *
  • Posts: 1
    • View Profile
    • Email
Re: innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]
« Reply #1 on: สิงหาคม 12, 2012, 06:51:37 PM »
อ.กอล์ฟ รบกวนสอบถาม database เป็น mysql แบบ innodb หากเราทำการลบไฟล์ ib_logfile0 กับ ib_logfile1 ใน Server
  ทำให้ไม่สามารถเปิดตารางที่เป็น innodb ได้เลย จะมีวิธีการอย่างไรกู้คืนทำให้เปิดไฟล์ได้บ้างครับ ขอบคุณครับ

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]
« Reply #2 on: สิงหาคม 14, 2012, 02:10:17 PM »
ลองปรับเป็น mode "innodb-force-recovery = 6"
ได้ปะครับผม

แล้วทำการ dump ข้อมูลออกมาก่อนแล้วก็ค่อย dump กลับไปอีกที

whitevampire66

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]
« Reply #3 on: เมษายน 18, 2013, 06:53:48 PM »
ขอบคุณงับ ^^

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2035
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: innodb database file ibdata1 and ib_logfile0 was corrupt [how to fix]
« Reply #4 on: มีนาคม 04, 2015, 12:20:59 AM »
ถ้าท่านใดใช้งานเป็น myisam ลองดูตามนี้นะครับผม
http://golfreeze.packetlove.com/smileboard/index.php?topic=81.msg1390;topicseen#msg1390