mysql中的iblog文件究竟是什么

Uda*_*day 18 mysql innodb logs

我想了解这些 ibdata 文件,因为它们在崩溃恢复过程中起着至关重要的作用。我无法通过网络找到合适的资源。

Rol*_*DBA 18

ibdata1

文件 ibdata1 是 InnoDB 基础设施的系统表空间。

它包含几个对 InnoDB 至关重要的信息类

  • 表数据页
  • 表索引页
  • 数据字典
  • MVCC 控制数据
    • 撤消空间
    • 回滚段
  • 双写入缓冲区(在后台写入的页面以避免操作系统缓存)
  • 插入缓冲区(对二级索引的更改)

单击此处查看图示

您可以通过启用innodb_file_per_table 将数据和索引页与 ibdata1 分离。这将导致任何新创建的 InnoDB 表将数据和索引页存储在外部.ibd文件中。

例子

  • 数据目录是/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信息以支持ACID 合规性事务隔离

这是我过去关于从 ibdata1 中分离表数据和索引的文章

iblog 文件(又名ib_logfile0, ib_logfile1

如果您想知道ib_logfile0ib_logfile1的用途,它们是 InnoDB 重做日志。在 mysqld 完全正常关闭之前,它们不应该被擦除或调整大小。如果 mysqld 崩溃,只需启动 mysqld。它将读取ib_logfile0ib_logfile1检查任何未发布到ibdata1. 它将重播(重做)这些更改。一旦它们被重放和存储,mysqld 就为新的数据库连接做好了准备。