mysql 三大日志

MySQL三大日志?

binlog(歸檔日志)、redo.log(重做日志) 和undo.log(回滾日志)

redo.log(重做日志):redo.log(重做日志)是InnoDB存儲引擎獨有的,它讓MySQL擁有了崩潰恢復能力。 比如 MySQL 實例掛了或宕機了,重啟時,InnoDB存儲引擎會使用redo.log恢復數(shù)據(jù),保證數(shù)據(jù)的持久性與完整性,redo.log兩階段提交,先寫入redo.log狀態(tài)置為prepare,然后寫入binlog,然后將redo.log設(shè)置為commit狀態(tài)。

binlog(歸檔日志):MySQL數(shù)據(jù)庫的數(shù)據(jù)備份、主備、主主、主從都離不開binlog,需要依靠binlog來同步數(shù)據(jù),保證數(shù)據(jù)一致性binlog 日志有三種格式:

  • statement:原始的sql語句,優(yōu)點:占用空間小,缺點,執(zhí)行的時機不通sql語句的值可能不同,例如time = now()
  • row:包含具體數(shù)據(jù)的sql語句,例如會把now()替換成具體時間,優(yōu)點:執(zhí)行時sql語句值確定,缺點:占用空間大
  • mixed:mysql自己判斷,如果值不會變化,就用statement格式,否則用row格式

undo.log(回滾日志):當發(fā)生異常時,從undo.log中將數(shù)據(jù)恢復成原來的樣子,mysql的MVCC依賴隱藏字段,read view和undo.log實現(xiàn).

三大日志總結(jié)?

MySQL InnoDB 引擎使用 redo.log(重做日志) 保證事務(wù)的持久性。

使用 undo.log(回滾日志) 來保證事務(wù)的原子性。

MySQL數(shù)據(jù)庫的數(shù)據(jù)備份、主備、主主、主從都離不開bin.log,需要依靠bin.log來同步數(shù)據(jù),保證數(shù)據(jù)一致性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容