redo log 是InnoDB 引擎特有的日志,而 Server 層也有自己的日志,稱為 binlog (歸檔日志)
這兩種日志有以下三點不同:
1. redo log 是 InnoDB 引擎特有的; binlog 是 MySQL 的 Server 層實現的,所有引擎都可以使用,MySQL數據庫中的任何存儲引擎對於數據庫的更改都會產生binlog。
2. redo log 是物理日志,記錄的是 “ 在某個數據頁上做了什么修改 ” ; binlog 是邏輯日志,記錄的是這個語句的原始邏輯,比如 “ 給 ID=2 這一行的 c 字段加 1 ”。
binlog 記錄的都是事務操作內容,binlog 有三種模式:Statement(基於 SQL 語句的復制)、Row(基於行的復制) 以及 Mixed(混合模式)。具體這三種模式的區別請看主從同步和主備同步專欄
3. redo log 是循環寫的(類似一個循環隊列),因為它的空間固定會用完; binlog 是可以追加寫入的。 “ 追加寫 ” 是指 binlog 文件寫到一定大小后會切換到下一個,並不會覆蓋以前的日志。
4.redo在 事務執行過程中 會不斷的寫入,而 binlog 是在 事務最終提交前 寫入的