ฉันต้องการที่จะเข้าใจไฟล์ ibdata เหล่านี้เพราะสิ่งเหล่านี้มีบทบาทสำคัญในกระบวนการกู้คืนความผิดพลาด ฉันไม่สามารถหาแหล่งข้อมูลที่เหมาะสมผ่านเว็บสำหรับเรื่องนี้
ฉันต้องการที่จะเข้าใจไฟล์ ibdata เหล่านี้เพราะสิ่งเหล่านี้มีบทบาทสำคัญในกระบวนการกู้คืนความผิดพลาด ฉันไม่สามารถหาแหล่งข้อมูลที่เหมาะสมผ่านเว็บสำหรับเรื่องนี้
คำตอบ:
ไฟล์ ibdata1 เป็นพื้นที่ตารางระบบสำหรับโครงสร้างพื้นฐาน InnoDB
มันมีหลายชั้นสำหรับข้อมูลที่สำคัญสำหรับ InnoDB
คุณสามารถหย่าข้อมูลและดัชนีหน้าเว็บจาก ibdata1 โดยการช่วยให้innodb_file_per_table สิ่งนี้จะทำให้ตาราง InnoDB ที่สร้างขึ้นใหม่เพื่อจัดเก็บข้อมูลและหน้าดัชนีใน.ibdไฟล์ภายนอก
ตัวอย่าง
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;สร้าง /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibdไม่ว่าตาราง InnoDB จะถูกเก็บไว้ไม่มีการทำงานของ InnoDB ต้องมองหาข้อมูลเมตาของตารางและจัดเก็บและเรียกMVCCข้อมูลเพื่อสนับสนุนการปฏิบัติตามกรดและการแยกการทำธุรกรรม
นี่คือบทความที่ผ่านมาของฉันในการแยกข้อมูลตารางและดัชนีจาก ibdata1
Oct 29, 2010: โพสต์ต้นฉบับของฉันใน StackOverflowNov 26, 2011: ข้อผิดพลาด 1114 (HY000) ที่บรรทัด 6308 ในไฟล์ & ตาราง user_analysis เต็มFeb 03, 2012: กำหนดการปรับตารางใน MySQL InnoDB ให้เหมาะสมที่สุดMar 25, 2012: ทำไม InnoDB ถึงเก็บฐานข้อมูลทั้งหมดไว้ในไฟล์เดียว?Apr 01, 2012: แนะนำให้ใช้ innodb_file_per_table หรือไม่ib_logfile0, ib_logfile1)หากคุณต้องการที่จะรู้ว่าสิ่งที่ib_logfile0และib_logfile1มีไว้สำหรับพวกเขาเป็น InnoDB ทำซ้ำบันทึก พวกเขาไม่ควรที่จะลบหรือปรับขนาดจนกว่าจะมีการปิดปกติเต็มรูปแบบของ mysqld ได้ที่สถานที่ หาก mysqld ล่มให้เริ่มต้น mysqld มันจะอ่านข้ามib_logfile0และib_logfile1ตรวจสอบการเปลี่ยนแปลงข้อมูลใด ๆ ที่ไม่ได้โพสต์ลงในบัฟเฟอร์การเขียนibdata1ซ้ำ มันจะเล่นซ้ำ (ทำซ้ำ) การเปลี่ยนแปลงเหล่านั้น เมื่อพวกเขาเล่นซ้ำและเก็บไว้ mysqld ก็พร้อมสำหรับการเชื่อมต่อฐานข้อมูลใหม่
innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdและinnodb_file_per_table enbled, Data/Index Pages Stored in ibdata1ควรกลับกันไม่ได้หรือ