- 概念和作用: Binlog(Binary Log)是 MySQL Server 层产生的二进制日志文件,主要用于实现主从复制和数据恢复。在主从复制中,主服务器将变更写入 binlog,并通过 binlog 传送给从服务器,从服务器通过重放 binlog 来实现与主服务器数据的同步。在数据恢复中,可以通过重放 binlog 来将数据库恢复到某个时间点的状态。
- Crash-Safe: Binlog 本身并不能保证 crash-safe,因为在 MySQL 挂掉之前,binlog 可能没有完全写入。为了实现 crash-safe,MySQL 还使用了 Redo Log。Redo Log 记录了数据引擎对数据库进行的修改操作,是 InnoDB 存储引擎的特有日志。在数据库发生 crash 时,可以通过重放 Redo Log 来恢复数据库到 crash 之前的状态。