0x01 MySQL 逻辑架构图

Part Ⅰ | 基础 - 图1

0x02 redo log & binlog

redo log binlog
物理日志 逻辑日志
保证 crash-safe 能力
InnoDB 引擎特有 Server 层实现,所有引擎都可以使用
循环写 “追加写”— 或者说是”归档”,binlog 日志写到一定大小后会切换到下一个,而不会覆盖以前的日志
tip设置(默认) innodb_flush_log_at_trx_commit=1 ,表示每次事务的 redo log 都持久化到磁盘,保证Mysql 异常重启后数据不丢失;设置(默认)sync_binlog=1,表示每次事务的 binlog 都持久化到磁盘,保证 Mysql 异常重启后 binlog 日志不丢失

image.pngimage.png

“两阶段写”:两阶段提交是跨系统维持数据逻辑一致性时常用的一个方案,redo log 和 binlog 都可以用于表示事务的提交状态,而两阶段提交就是让这两个状态保持逻辑上的一致。

0x03 MySQL 事务原理