1、binlog日志
binlog叫做归档日志 binlog不是InnoDB存储引擎特有的日志文件(redo log 属于InnoDB存储引擎特有的),是属于mysql server 自己的日志文件
提交事务的时候会把redo log 日志写到磁盘文件中去,同时也会把这次更新对应的binlog 日志写入到磁盘文件中去
2、binlog 日志的刷盘策略
sync_binlog参数可以控制binlog的刷盘策略,默认值是 0
2.1、为0时 :在提交事务的时候 是先写入 os cache缓存中,此时如果宕机os cache 里的binlog日志是会丢失的
2.2 为1时:提交事务的时候,会把binlog日志直接写入到磁盘中(比较强硬,提交数据就不会丢失)
3、基于binlog 和redo log完成事务的提交
当我们吧binlog 写入磁盘文件后,此时会把本次更新的binlog 文件名称和这次更新binlog日志在文件里的位置,写入到redo log 日志文件中,并同时redo log日志文件里写入commit标记这样事务才算完事!
4、最后一步redo日志写入commit标记的意义是什么?
目的是为了保持 redo log日志与binlog 日志的一致