ไม่มีสิ่งใดที่คุณสามารถทำได้จริง ๆ เพราะการย้อนกลับถูกทำผ่านUNDO tablespace ใน ibdata1ซึ่งน่าจะเพิ่มขึ้นอย่างมาก
หากคุณฆ่ากระบวนการ mysqld และรีสตาร์ท mysql มันจะทำการดึงข้อมูลที่ค้างไว้ซึ่งเป็นส่วนหนึ่งของวงจรการกู้คืนความผิดพลาด
การปฏิเสธความรับผิด: ไม่รับผิดชอบต่อการสูญเสียข้อมูล
สิ่งที่คุณสามารถทำได้อาจทำให้ข้อมูลสูญหายสำหรับตารางอื่น แต่มีบางสิ่งที่คุณสามารถทำได้เพื่อหลีกเลี่ยงวงจรการกู้คืนความผิดพลาดปกติของ InnoDB
มีตัวเลือกการเริ่มต้นที่เรียกว่าinnodb_force_recoveryซึ่งช่วยให้คุณสามารถข้ามขั้นตอนต่าง ๆ ของการกู้คืนความเสียหายของ InnoDB ได้
ตามเอกสาร MySQL บนบังคับ InnoDB การกู้คืนที่นี่มีการตั้งค่าและผลกระทบ:
1 (SRV_FORCE_IGNORE_CORRUPT)
ปล่อยให้เซิร์ฟเวอร์ทำงานแม้ว่าจะตรวจพบหน้าเว็บที่เสียหาย ลองสร้าง SELECT * FROM จาก tbl_name เพื่อบันทึกเรคคอร์ดและเพจที่เสียหายซึ่งจะช่วยในการดัมพ์ตาราง
2 (SRV_FORCE_NO_BACKGROUND)
ป้องกันไม่ให้เธรดหลักทำงาน หากเกิดความผิดพลาดขึ้นระหว่างการดำเนินการล้างค่าการกู้คืนนี้จะป้องกัน
3 (SRV_FORCE_NO_TRX_UNDO)
อย่าเรียกใช้ธุรกรรมย้อนกลับหลังจากการกู้คืนความผิดพลาด
4 (SRV_FORCE_NO_IBUF_MERGE)
ป้องกันการแทรกการผสานบัฟเฟอร์ หากพวกเขาจะทำให้เกิดความผิดพลาดอย่าทำ อย่าคำนวณสถิติตาราง
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
อย่าดูบันทึกการเลิกทำเมื่อเริ่มต้นฐานข้อมูล: InnoDB จัดการกับการทำธุรกรรมที่ไม่สมบูรณ์ตามที่ได้รับมอบหมาย
6 (SRV_FORCE_NO_LOG_REDO)
ห้ามทำการย้อนการล็อกการทำซ้ำในการเชื่อมต่อกับการกู้คืน
ด้วยการเปลี่ยนแปลงการทำธุรกรรมที่ฝังอยู่ในบันทึก UNDO และ REDO คุณจะเสี่ยงต่อการ
- การสูญเสียข้อมูลหมายถึงการเขียน
- การเก็บข้อมูลหมายถึงการถูกลบ
ในกรณีที่คุณคาดว่าจะเกิดผลข้างเคียงที่ไม่ดีให้สำรองข้อมูล / var / lib / mysql ทั้งหมดไว้ที่อื่นในกรณีที่คุณต้องการคัดลอก ibdata1, ib_logfile0 และ ib_logfile1 แล้วลองกู้คืนตามปกติ
หาก mysql เต็มในโหมดใดโหมดหนึ่ง
- mysqldump ข้อมูลทั้งหมดยกเว้นตารางที่ละเมิด
- ปิด mysql
- ลบทุกอย่างใน / var / lib / mysql ยกเว้น / var / lib / mysql / mysql
- เริ่ม mysql
- โหลด mysqldump อีกครั้ง
ถ้ำ: ให้แน่ใจว่าคุณสำรองข้อมูลทุกอย่าง !!!
ฉันหวังว่านี่จะช่วยได้ !!!