作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。 binlog binlog用于记录数据库执行的写入性操作(不包括查询)信息,以二进制的形式保存在磁盘中。binlog是mysql的逻辑日志,并且由Server层进行记录,使用任何存储引擎的mysql数据库都会记录binlog日...
redo log(重做日志):是 Innodb 存储引擎层生成的日志,实现了事务中的持久性,主要用于掉电等故障恢复; binlog (归档日志):是 Server 层生成的日志,主要用于数据备份和主从复制; 回滚日志(undo log) 作用 保存了事务发生之前的数据的一个版本,可以用于回滚,保障原子性 实现多版本并发控制下的读(MVCC)的关键因素之...
redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。 4. undo log 数据库事务四大特性中有一个是原子性,具体来说就是 原子性是指对数据库的一系列操作,要么全部成功,要么全部失败,不可能出现部分成功的情况。 实...
undo log的两个主要作用是【事务回滚】 和 通过ReadView + undo log 实现 【MVCC (多版本并发控制)】 记录内容 不同的SQL修改操作,记录的undo log分别是什么呢? insert 插入操作,会在undo log中记录本次插入的主键id,等事务回滚时,会delete此主键对应的记录, update 更新操作,会记录一条相反的update的undo lo...
redo log是物理日志,记录的是“在某个数据页做了什么修改”,属于Innodb存储引擎。 而binlog日志是逻辑日志,记录内容是语句的原始逻辑,属于MySQL Server层。所有的存储引擎只要发生了数据更新,都会产生binlog日志。 binlog日志的作用 可以说MySQL数据库的数据备份、主备、主主、住从都离不开binlog,需要依赖binlog来...
一, 深入理解Redolog日志底层原理 再看本篇文章之前,可以结合【9】深入理解mysql执行的底层机制 这篇文章来了解mysql内部执行sql的过程。 1,innodb引擎底层事务原理 事务的四大特性主要是是acid,分别是原子性、一致性、隔离性和持久性。其原子性是 通过这个undolog 来保证的,持久性是 通过redolog 来实现的,隔离性...
在MySQL 中一条完整的更新语句会涉及到多个日志文件,即 undo log(回滚日志)、redo log(重做日志)以及 binlog(归档日志),下面对这三种日志进行介绍。 1.undo log 1.1为什么需要 undo log?# 我们知道数据库事务具有 ACID 特性,其中 A(Atomicity)指的是原子性,即事务中的一组操作要么都成功还要都失败。这就引出...
通常我们说MySQL 的“双 1”配置,指的就是 sync_binlog 和 innodb_flush_log_at_trx_commit 都设置成 1。也就是说,一个事务完整提交前,需要等待两次刷盘,一次是 redo log(prepare 阶段),一次是 binlog。2、undo log(回滚日志)顾名思义,主要就是提供了回滚的作用,但其还有另一个主要作用,就是...
binlog :二进制日志是mysql-server层的,主要是做主从复制,时间点恢复使用。 redo log :重做日志是InnoDB存储引擎层的,用来保证事务安全。 undo log : 回滚日志保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。redo log。