說說mysql兩階段提交

2021-10-03 01:25:39 字數 480 閱讀 6864

mysql兩階段提交

兩階段提交分為prepare和commit階段,

準備階段:事物sql先寫入redo log buffer,然後做乙個事物準備標記,在將log buffer 中的資料重新整理到redo log。

提交階段:將事物產生的binlog寫入檔案,重新整理磁碟。

再在redo log 中做乙個事物提交的標記,並把binlog寫成功的標記也一併寫入redo log檔案。

結合以下場景分析兩階段提交如何保證資料庫的一致性。

一,準備階段,redo log重新整理到磁碟了,但是binlog寫磁碟前發生了mysql例項crash,這時會發生怎樣的操作呢?

即使redo log寫盤成功了,但由於binlog未寫入成功,需要執行回滾操作來保證資料庫的一致性。

二,提交階段,binlog寫盤成功了,這時mysql例項crash了。這時binlog已經確保寫成功了,我們在重啟例項進行恢復的時候,只需要讓redo log重做一次就可以了。

MySQL 兩階段提交

在mysql中,所謂的兩階段提交就是redo log和binlog 兩個階段的commit過程。在兩階段提交的不同時刻,mysql 異常重啟會出現什麼現象?1 在時刻 a 發生宕機,也就是寫入 redo log 處於 prepare 階段之後 寫 binlog 之前,發生了崩潰 crash 由於此時...

MySQL兩階段提交

學習自葉大blog 例子和解釋都很詳細,不再改動,僅作筆記。db2的連線 db2,err sql.open mysql root 123456 tcp 127.0.0.1 3307 hade2 if err nil defer db2.close 開始前顯示 var score int db1.qu...

mysql5 7兩階段提交 mysql兩階段提交

1.兩階段提交 mysql中經常說的wal技術,wal的全稱是write ahead logging,它的關鍵點就是先寫日誌,再寫磁碟。即當有一條記錄需要更新時,innodb引擎就會先把記錄寫到redo log裡,並更新記憶體,這個時候更新就完成了。因為如果每一次的更新操作都需要寫進磁碟,然後磁碟也...