ฉันต้องการที่จะเข้าใจไฟล์ 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
ควรกลับกันไม่ได้หรือ