好的!这两个是 MySQL 面试核心知识点,下面详细解释:
内容 | binlog(归档日志) | redolog(重做日志) |
---|---|---|
属于 | MySQL 层(Server 层) | InnoDB 存储引擎层 |
作用 | 记录所有修改数据库的数据操作(逻辑日志) | 保障事务的持久性(崩溃后可恢复数据) |
存储内容 | SQL 语句或事件(INSERT、UPDATE、DELETE) | 物理页修改(物理日志) |
写入时机 | 执行完 SQL 后写入 | 执行 SQL 时先写入 |
落盘时机 | 事务提交时一次性写入 | 先写入 redo buffer,刷盘由策略控制 |
应用场景 | 主从复制、数据恢复、闪回 | 崩溃恢复(Crash Recovery) |
关系点 | 描述 |
---|---|
顺序 | redo log 先写入,binlog 后写入(事务提交时) |
事务一致性 | 两者缺一不可,双保险机制,MySQL 实现 两阶段提交 保证 binlog 和 redolog 一致 |
崩溃恢复靠谁? | redolog |
主从复制靠谁? | binlog |
✔ Redolog:确保崩溃后能恢复,保证 InnoDB 事务的持久性
✔ Binlog:用于 主从复制、数据恢复,可跨存储引擎
MySQL 有两种核心日志:redolog 和 binlog。
redolog 属于 InnoDB 存储引擎层,保证事务的持久性(WAL机制),主要用于崩溃恢复;
binlog 属于 MySQL Server 层,记录所有修改操作,主要用于主从复制和数据恢复。
二者在事务提交时通过两阶段提交机制协同保证事务一致性。