MYSQL 重做日誌

2021-08-20 12:09:47 字數 945 閱讀 9625

主要作用:

1.當資料庫例項或網路介質出問題,重做日誌能夠進行恢復,保證innodb引擎資料的完整性

內部構成:

1.每個innodb儲存引擎至少有乙個重做日誌檔案組(group)

2.每個日誌檔案組下至少有兩個重做日誌檔案,預設為ib_logfile0、ib_logfile1

3.可以設定多個映象日誌檔案組,可存放到不同磁碟,來提高可靠性

寫入原理:

1.重做日誌先寫入重做日誌緩衝池

2.按照一定條件寫入重做日誌檔案,例如:master執行緒每秒將緩衝池中重做日誌資料寫入重做日誌檔案

3.首先寫入重做日誌組中的日誌檔案1即ib_logfile0,該檔案寫滿後,繼續向ib_logfile2中寫,日誌檔案2也寫滿後,繼續向ib_logfile0中寫,迴圈執行

配置引數:

1.innodb_log_file_size:指定重做日誌檔案大小

2.innodb_log_file_in_group:指定日誌檔案組中重做日誌檔案的個數,預設2

3.innodb_mirrored_log_groups:指定日誌映象檔案組的數量,預設1

4.innodb_log_group_home_dir:指定日誌檔案組所在路徑,預設資料庫路徑下

5.innodb_flush_log_at_trx_commit:指定提交事務時是否重新整理緩衝池重做日誌資料到日誌檔案,0表示提交事務時不將事務的重做日誌寫入磁碟上的日誌檔案,1表示在事務提交時同步寫入重做日誌,2表示在事務提交時非同步寫入重做日誌,預設1

重做日誌檔案和二進位制檔案區別:

1.記錄型別不一樣:二進位制檔案會記錄所有引擎操作的日誌記錄,重做日誌只記錄innodb引擎相關的事務性操作

2.記錄內容不一樣:二進位制檔案會記錄的具體操作,比如sql或行的修改,重做日誌記錄關於頁的更改情況

3.記錄時間不一樣:二進位制檔案在事務提交前記錄日誌,重做日誌在事務執行時不斷記錄日誌

MySQL重做日誌

用來實現事物的永續性,即事務acid中的d。重做日誌有兩部分組成 當事務commit時,必須將事務的全部日誌寫入重做日誌檔案進行持久化,待完成後事務commit的操作才算完成,即日誌前寫規則。為確保每次日誌都寫入到重做日誌檔案,在每次寫入後都進行一次fsync操作。因為重做日誌檔案沒有使用o dir...

mysql重做日誌

mysql預設情況下會有兩個檔案 ib logfile0和ib logfile1,這兩個檔案就是重做日誌檔案,或者事務日誌。重做日誌的目的 萬一例項或者介質失敗,重做日誌檔案就能派上用場。每個innodb儲存引擎至少有乙個重做日誌檔案組,每個檔案組下至少有2個重做日誌檔案,如預設的ib logfil...

mysql 日誌之redo log 重做日誌

redo log 具體來說,當有一條記錄需要更新的時候,innodb 引擎就會先把記錄寫到 redo log 檔案 裡面,並更新記憶體,這個時候更新就算完成了。同時,innodb 引擎會在適當的時候,將這個操作記錄更新到磁碟裡面,而這個更新往往是在系統比較空閒的時候做。mysql 裡經常說到的 wa...