MySQL 日志
Binlog 日志
- 文件形式:xxx.000001
- 作用:主从复制、MySQL 数据恢复 ⭐️
- Binlog 存储格式
- mixed 下 now 函数仍然采用原 SQL 语句原因
- statement 无法替代 row 格式的原因 ⭐️
- 存储时机 ⭐️
- 一个事务的 Binlog 不能拆开,无论事务有多大,也要确保一次性写入。所以系统会给每个线程分配一块内存作为 binlog cache。若超过,则暂存到磁盘。
- 刷盘时机、Binlog 配置、日志内容 MySQL Binlog 日志查看 ⭐️
Redolog 日志
- 背景:脏数据随机写(刷盘)→顺序写 redolog
- 作用:crash-safe + 随机 → 顺序写
- Redolog 刷盘时机 ⭐️
- MySQL redolog 两阶段提交与容灾恢复 ⭐
- Redolog 日志文件组
- Redolog 检查点 ⭐
- Redolog 组提交 ⭐
- Redolog 配置
- Redolog LSN ⭐
- 问题定位:数据库抖动 & redolog 刷脏页 ⭐
Undolog 日志
- 作用:宕机时回滚事务 + 支持 MVCC 数据一致性
- 类型:插入 & 更新 undolog
- 两种 undolog 删除时机
- 为什么没有 delete undolog?
慢查询日志
其他日志
- 错误日志、查询日志等等
综合
- ⭐ Redolog Binlog 详细问题
- MySQL 日志的其他问题
- SQL更新语句是如何执行的?
- 三个日志的生成过程/更新数据过程
准备更新数据-判断 buffer pool 中是否存在数据-没有则将数据页加载到 buffer pool 中-写入 undolog-更新 buffer pool 中数据-写入 redolog buffer (prepare)-提交阶段-写入 binlog cache-redolog (commit)。 - ……