- binlog还不能去掉。
一个原因是,redolog只有InnoDB有,别的引擎没有。
另一个原因是,redolog是循环写的,不持久保存,binlog的“归档”这个功能,redolog是不具备的。
2.Redo log不是记录数据页“更新之后的状态”,而是记录这个页 “做了什么改动”。
Binlog有两种模式,statement 格式的话是记sql语句, row格式会记录行的内容,记两条,更新前和更新后都有。
我的理解,redo log记录的是当时的数据是怎么变化的,比如备份的时候记录table表中字段a的值是1→3(由1变成3),而binlog里面记录可能就是多条SQL执行之后a的值才等于3,比如update table set a =1 where ID=1;update table set a=3 where ID=1;或者执行过更多SQL才变成3。
1 prepare阶段 2 写binlog 3 commit
当在2之前崩溃时
重启恢复:后发现没有commit,回滚。备份恢复:没有binlog 。
一致
当在3之前崩溃
重启恢复:虽没有commit,但满足prepare和binlog完整,所以重启后会自动commit。备份:有binlog. 一致