只要redo log 和 binlog 保证持久化到磁盘,就能确保mysql异常重启后数据恢复
binlog 写入流程
- 日志先写binlog cache,提交的时候写入binlog
- 同一个事务的binlog不能被拆开
- 区分write:日志写入page cache,速度快;fsync:数据持久化到磁盘,速度慢
redolog写入
- InnoDB 有一个后台线程,每隔 1 秒,就会把 redo log buffer 中的日志,调用 write 写到文件系统的 page cache,然后调用 fsync 持久化到磁盘。
- 组提交机制,每次写入长度为length的redolog,LSN += length