อะไรคือไฟล์ iblog ใน mysql


15

ฉันต้องการที่จะเข้าใจไฟล์ ibdata เหล่านี้เพราะสิ่งเหล่านี้มีบทบาทสำคัญในกระบวนการกู้คืนความผิดพลาด ฉันไม่สามารถหาแหล่งข้อมูลที่เหมาะสมผ่านเว็บสำหรับเรื่องนี้

คำตอบ:


17

ibdata1

ไฟล์ ibdata1 เป็นพื้นที่ตารางระบบสำหรับโครงสร้างพื้นฐาน InnoDB

มันมีหลายชั้นสำหรับข้อมูลที่สำคัญสำหรับ InnoDB

  • หน้าข้อมูลตาราง
  • หน้าดัชนีตาราง
  • พจนานุกรมข้อมูล
  • ข้อมูลการควบคุม MVCC
    • เลิกทำ Space
    • ส่วนย้อนกลับ
  • บัฟเฟอร์การเขียนซ้ำ (หน้าเขียนในพื้นหลังเพื่อหลีกเลี่ยงการแคชระบบปฏิบัติการ)
  • แทรกบัฟเฟอร์ (เปลี่ยนเป็นดัชนีรอง)

คลิกที่นี่เพื่อดูภาพแทน

คุณสามารถหย่าข้อมูลและดัชนีหน้าเว็บจาก ibdata1 โดยการช่วยให้innodb_file_per_table สิ่งนี้จะทำให้ตาราง InnoDB ที่สร้างขึ้นใหม่เพื่อจัดเก็บข้อมูลและหน้าดัชนีใน.ibdไฟล์ภายนอก

ตัวอย่าง

  • datadirคือ / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;สร้าง /var/lib/mysql/mydb/mytable.frm
    • เปิดใช้งาน innodb_file_per_table หน้าข้อมูล / ดัชนีเก็บไว้ใน /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table ถูกปิดใช้งานหน้าข้อมูล / ดัชนีที่เก็บไว้ใน ibdata1

ไม่ว่าตาราง InnoDB จะถูกเก็บไว้ไม่มีการทำงานของ InnoDB ต้องมองหาข้อมูลเมตาของตารางและจัดเก็บและเรียกMVCCข้อมูลเพื่อสนับสนุนการปฏิบัติตามกรดและการแยกการทำธุรกรรม

นี่คือบทความที่ผ่านมาของฉันในการแยกข้อมูลตารางและดัชนีจาก ibdata1

ไฟล์ iBlog (aka ib_logfile0, ib_logfile1)

หากคุณต้องการที่จะรู้ว่าสิ่งที่ib_logfile0และib_logfile1มีไว้สำหรับพวกเขาเป็น InnoDB ทำซ้ำบันทึก พวกเขาไม่ควรที่จะลบหรือปรับขนาดจนกว่าจะมีการปิดปกติเต็มรูปแบบของ mysqld ได้ที่สถานที่ หาก mysqld ล่มให้เริ่มต้น mysqld มันจะอ่านข้ามib_logfile0และib_logfile1ตรวจสอบการเปลี่ยนแปลงข้อมูลใด ๆ ที่ไม่ได้โพสต์ลงในบัฟเฟอร์การเขียนibdata1ซ้ำ มันจะเล่นซ้ำ (ทำซ้ำ) การเปลี่ยนแปลงเหล่านั้น เมื่อพวกเขาเล่นซ้ำและเก็บไว้ mysqld ก็พร้อมสำหรับการเชื่อมต่อฐานข้อมูลใหม่


พื้นที่จะถูกเก็บไว้ในล็อกไฟล์เหล่านี้ได้อย่างไร ... ? ฉันหมายถึงถาม ... "สำหรับธุรกรรม innodb ใหม่ว่าจะใช้ไฟล์บันทึกเดียวกันได้อย่างไรหากไฟล์เหล่านี้เต็มไปหมดโดยสิ้นเชิง .... "
Uday

ความคิดเห็นก่อนหน้าของฉันเกี่ยวกับไฟล์ ib_log ....
Uday

1
@ Uday พื้นที่จะไม่ถูกเก็บไว้ในไฟล์ iblog จนกว่า logbuffer จะว่างเปล่า มันเป็นกระบวนการแบบไดนามิกที่พื้นที่บันทึกได้ครอบครองและปล่อยออกมาตามการเปลี่ยนแปลงการทำธุรกรรมจนตรอกบันทึกไว้ในบันทึกบัฟเฟอร์ ล็อกไฟล์เหล่านี้ถูกครอบครองอย่างสมบูรณ์เมื่อคุณทำการโหลดข้อมูลจำนวนมากซึ่งนำไปสู่ข้อผิดพลาดของ Innodb ที่ระบุว่า "InnoDB: ซึ่งเกินความจุของกลุ่มบันทึก" ซึ่งหมายความว่าขนาดไฟล์บันทึกควรใหญ่กว่าเพื่อทำสิ่งต่างๆ หวังว่าคำอธิบายของฉันจะเคลียร์ข้อสงสัยของคุณ
Gopinath

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ควรกลับกันไม่ได้หรือ
rabudde

1
@rabudde ตอนนี้ได้รับการแก้ไขแล้ว ขอขอบคุณอีกครั้ง !!!
RolandoMySQLDBA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.