重做日志(redo log)
作用:
确保事务的持久性。
防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行数据恢复,所以管它叫重做
回滚日志(undo log)
作用:
保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读
二进制日志(binlog):
作用:
1,用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。
2,用于数据库的基于时间点的还原。
举例子:
要对一条数据的age=66改为 77,其实是进行了很多步操作,生成了好几个日志log
- 从磁盘找到这行数据加载到BufferPool,
- 这时就要在BufferPool把值 update table set age=77 where id =1 ,
- 并生成对应 的redo log,当commit时可用于持久化
- 同时生成binlog持久化 ,
- 还要生成对应的undo log 就是redo的反向操作, update table set age=66 where id =1 ,这样当rollback时可以用。