binlog :二進制日誌是mysql-server層的,主要是做主從複製,時間點恢復使用。
redo log :重做日誌是InnoDB存儲引擎層的,用來保證事務安全。
undo log : 回滾日誌保存了事務發生之前的數據的一個版本,可以用於回滾,同時可以提供多版本併發控制下的讀(MVCC),也即非鎖定讀。redo log。
redo log在事務沒有提交前,每一個修改操作都會記錄變更後的數據,保存的是物理日誌->數據。
binlog 是一個二進制格式的文件,用於記錄用戶對數據庫更新的SQL語句信息,但對庫表等內容的查詢不會記錄由於是二進制文件,
需使用mysqlbinlog解析查看主要作用:
用於數據庫的主從複製及數據的增量恢復ROW (行模式) :
記錄哪條數據修改了記錄的是修改的那條記錄的全部數據,即使只更新了-個字段, binlog 裏也會記錄所有字段的數據Statement (語句模式) :
每一條會修改數據的sq都會記錄在binlog中作用:用於複製,在主從複製中,從庫利用主庫上的binlog進行重播,實現主從同步。
undo log有兩個作用:
提供回滾和多個行版本控制(MVCC)。
在數據修改的時候,不僅記錄了redo,還記錄了相對應的undo,如果因爲某些原因導致事務失敗或回滾了,可以藉助該undo進行回滾。
undo log是採用段(segment)的方式來記錄的,每個undo操作在記錄的時候佔用一個undo log segment。
作用:保存了事務發生之前的數據的一個版本,可以用於回滾,同時可以提供多版本併發控制下的讀(MVCC),也即非鎖定讀
redo log作用:
確保事務的持久性。
防止在發生故障的時間點,尚有髒頁未寫入磁盤,在重啓mysql服務的時候,根據redo log進行重做,從而達到事務的持久性這一特性。
內容:物理格式的日誌,記錄的是物理數據頁面的修改的信息,其redo log是順序寫入redo log file的物理文件中去的。