Mysql-4-redo、undo、binlog

2024-03-10 21:03:27 浏览数 (1)

https://www.jianshu.com/p/20e10ed721d0

代码语言:java复制
1、binlog(归档日志):MySQL 自带的日志模块,是一个二进制格式的文件,用于"记录用户对数据库更新的SQL语句信息"。
                    主要作用:主从复制、数据恢复
2、undo_log(回滚日志):用于保证数据的原子性,记录数据修改之前的数据,可以用于回滚(记录旧数据)
                    主要作用:事务回滚、实现多版本控制(MVCC)
3、redo_log(重做日志):记录事务的修改操作的日志,用来崩溃后的数据恢复(记录新数据),InnoDB 引擎自带了日志模块。
                    主要作用:当有增删改相关的操作时,会先记录到 Innodb 中,并修改缓存页中的数据,
                             等到 mysql 闲下来的时候才会真正的将 redolog 中的数据写入到磁盘当中。
	redo_log 采用两阶段提交的方式:
    	redo_log(prepare):记录新数据,更新redo_log状态为预提交状态。
    redo_log(commit):更新redo_log状态为提交状态。

1、redo log:在InnoDB存储引擎中,大部分Redo log记录的是物理日志,即数据页的物理变化。
             主要用于解决数据库崩溃后安全恢复。
             一般由两个部分组成:
                            1、内存中重做日志缓冲(redo log Buffer)易丢失,在内存中;
                            2、重做日志文件(redo log file),保存在磁盘中。
   redo log写入时机:数据页修改完成后,在脏页刷出磁盘之前,写入redo log日志。注意是先修改数据,在写入日志。

2、undo log:主要记录的是数据的逻辑变化,为了在发生错误时回滚之前的操作,需要将之前的操作都记录下来,然后在发生错误时才可以回滚。
            undo log的作用:
                            1、用于事务的回滚(保证原子性);
                            2、用于MVCC(保证一致性);

0 人点赞