`
丁林.tb
  • 浏览: 796707 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL源码学习:关于InnoDB ib_logfile的 “顺序写”

阅读更多

同事问起线上的"诡异"现象:已经在使用ib_logfile2,但ib_logfile0的更新时间也在改变,不是说是顺序更新的?

 

1、              ib_logfiles文件及作用

大家都知道这个是InnoDBredolog。关于redolog的写入策略部分,可以看我之前的这个文章(链接)。

这个系列文件个数由参数innodb_log_files_in_group控制,若设置为4,则命名为ib_logfile0~3

很多文章都指出这些文件的写入是顺序、循环写的,logfile0写完从logfile1继续,logfile3写完则logfile0继续。

 

      ib_logfiles的作用,主要是在系统崩溃重启时,作事务重做的。而在系统正常时,每次checkpoint时间点,会将之前写入的事务应用到数据文件中。因此有一个问题:系统重启之后,怎么知道checkpoint做到哪儿了?

2、              Ib_logfilecheckpoint field

实际上不仅要记录checkpoint做到哪儿(LOG_CHECKPOINT_LSN),还要记录用到了哪个位置(LOG_CHECKPOINT_OFFSET)等其他信息。所以在ib_logfile0的头部预留了空间,用于记录这些信息。

因此即使使用后面的logfile,每次checkpoint完成后,ib_logfile0都是要更新的。同时你会发现所谓的顺序写盘,也并不是绝对的:)

 

3、              相关的一些数字

    a)  InnoDB留了两个checkpoint filed,按照注释的解释,目的是为了能够“write alternately

    b)  每个checkpint field需要的大小空间为304字节。(相关定义在log0log.h)

    c)  第一个checkpoint的起始位置在ib_logfile0的第512字节(OS_FILE_LOG_BLOCK_SIZE)处;

   d) 第二个在1536 (3 * OS_FILE_LOG_BLOCK_SIZE)字节处。

0
0
分享到:
评论

相关推荐

    Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题

    然而,在某些情况下,可能会遇到一个特定的问题,即“Error: log file ./ib_logfile0 is of different size 0 5242880 bytes”,这通常意味着InnoDB的日志文件大小与MySQL配置文件中设置的大小不匹配。 日志文件...

    mysql 有关“InnoDB Error ib_logfile0 of different size”错误

    当遇到"InnoDB Error ib_logfile0 of different size"错误时,意味着MySQL在启动时检测到当前的InnoDB日志文件(ib_logfile0和ib_logfile1)的大小与配置文件(my.cnf)中指定的大小不匹配,这可能导致数据库无法...

    :innodb_flush_log_at_trx_commit 和 sync_binlog1

    首先,`innodb_flush_log_at_trx_commit` 参数是 InnoDB 存储引擎特有的,它控制着事务日志(redo log 和 undo log)何时以及如何被刷新到磁盘上的 ib_logfile 文件。此参数有三个可选值: 1. 当设置为 0 时,...

    MySQL修改innodb_data_file_path参数的一些注意事项

    不推荐的方法是直接将`ibdata1`的大小改为1GB,这通常需要删除现有的`ibdata1`以及日志文件(如`ib_logfile0`和`ib_logfile1`),然后重启服务。这种方法存在风险,因为可能会丢失数据,而且在启动时可能会遇到其他...

    MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error

    5. **InnoDB日志文件问题**:InnoDB使用重做日志文件(`ib_logfile0`和`ib_logfile1`)进行事务持久化。如果这些文件损坏或无法访问,也可能导致启动失败。检查日志文件的状态。 6. **数据文件损坏**:`ibdata1`...

    完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    5. **日志分析**:分析InnoDB的日志文件(ib_logfile*),可能有更多关于异常关闭的记录。 6. **重新创建表空间**:在极端情况下,如果上述方法都无效,可能需要删除并重新创建InnoDB表空间,但这会丢失所有InnoDB...

    Mysql数据库的使用总结之ERROR 1146.docx

    同时,InnoDB存储引擎还依赖于ib_logfile0、ib_logfile1和ibdata1三个文件,这三个文件的错误都会导致ERROR 1146错误的出现。 ERROR 1146错误的解决方法 解决ERROR 1146错误的方法是首先将skip-innodb注释掉,然后...

    关于MySQL数据迁移–data目录直接替换注意事项的详解

    近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B。...结果启动失败,报出 “无法启动MySQL服务”异常,查看错误日志,发现问题描述如下:InnoDB: Error: log file ./ib_logfile

    MySQL无法启动1067错误的又一种解决方法(机房断电)

    2. **删除用户数据库文件和日志文件**:进入datadir目录,找到并删除所有用户数据库文件(通常是`.frm`、`.MYD`和`.MYI`文件)以及InnoDB的日志文件`ib_logfile0`和`ib_logfile1`。这些文件可能已经损坏,删除它们...

    MySQL和IO 上1

    首先,MySQL的文件系统包含多种类型的文件,如数据文件(*.frm, *.ibd)、数据字典(ibdata1, ibdata2)、事务日志(ib_logfile0, ib_logfile1)、回滚日志、归档日志(binlog)和中继日志(relaylog),以及各种...

    Mysql InnoDB删除数据后释放磁盘空间的方法

    3. 删除InnoDB相关的所有数据文件,包括ibdata1(系统表空间文件)和ib_logfile*(重做日志文件)。 4. 重启MySQL服务,系统会自动重建这些必要的文件。 5. 最后,导入之前备份的数据库文件,恢复数据。 具体的命令...

    mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

    通常,InnoDB的数据文件位于MySQL的data目录下,包括ibdata1和一系列的ib_logfile*文件。 4. **修改MySQL配置**: 配置文件my.cnf或my.ini(取决于你的操作系统)控制MySQL服务器的行为。在配置文件中,确保`...

    MySQL不支持InnoDB的解决方法

    G一下后,解决如下: /var/lib/mysql目录下,删除ibdata1、ib_logfile1、 ib_logfile0,然后重启MySql让其重建以上文件: mysqladmin -uroot -p shutdown sudo mysqld_safe & 搞定! 下面是网络上的其它文章。大家也...

    innodb 库的备份注意点(由phpmyadmin引起的解决方案)

    这个引擎的使用跟mysql/data/目录下的ibdata1, ib_logfile0, ib_logfile1有关连, 这三个文件加起来有40Mb, xampps总不可能把它打包进去吧. 当数据库有innodb的引擎表时, 删除掉[ibdata1, ib_logfile0, ib_logfile1]...

    关于MySQL数据迁移--data目录直接替换注意事项的详解

    InnoDB存储引擎的日志文件(`ib_logfile0`和`ib_logfile1`)的大小由`innodb_log_file_size`参数控制。在迁移过程中,如果忽视了这个参数,就会导致服务启动失败。 解决这个问题的步骤是: 1. 查看错误日志,找出...

    MySQL从MyISAM转换成InnoDB错误与常用解决办法

    例如,在MySQL的安装目录下的Data文件夹中找到并删除ib_logfile0和ib_logfile1两个文件,然后重启MySQL服务。 2. **修改配置文件** - **解决方案**:检查my.ini配置文件中的InnoDB日志文件设置是否正确。通常情况下...

    MySQL数据库文件放在哪里.pdf

    - `ib_logfile0`和`ib_logfile1`:这些是InnoDB事务日志文件,记录了未提交的事务信息,用于在系统崩溃时进行恢复。 MySQL的文件布局可以根据实际需求进行调整,例如,为了优化性能或提高数据安全性,可以将数据...

Global site tag (gtag.js) - Google Analytics