MySQL的 redo undo binlog 幾種log

redo log : 記錄一次寫的操作,當服務器掛了的時候可以用是redo log 恢復數據。

undo log : 記錄一次寫的操作的相反操作,事務回滾的時候,就把他拿出來執行一遍。數據就恢復了原來的樣子。

binlog : 做主從同步時候,主服務器會生成binlog , 然後從數據庫會啓動一個IO線程去不斷地拉取binlog,拉到本地執行一遍,然後兩者數據就同步了。

出現極端情況怎麼辦:

情況1 : 如果我們先寫 binlog 在寫redo log,寫完binlog的時候,數據庫掛掉了。這個時候不就會出現數據不一致嗎?

情況2: 如果我們先寫redo log 再寫 binlog ,但是在寫完redo log的時候出現掛機了。數據也是不一致的。

 

數據庫採用兩階段提交的方式保證數據一致性。

首先 寫完 redo log 並吧那條數據 標爲 預提交狀態, 然後再去寫bin log,無論是什麼階段 數據庫掛了。我們恢復的時候,看binlog , binlog要是完整(就是那條數據存在) 那就吧redo log 的那條數據寫爲提交,要是不完整就刪了那條數據。。ok數據一致了 。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章