首先,从体系结构上来讲:
binlog由数据库上层(server 层)生成,是SQL执行的逻辑日志。
redo log是存储引擎(innodb事务引擎)层面的物理格式的日志,记录的是对于每个页的修改。
作用上的区分:
binlog用来进行数据恢复(基于时间点的) 和 主从复制。
redolog用来保证事务的持久性,以及 crash recovery 。
生成和结束的时间机制也不一样:
InnoDB的redolog在事务进行中不断地被写入,而binlog在事务提交完成后进行一次写入
所以事务提交过程中,redo-log 先封口,然后在server 层生成bin-log.