- • 定位数据页 → 加载进 Buffer Pool + 加独占锁
- • 写 undo 日志(旧值,可回滚)
- • 更新 Buffer Pool → 脏数据
- • 写 redo log buffer → 提交时按策略刷盘
- • binlog 刷盘 → redo log 打 commit 标记
- • 后台 IO 线程择机把脏页刷回磁盘
- • innodb_flush_log_at_trx_commit:0 不刷 / 1 必刷 / 2 到 os cache
- • 生产建议 = 1:提交成功数据绝不丢
- • sync_binlog:0 写 os cache / 1 强制写磁盘
- • 要严格不丢数据:两个参数都配 1
- • redo log 刷盘 → binlog 刷盘 → redo log 打 commit 标记
- • 三步全完成才算提交成功
- • 中途宕机:无 commit 标记 → 事务判失败
- • 避免"redo 有记录、binlog 没有"的不一致
- • 这是主从复制(靠 binlog)可靠性的基石