开篇:MySQL 靠什么保证数据不丢?
飞机有黑匣子,即使坠毁也能还原事故经过。MySQL 也有自己的"黑匣子"——日志系统。
每一次数据变更,MySQL 都会忠实地记录下来。即使在写入过程中突然断电、宕机,重启后也能通过日志恢复到一致的状态,不丢数据(至少在默认配置下如此)。
MySQL 的日志系统由多种日志组成,其中和事务直接相关的核心日志有三种:
| 日志 | 一句话定位 | 谁产生的 |
|---|---|---|
| redo log | 崩溃恢复的保障,保证持久性 | InnoDB 引擎层 |
| undo log | 事务的后悔药,支持回滚和 MVCC | InnoDB 引擎层 |
| binlog | 数据同步的桥梁,用于主从复制和数据恢复 | MySQL Server 层 |
大约 14 分钟