redo log和binlog是mysql的重要组成部分,下面我就详解4大redo log和binlog的区别@mikechen
1. 用途的区别
Redo Log(重做日志): 主要用于确保数据的持久性和一致性,它记录了已提交事务的更改操作。
以便在数据库崩溃或发生故障时恢复数据到一致状态,以确保已提交的事务更改不会丢失。
Binlog(二进制日志): 主要用于数据复制、数据恢复、审计、分析以及用于实现主从复制、高可用性和数据分发等功能。
它记录了数据库中的更改操作,包括数据更改、表结构更改、DDL语句等。
2.记录内容的区别
Redo Log: 记录已提交事务的更改操作,包括:INSERT、UPDATE、DELETE等,以及相关的数据页更新。
Binlog: 记录数据库中的所有更改操作,不仅包括数据更改,还包括DDL语句。
比如:CREATE TABLE、ALTER TABLE等,以及其他管理操作,它保存了所有的数据库活动。
3.内容类型的区别
Redo Log: 包含了更改前和更改后的数据,用于重放已提交事务的更改。
Binlog: 包含了SQL语句或二进制数据,用于重建数据库的更改操作。
4. 生命周期的区别
- Redo Log: 通常会被循环写入,旧的Redo Log记录会被新的记录覆盖,这是因为它主要用于数据恢复,不需要保留历史记录。
- Binlog: 通常需要保留一段时间,以支持数据复制、数据恢复、审计和分析等功能,它的生命周期通常较长,可以根据需求配置。
综上所述,Redo Log主要用于确保数据持久性和一致性,而Binlog用于支持数据复制、数据恢复、审计、分析以及高可用性等更广泛的应用。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》