`
丁林.tb
  • 浏览: 789973 次
  • 性别: 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 的问题

    InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 现在需要做的事情就是把原来的 innodb 的ib_logfile×备份到一个目录下,然后删除掉原来的文件,重启 mysql。 你会看到ib_logfile*...

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

    mysql 有关“InnoDB Error ib_logfile0 of different size”错误的解决方法,需要的朋友可以参考下。

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

    主要介绍了MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

    mysql5.5与mysq 5.6中禁用innodb引擎的方法

    今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5m,原来是迁移的时候从mysql5.0迁移到了5.5,而5.5关闭innodb启动不起来,于是我就...

    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 5.0.96 for Windows x86 32位绿色精简版安装教程

    MySQL 5.0 因为“高级功能”少而成为一代经典...二、ib_logfile0和ib_logfile1: INNODB类型表的错误日志 删除。如果使用INNODB引擎会重建。 三、*.pdb文件、mysqld-debug.*文件: 是VS生成的用于调试的,用于Windows版

    mysql数据库my.cnf配置文件

    不论事务是否已经提交)默认的日志文件是ib_logfile0,ib_logfile1 # 1:当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。 # 2:如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每...

    解决 MySQL 3534 Error

    目录MySQL 3534 Error1. 问题2. 解决步骤3. Bug 日志 MySQL 3534 Error 1. 问题 使用 Mac Windows 时,MySQL Server 不能正常运行。...-2017-11-07T12:25:58 [ERROR] InnoDB: File .\ib_logfile101

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

    1.删除datadir 下的用户数据库文件 和 日志文件 (ib_logfile0,ib_logfile1)。 2.删除innodb表空间ibdata1 3.启动mysql服务: 4.导入数据: 5.检查数据: 虽然这方法简单,但需要mysqldump导出的数据文件进行...

    windows无法启动MySQL服务报错1067的解决方法

    突然登陆MySQL时,出现禁止访问或者无法连接到数据库,...2、删除在MySQL安装目录下的Data目录中的ib_logfile0和ib_logfile1 3、找到在配置MySQL服务器时指定的InfoDB目录删除掉ibdata1 根据my.ini文件中: #*** INN

    碰到MySQL无法启动1067错误问题解决方法

    1.删除datadir 下的用户数据库文件 和 日志文件 (ib_logfile0,ib_logfile1)。 2.删除innodb表空间ibdata1 3.启动mysql服务: 4.导入数据: 5.檢查數據: 虽然这方法简单,但需要mysqldump導出的數據文件進行...

    Mysql IO 内存方面的优化

    这里使用的是mysql Ver 14.14 Distrib 5.6.19, for Linux (i686) using EditLine wrapper 一、mysql目录文件 ibdata1:系统表空间 包含...ib_logfile0/ib_logfile1:事务日志/redolog mysql-relay-bin:中继日志 bin

    mysql 误删除ibdata1之后的恢复方法

    如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*,应该怎样恢复呢

Global site tag (gtag.js) - Google Analytics