ในการใช้งาน MySQL บนเครื่องเดี่ยวทั่วไปนั้น หลีกเลี่ยงไม่ได้ที่จะพบปัญหา database เสียหาย เช่นกรณีไฟดับ ฮาร์ดดิสก์เสีย หรือระบบหยุดทำงานแบบผิดปกติ ฯลฯ

วันนี้เราจะมาดูวิธีการ receovery MySQL ในกรณีข้างต้นกัน

กรณีของ MyISAM การ recovery ทำได้โดยใช้คำสั่งเดียว

 

แต่แน่นอนว่า ไม่มีการรับประกัน integrity ของข้อมูลใดๆ ทั้งสิ้น เนื่องจาก MyISAM storage engine ไม่สามารถทำเรื่องดังกล่าวได้

MySQL สมัยใหม่มักใช้ InnoDB เป็น storage engine มาตรฐาน ซึ่งมีข้อดีเหนือกว่า MyISAM อยู่มากมาย แต่การ recovery จะใช้ขั้นตอนมากกว่าเดิมนิดหน่อย

Step ที่ถูกต้องของการทำ innodb-force-recovery

1. copy mysql directory ไปไว้ที่ปลอดภัยก่อน และ stop mysql หากยังรันอยู่

 

2. recovery โดยการไล่ level ขึ้นไป จาก 1-6 โดยใส่ค่าเพิ่มเติมลงไปใน my.cnf ดังนี้

 

3. start mysql และสังเกตผลจากข้อความที่ขึ้นมา หากยังมี error อยู่ ให้ stop mysql และเพิ่มค่า innodb_force_recovery ขึ้นทีละ 1 จนกว่าจะ start mysql ได้โดยไม่มี error

[ตัวอย่างกรณี error …]

 

4. ณ​ level ที่ start mysql ได้สำเร็จโดยไม่พบ error ให้ทำการ dump db ที่มีปัญหาออกมา เพื่อ backup

 

5. drop database ที่มีปัญหา ซึ่งเราได้ dump ออกมาเรียบร้อยนั้นทิ้ง

 
6. stop mysql แล้ว comment บรรทัด innodb_force_recovery ใน /etc/my.cnf ทิ้ง จากนั้น start mysql กลับขึ้นมาในโหมดปกติ

7. restore dump db ทั้งหมดกลับเข้าไป

 
หมายเหตุ – ระหว่าง recovery จะไม่สามารถเขียนลง db ได้

ผู้สนใจสามารถอ่านเพิ่มเติมเกี่ยวกับความแตกต่างของ Level ต่างๆ ในการ recovery ได้จาก MySQL InnoDB Recovery Doc

 

Share this:Share on FacebookTweet about this on TwitterShare on Google+Pin on Pinterest