binlog和redolog的区别
binlog
(二进制日志)和redolog
(重做日志)在MySQL数据库中扮演着不同的角色,服务于不同的目的。以下是它们的主要区别:
Binlog (Binary Log)
- 作用:
binlog
主要用于数据恢复、数据复制(主从复制)和审计。它记录了所有改变数据的SQL语句,包括DDL(数据定义语言)和DML(数据操纵语言)语句。 - 记录内容:
binlog
记录的是数据库的逻辑变化,它提供了三种日志格式:statement
(基于SQL语句的复制)、row
(基于行的复制)和mixed
(混合模式)。 - 记录时机:
binlog
在执行SQL语句时生成,它是语句级别的记录方式,由MySQL的Server层进行记录。 - 使用场景:
binlog
常用于数据的备份和恢复,以及主从数据库的同步。
Redolog (Redo Log)
- 作用:
redolog
主要用于实现事务的持久性,确保在数据库崩溃后可以恢复未完成的事务,并保证已提交事务的持久性。它确保了事务的ACID特性中的持久性(Durability)。 - 记录内容:
redolog
记录的是物理变化,即数据页在磁盘上的实际更改。这使得在崩溃恢复时可以直接应用到数据页上,而无需解析SQL语句。 - 记录时机:
redolog
是在InnoDB存储引擎层面操作的,它在事务提交时被写入,是事务级别的记录方式。 - 使用场景:
redolog
主要用于保证数据的持久性和一致性,以及在数据库崩溃后的恢复。
其他差异
- 存储位置:
binlog
由MySQL Server管理,而redolog
是InnoDB存储引擎特有的。 - 写入方式:
binlog
可以追加写入,写满一个文件后会创建新文件继续写入,不会覆盖旧日志。redolog
是循环写入的,空间固定,写满后会从头开始覆盖旧日志。 - 可见性:
binlog
对外部是可见的,可以手动管理和查看。redolog
对用户是不可见的,由InnoDB引擎自动管理。
收藏文章数量从多到少与“把书读薄”是一个道理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2022-06-28 随笔七:度量工程生产力