美文网首页
mysql redo log

mysql redo log

作者: frankie_cheung | 来源:发表于2022-03-15 09:48 被阅读0次

    redo log 是什么

    redo log 是mysql innodb引擎下的一种物理日志,记录数据页的修改记录。
    redo log 的作用主要是

    • 崩溃恢复,数据库实例在重启的时候,总会重新加载redo log里面的日志信息(last checkpoint之后的)
    • 更加快的commit,数据库写redo log 是追加写,写完就可以commit,后续数据页持久化到ibd文件是后台线程在刷,即刷脏页。

    redo log 刷新策略

    show engine innodb status
    可以看的如下信息

    Log sequence number 2830566 日志序列号值
    Log flushed up to   2830566 redo 刷新到磁盘的值
    Pages flushed up to 2830566 下次做checkpoint 的值
    Last checkpoint at  2830557 checkpoint的值,这个值之前的代表已经刷新到ibd文件,不需要检查,这个值之后的才需要进行崩溃恢复
    0 pending log flushes, 0 pending chkp writes
    97 log i/o's done, 0.00 log i/o's/second
    
    innodb_flush_log_at_trx_commit 含义
    0 从redo log buffer 每秒刷新到磁盘
    1 commit后就刷新到磁盘
    2 commit后只刷新到文件系统缓冲里

    redo log 配置

    redo log 可以通过innodb_log_files_in_group 来配置为多个
    innodb_log_file_size 来表示redo log的大小
    例如如下
    innodb_log_files_in_group =16
    innodb_log_file_size =256M

    innodb_log_buffer_size =64M

    log block

    redo log 在buffer和磁盘都是按照512字节进行存贮的,磁盘扇区也是512字节,所以buffer的 log block 刷新到磁盘是原子的。不需要doublewrite

    相关文章

      网友评论

          本文标题:mysql redo log

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