0x01 MySQL 逻辑架构图
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 日志不丢失 |
“两阶段写”:两阶段提交是跨系统维持数据逻辑一致性时常用的一个方案,redo log 和 binlog 都可以用于表示事务的提交状态,而两阶段提交就是让这两个状态保持逻辑上的一致。