redo log
作用:用于崩溃恢复,保证数据持久性和完整性
刷盘时机:默认每次事务提交都会进行刷盘操作
事务在更新数据的时候就会写redo log,只不过这时只写进redo log buffer,不刷盘一旦崩了就丢失数据了,(后台有每隔一秒刷一次盘的线程)
redo log在硬盘上是以日志文件组的多文件形式存储,而且多文件之间采用环形数组形式,从头向尾写
bin log
作用:记录表更新内容,用于数据备份、主从同步数据,保证数据一致性
写入机制:事务启动,binlog先写进缓存,事务提交的时候才会刷到磁盘中
两阶段提交
redo log(重做日志)让InnoDB存储引擎拥有了崩溃恢复能力。
binlog(归档日志)保证了MySQL集群架构的数据一致性。
两阶段提交时为了保证两个日志一致。
过程:在事务中,修改数据,写入redo log(prepare阶段),提交事务,写入bin log,设置redo log(commit)阶段。只要redo log(prepare阶段)和bin log数据一致,事务提交就可以成功
undo log
用于回滚异常操作