• mysql 三个日志总结


    随着学习和工作的深入,渐渐了解到mysql有三个日志,以前只是接触过binlog (在主从同步的时候用)随后就去了解下了具体有哪三个日志和三个日志的具体作用

    一 binlog

            binlog 是记录mysql一条条sql执行记录(增删改)可以说是执行日志了 会不停的往后面追加的,类似redis里的aof,是以二进制存在,

    主要用在主从库同步和误删数据恢复(少量恢复)

    刷盘时间 (sync_binlog参数控制)

    • 0:先写入 os cache,由系统自行判断何时写入磁盘,宕机数据会丢失;(MySQL 5.7.7之前版本的默认值)
    • 1:每次commit的时候都要将binlog写入磁盘;(MySQL 5.7.7之后版本的默认值)
    • N:每N个事务,才会将binlog写入磁盘。 

    刷盘策略我在这就不介绍了

    二 redolog

            redolog 是记录数据修改后的值,是innodb引擎独有的,类似redis的rdb 存储的是mysql的物理数据

    主要用在崩溃恢复、断电恢复,因为redolog是顺序存储的,切是一页页的 有固定大小的 所以恢复起来会比较快

    刷盘时间 (innodb_flush_log_at_trx_commit 参数控制)

    • 值为 0 表示不刷入磁盘
    • 值为 1 表示立即刷入磁盘(默认情况)
    • 值为 2 表示先刷到 os cache

    如果 redo log Buffer 刷入磁盘后,数据库服务器宕机了,在下次重启的时候 MySQL 也会将 redo 日志文件内容恢复到 Buffer Pool 中,因为 redo log buffer 中的数据已经被写入到磁盘了,已经被持久化了 

    三 redo日志与bin日志的区别
            redo log是 InnoDB 存储引擎特有的日志文件,而bin log属于是 MySQL 级别的日志

            redo log记录的东西是偏向于物理性质的,如:“对什么数据,做了什么修改”。

            bin log是偏向于逻辑性质的,类似于:“对 students 表中的 id 为 1 的记录做了更新操作” 两者的主要特点总结如下:

    性质redo Logbin Log
    文件大小redo log 的大小是固定的(配置中也可以设置,一般默认的就足够了)bin log 可通过配置参数max_bin log_size设置每个bin log文件的大小(但是一般不建议修改)。
    实现方式redo log是InnoDB引擎层实现的(也就是说是 Innodb 存储引起过独有的)bin log是 MySQL 层实现的,所有引擎都可以使用 bin log日志
    记录方式redo log 采用循环写的方式记录,当写到结尾时,会回到开头循环写日志。bin log 通过追加的方式记录,当文件大小大于给定值后,后续的日志会记录到新的文件上
    使用场景redo log适用于崩溃恢复(crash-safe)(这一点其实非常类似与 Redis 的持久化特征)bin log 适用于主从复制和数据恢复

    四 undolog

            undolog主要是记录数据被修改前的样子,用户事务回滚使用

    刷盘时间

    在mysql将要更新的数据加载到缓冲区Buffer pool 时同时往 undo 日志文件中插入一条日志,也就是将 id=1 的这条记录的原来的值记录下来。

    更新过程

    准备更新一条 SQL 语句
    MySQL(innodb)会先去缓冲池(BufferPool)中去查找这条数据,没找到就会去磁盘中查找,如果查找到就会将这条数据加载到缓冲池(BufferPool)中
    在加载到 Buffer Pool 的同时,会将这条数据的原始记录保存到 undo 日志文件中

    更复杂的还有mvcc过程会新开一篇来讲

    mysql执行图解

     

  • 相关阅读:
    manim边做边学--数轴
    shell脚本之break和continue
    OpenMV与Arduino通信—串口
    【智能优化算法】从蚁群到动物园
    “2024成都国际电子信息产业展览会”新西部、新重构、新机遇
    【求助】基于Ascend910的MindSpore训练无法复现GPU上的模型效果
    mysql的分库分表
    位深bitdepth是什么
    URI 和 URL
    OpenLayers-要素属性信息简单弹窗
  • 原文地址:https://blog.csdn.net/qq_42849214/article/details/125411610