最开始 MySQL 里并没有 InnoDB 引擎。MySQL 自带的引擎是 MyISAM,但是 MyISAM没有 crash-safe 的能力,binlog 日志只能用于归档。而 InnoDB 是另一个公司以插件形式引入MySQL 的,既然只依靠 binlog 是没有 crash-safe 能力的,所以 InnoDB 使用另外一套日志系统——也就是 redo log 来实现 crash-safe 能力
区别一
Redo Log是属于InnoDB引擎功能,BinLog是属于Mysql Server自带的功能,并且是以二进制文件记录。
区别二
Redo Log属于物理日志,记录该数据页更新状态内容,BinLog是逻辑日志,记录更新过程。
redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日志, 记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。
区别三
Redo Log日志是循环写,日志空间大小是固定的,BinLog 是append写入,写入一个写下一个,不会覆盖使用。
区别四
Redo Log作为服务器宕机后事务数据自动恢复使用,BinLog可以作为主从复制和数据恢复使用,binlog没有自动crash-safe能力。