美文网首页
mysql binlog日志与redo log

mysql binlog日志与redo log

作者: dingking | 来源:发表于2020-10-29 14:49 被阅读0次

    mysql日志含有server层的binlog日志(逻辑归档日志),在innodb存储引擎下的redo log日志(物理日志,记录修改信息)

    binlog日志

    在进行数据更新操作的时候,会在server层对每一笔更新操作进行记录

    redo log日志

    innodb存储引擎会把更新的数据先记录到redo log里面,等到合适的时机刷到磁盘,也就是WAL(Write-Ahead Logging),它的关键点就是先写日志,再写磁盘.
    redo log是固定的大小,比如是1G,分四个文件,就是可以存储4G,而文件的结构有点像循环链表。如下图

    image.png
    write pos 是当前记录的位置,一边写一边后移,写到第 3 号文件末尾后就回到 0 号文件开头。checkpoint 是当前要擦除的位置。而write pos 与checkpoint 就是可以写的空白,当write pos 追上checkpoint时需要暂停刷一些数据到磁盘。之后继续写。

    其中记录日志的步骤

    比如你更新下面的sql

    uupdate person set age=12 where id=1;
    
    1. 先去查询数据,先看内存是否有,如果没有则磁盘获取,并刷入内存
    2. 把age设置为12,并更新到内存
    3. 记录到redo log中,状态为prepare
      4.写入binlog里面
      5.进行事务提交,进入commit状态
    image.png

    相关文章

      网友评论

          本文标题:mysql binlog日志与redo log

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