美文网首页
innodb redo log

innodb redo log

作者: wuqingfeng | 来源:发表于2022-06-16 16:53 被阅读0次

    # 文章概述

    对innodb特有的两种日志redo log和undo log中的redo log基本概念、应用场景进行描述。

    # 基本概念

    redo log是一种write ahead log,事务提交时,先写重做日志再修改页;当由于发生宕机而导致数据丢失时,就可以通过重做日志来完成数据的恢复。

    # 写入过程

    默认情况,InnoDB存储引擎的数据目录下会有两个名为ib_logfile1和ib_logfile2的文件。每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组下至少有2个重做日志文件。

    innodb采用循环写的方式对redo log进行写入,InnoDB存储引擎先写ib_logfile1,当达到文件最后时,会切换至重做日志文件ib_logfile2。

    使用图片表示如下:

    ![yafz6czi5d.png](https://img.haomeiwen.com/i2413244/678f3474e34eafec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    # 相关操作

    ```mysql

    #查看redo log日志状态

    SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled';

    #启用 redo log

    ALTER INSTANCE ENABLE INNODB REDO_LOG;

    ```

    # 数据恢复

    LSN(log sequence number)它是一个不断递增的 unsigned long long 类型整数,用于记录日志序号。通过LSN,可以具体的定位到其在redo log文件中的位置。

    下图展示了当数据库在 LSN 为10000时发生宕机,恢复操作仅恢复LSN10000-LSN13000范围内日志

    ![s65sst15dc.png](https://img.haomeiwen.com/i2413244/5aef3fdece29dd0c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    # 参考资料

    [mysql8 innodb redo log](https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html)

    相关文章

      网友评论

          本文标题:innodb redo log

          本文链接:https://www.haomeiwen.com/subject/uapfvrtx.html