zoukankan      html  css  js  c++  java
  • MySQL6大日志类型详解

    MySQL的6种日志文件分别是:redo log(重做日志)、undo log(回滚日志)、binlog(二进制日志)、errorlog(错误日志)、slow query log(慢查询日志)、general log(一般查询日志)、relay log(中继日志)

    一、redo log(重做日志)

    1、作用
        确保事务的持久性,防止在发生故障的时间点,有数据没有写入磁盘,再重启MySQL服务的时候,通过redo log进行重做,从而达到事务的持久性
    2、内容
        物理格式的日志,记录的是物理数据页面的修改信息(在某个数据页上做了什么修改)
    3、什么时候产生
        事务开始之后就产生redo log日志,redo log的写入并不是随着事务的提交才写入的,而是在事务的执行过程就开始写入
    4、什么时候结束
        当对应事务的数据都写入到磁盘后,redo log也就完成了
    5、其他说明
        为什么redo log日志写入磁盘文件的时机是逐步写入的,因为redo log日志有一个缓存区,innodb是先将日志写入缓存区,然后再通过3种方式写入磁盘文件
        方式1:Master Thread 每秒一次执行刷新Innodb_log_buffer到redo log文件。
        方式2:每个事务提交时会将redo log刷新到redo log文件。
        方式3:当缓存区的空间少于一半时,会将redo log日志刷新到redo log文件中。

    二、undo log(回滚日志)

    1、作用
        保存了事务发生之前的数据的一个版本,可以用于回滚,同时也提供MVCC的读(快照读),即非锁定读
    2、内容
        逻辑格式的日志,在执行回滚操作时,仅仅是从逻辑层面上恢复到事务开始之前的状态,不是从物理层面操作
    3、什么时候产生
        当事务开始之前,会根据当前版本生成undo log日志,产生undo log时也会产生redo log来保证undo log的可靠性
    4、什么时候释放
        当事务提交之后,undo log不会立刻删除,而是放入待清理的链表中,由purge线程根据其他事务是否可见来决定删不删除

    三、bin log(二进制日志)

    1、作用
        用于复制,在主从复制中,从库利用主库上的bin log文件重播,实现主从同步。用于数据库的基于时间点的还原
    2、内容
        逻辑格式日志,可以简单认为就是执行过的事务中SQL语句

     未完待续...

  • 相关阅读:
    阅读笔记(四)——《代码整洁之道》1
    阅读笔记(一)——《需求工程——软件建模与分析》一
    数据提取
    HIVE数据清洗练习
    第八周hadoop-MapReduce
    小程序新增页面导航栏
    个人课程总结
    第十六周总结

    排序
  • 原文地址:https://www.cnblogs.com/chenhaoyu/p/14570880.html
Copyright © 2011-2022 走看看