MySQL redo log 與 binlog 的區別


1. 什么是redo log?

redo log又稱重做日志文件,用於記錄事務操作的變化,記錄的是數據修改之后的值,不管事務是否提交都會記錄下來。在實例和介質失敗(media failure)時,redo log文件就能派上用場,如數據庫掉電,InnoDB存儲引擎會使用redo log恢復到掉電前的時刻,以此來保證數據的完整性。

2. 什么是binlog

binlog記錄了對MySQL數據庫執行更改的所有操作,但是不包括SELECT和SHOW這類操作,因為這類操作對數據本身並沒有修改。

3. redo log與binlog的區別

第一:redo log是在InnoDB存儲引擎層產生,而binlog是MySQL數據庫的上層產生的,並且二進制日志不僅僅針對INNODB存儲引擎,MySQL數據庫中的任何存儲引擎對於數據庫的更改都會產生二進制日志。

第二:兩種日志記錄的內容形式不同。MySQL的binlog是邏輯日志,其記錄是對應的SQL語句。而innodb存儲引擎層面的重做日志是物理日志。

第三:二進制日志僅在事務提交時記錄,並且對於每一個事務,僅在事務提交時記錄,並且對於每一個事務,僅包含對應事務的一個日志。而對於innodb存儲引擎的重做日志,由於其記錄是物理操作日志,因此每個事務對應多個日志條目,並且事務的重做日志寫入是並發的,並非在事務提交時寫入,其在文件中記錄的順序並非是事務開始的順序。

第四:binlog不是循環使用,在寫滿或者重啟之后,會生成新的binlog文件,redo log是循環使用。

第五:binlog可以作為恢復數據使用,主從復制搭建,redo log作為異常宕機或者介質故障后的數據恢復使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM