MySQL6大日志类型详解

2021年11月25日 阅读数:4
这篇文章主要向大家介绍MySQL6大日志类型详解,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

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

1、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文件中。

 

2、undo log(回滚日志)spa

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

 

3、bin log(二进制日志)线程

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

 未完待续...日志