日志系统
日志系统概述
三种核心日志
MySQL Server 层
┌──────────────────┐
│ Binlog │ ─→ 主从复制、数据恢复
│ (二进制日志) │
└────────┬─────────┘
│
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┼─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
│
InnoDB 存储引擎层
┌───────────────────┼───────────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌────▼────┐
│Redo Log │ │ Undo Log │ │ Buffer │
│ (重做) │ │ (回滚) │ │ Pool │
│ 持久性 │ │ 原子性 │ │ │
└─────────┘ └───────────┘ └─────────┘日志与 ACID 的对应关系
日志
层级
保证的特性
核心作用
日志的协作关系
Redo Log 深入 ⭐⭐⭐⭐⭐
Redo Log 的本质
循环写机制 ⭐⭐⭐⭐⭐
Log Sequence Number (LSN) ⭐⭐⭐⭐
Mini-Transaction (mtr)
Redo Log Buffer 刷盘时机 ⭐⭐⭐⭐
触发条件
说明
innodb_flush_log_at_trx_commit 深入 ⭐⭐⭐⭐⭐
值
行为
崩溃影响
性能
适用场景
Checkpoint 机制详解 ⭐⭐⭐⭐
类型
触发条件
特点
查看 Redo Log 状态
Undo Log 深入 ⭐⭐⭐⭐⭐
Undo Log 的本质
Undo Log 的两种类型 ⭐⭐⭐⭐
类型
对应操作
提交后
用途
Undo Log 的存储结构 ⭐⭐⭐⭐
版本链的形成 ⭐⭐⭐⭐⭐
Purge 机制详解 ⭐⭐⭐⭐
长事务的危害 ⭐⭐⭐⭐⭐
查看 Undo Log 状态
Binlog 深入 ⭐⭐⭐⭐
Binlog 的本质
Binlog vs Redo Log ⭐⭐⭐⭐⭐
特性
Redo Log
Binlog
Binlog 格式详解 ⭐⭐⭐⭐⭐
STATEMENT 格式
ROW 格式
MIXED 格式
格式选择建议
场景
推荐格式
原因
sync_binlog 参数 ⭐⭐⭐⭐
值
行为
性能
安全性
Binlog 实用命令
两阶段提交 ⭐⭐⭐⭐⭐
为什么需要两阶段提交
两阶段提交流程 ⭐⭐⭐⭐⭐
崩溃恢复场景分析 ⭐⭐⭐⭐⭐
崩溃时间点
Redo Log 状态
Binlog 状态
恢复策略
XID 的作用 ⭐⭐⭐⭐
崩溃恢复机制
InnoDB 崩溃恢复流程 ⭐⭐⭐⭐
Double Write Buffer ⭐⭐⭐⭐
恢复时间影响因素
因素
影响
优化建议
日志参数调优
Redo Log 参数
Binlog 参数
"双一" 配置详解 ⭐⭐⭐⭐⭐
配置组合
安全性
性能
适用场景
面试高频问题 ⭐⭐⭐⭐⭐
Q1: Redo Log 和 Binlog 的区别?
维度
Redo Log
Binlog
Q2: 为什么需要两阶段提交?
Q3: innodb_flush_log_at_trx_commit 各值的含义?
值
行为
数据丢失风险
Q4: Binlog 为什么推荐 ROW 格式?
Q5: Undo Log 的两个作用?
Q6: 长事务对 Undo Log 有什么影响?
Q7: MySQL 崩溃恢复是如何进行的?
Q8: 如何保证 MySQL 数据不丢失?
Q9: Redo Log 的 checkpoint 机制?
Q10: Redo Log 为什么能提高写入性能?
总结
核心要点 ⭐⭐⭐⭐⭐
日志
作用
实现的特性
记住这些关键点
Last updated