MySQL中binlog和undolog、redolog

数据库分为两部分,数据库server和存储引擎 ;

数据库server层日志是binlog,存储引擎层日志是undolog和redolo。

数据库server包括连接器,分析器(词法分析,语法分析),优化器和执行器,还有时间、计算等函数,binlog是server层的归档日志,用于回滚或者扩容场景使用。binlog有大小限制,当一个binlog写满后会继续写下一个binlog,不会发生日志覆盖。当需要回滚时,根据全量备份和对应的binlog,可以将数据库回滚成指定时间的记录。但是binlog无法在数据库宕机重启后恢复数据。

存储引擎层的日志是undolog和redolog,undolog用于保证事物原子性,redolog用于保证事物持久性,主要用于数据库宕机重启后数据恢复,当server层调用存储引擎接口修改数据时,操作记录会先写入redolog,在特定时间把redolog中的数据写入磁盘,redolog大小固定,当写满后,需要等待存储引擎将redolog中的日志持久化到磁盘并擦除对应数据后才能继续写。 为了保证binlog和redolog一致性,使用两次提交的方法写数据,先写redolog,此时redolog处于prepare状态,表示随时可提交,在写binlog,成功后再commit提交

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值