innodb事務日誌ib logfile

2021-07-05 22:07:04 字數 2071 閱讀 7343

mysql的innodb中事務日誌ib_logfile

事務日誌或稱redo日誌

,在mysql中預設以ib_logfile0,ib_logfile1名稱存在,可以手工修改引數,調節

開啟幾組日誌來服務於當前mysql資料庫,mysql採用順序,迴圈寫方式,每開啟乙個事務時,

會把一些相關資訊記錄事務日誌中(記錄對資料檔案資料修改的物理位置或叫做偏移量);

作用:在系統崩潰重啟時,作事務重做;在系統正常時,每次checkpoint時間點,會將之前寫入事務

應用到資料檔案中。

引入乙個問題:在m/s環境中,innodb寫完ib_logfile後,服務異常關閉,會不會主庫能用ib_logfile恢復資料,而

binlog沒寫導致從庫同步時少少這個事務?從而導致主從不一致;

redo日誌寫入方式:

1.ib_logfile寫入當前事務更新資料,並標上事務準備trx_prepare

2.寫入bin-log

3.ib_logfile當前事務提交提交trx_commit

恢復方式:

如果ib_logfile已經寫入事務準備,那麼在恢復過程中,會依據bin-log中該事務是否存在恢復資料。

假設:1)結束後異常,因沒有寫入bin-log,從庫不會同步這個事務,主庫上,重啟時,在恢復日誌中這個

事務沒有commit,即rollback這個事務.

2)結束後異常,這會bin-log已經寫入,從庫會同步這個事務。主庫依據恢復日誌和bin-log,也正常恢復此事務

綜上描述:bin-log寫入完成,主從會正常完成事務;bin-log沒有寫入,主從庫rollback事務;不會出現主從庫不一致問題.

相關引數(全域性&靜態):

innodb_log_buffer_size

innodb_log_file_size

innodb_log_files_in_group

innodb_log_group_home_dir

innodb_flush_log_at_trx_commit

innodb_log_buffer_size:事務日誌快取區,可設定1m~8m,預設8m,延遲事務日誌寫入磁碟,

把事務日誌快取區想象形如"漏斗"狀,會不停向磁碟記錄快取的日誌記錄,而何時寫入通過引數

innodb_flush_log_at_trx_commit控制,稍後解釋,啟用大的事務日誌快取,可以將完整執行大事

務日誌,暫時存放在事務快取區中,不必(事務提交前)寫入磁碟儲存,同時也起到節約磁碟空間占用;

innodb_log_file_size:控制事務日誌ib_logfile的大小,範圍5mb~4g;所有事務日誌ib_logfile0+

ib_logfile1+..累加大小不能超過4g,事務日誌大,checkpoint會少,節省磁碟io,但是大的事務日

志意味著資料庫crash時,恢復起來較慢.

引入問題:修改該引數大小,導致ib_logfile檔案的大小和之前存在的檔案大小不匹配

解決方式:在乾淨關閉資料庫情況下,刪除ib_logfile,而後重啟資料庫,會自行建立該檔案;

innodb_log_files_in_group:db中設定幾組事務日誌,預設是2;

innodb_log_group_home_dir:事務日誌存放目錄,不設定,ib_logfile0...存在在資料檔案目錄下

innodb_flush_log

_at_trx_commit

:控制事務日誌何時寫盤和刷盤,安全遞增:0,2,1

事務快取區:log_buffer;

0:每秒一次事務快取區重新整理到檔案系統,同時檔案系統到磁碟同步,但是事務提交時,不會觸發log_buffer到檔案系統同步;

2:每次事務提交時,會把事務快取區日誌重新整理到檔案系統中去,且每秒檔案系統到磁碟同步;

1:每次事務提交時重新整理到磁碟,最安全;

適用環境:

0:磁碟io能力有限,安全方便較差,無複製或複製延遲可以接受,如日誌性業務,mysql損壞丟失1s事務資料;

2:資料安全性有要求,可以丟失一點事務日誌,複製延遲也可以接受,os損壞時才可能丟失資料;

1:資料安全性要求非常高,且磁碟io能力足夠支援業務,如充值消費,敏感業務;

innodb事務日誌

mysql會最大程度的使用快取機制來提高資料庫的訪問效率,但是萬一資料庫發生斷電,因為快取的資料沒有寫入磁碟,導致快取在記憶體中的資料丟失而導致資料不一致怎麼辦?innodb主要是通過事務日誌實現acid特性 事務日誌包括 重做日誌redo和回滾日誌undo redo記錄的是已經全部完成的事務,就是...

Innodb日誌與事務

1.innodb日誌 錯誤日誌 記錄出錯資訊,也記錄一些警告資訊或者正確的資訊。查詢日誌 記錄所有對資料庫請求的資訊,不論這些請求是否得到了正確的執行。慢查詢日誌 設定乙個閾值,將執行時間超過該值的所有sql語句都記錄到慢查詢的日誌檔案中。二進位制日誌 記錄對資料庫執行更改的所有操作。中繼日誌 事務...

mysql日誌 innodb事務

1 binlog 歸檔日誌 server所有 sync binlog 表示每次binlog 都同步磁碟 2 redolog innodb儲存引擎特有 innodb flush log at trx commit 1 代表每次redolog都同步到磁碟 3 undolog 組成版本鏈 mvcc und...