MySQL 提供主从复制功能,实现读写分离,故障转移等功能。但了解主从复制之前,先认识下 SQL 执行的过程,以及过程中涉及到的一系列 log。
update 的执行过程
binlog 是 MySQL 日志,二进制日志记录了语句的原始逻辑。使用追加写 AOF。
relay log 是 MySQL 日志,中继日志,实现主从复制。
redo log 是 InnoDB 日志,重做日志记录了某个数据页上的修改。redo log 把随机IO变为顺序IO,提升效率,使用 write-position、checkpoint 实现的 ring buffer。
undo log 是 InnoDB 日志,回滚日志记录了回滚段,用于生成 MVCC 中的 view。
有三种刷盘机制:延迟写、实时写延迟刷、实时写实时刷,分别实现不同程度的 crash-safe。