MySQL中的redolog/undolog/binlog

一、概述

binlog/redolog/undolog都是msql中的日志模块,binlog一般被称为二进制日志(也成为归档日志),redolog成为重做日志,undolog称为回滚日志。其中二进制日志是mysql服务层实现的,redolog和undolog是引擎层实现的

binlog记录的数据库记录的改动日志,如:记录ID = 2这条记录的字段A加1,它主要用户数据的同步和复制。redolog记录的是物理层面的改动日志,如:记录某个扇区的某个字节修改成了1,它主要用于数据重做。undolog和binlog差不多,也是记录的逻辑日志,它主要用于MVCC中记录回滚。

redolog和undolog只存在于innodb中,myisam引擎并没有实现,这两个日志在innodb中统称为事务日志(myisam不支持事务的原因)。但要注意的是,虽然undolog和redolog都能恢复数据,但undolog并不是redolog的逆向操作。undolog用于回滚,redolog用于前滚。

关于前滚和回滚:

前滚:事务提交之后,部分数据写入了磁盘,但是还部分数据存在脏页上,并没写入磁盘。此时设备宕机,没写入磁盘的数据丢失。就要依赖redolog来恢复这部分数据。

回滚:事务还未提交,改动并没完全生效,但是记录已经被修改。此时设备宕机,数据是问题的,就要依赖undolog回滚改动。

大致的工作模型为:

 

原文:MySQL中的redolog/undolog/binlog

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值