天天看點

binlog的三種模式以及特點

binlog二進制日志檔案有三種模式:

  • 語句模式
  • 行模式
  • 混合模式

statement語句模式:

也就是當delete删除一百行資料的時候,binlog隻記錄那一句delete SQL語句,(而如果是redolog删除一百行,就會在日志中,寫一百行)。節省IO,提高性能。但是正因為隻有SQL語句,當進行主從同步的時候,master上同步,也就是執行這些SQL,其中特殊函數功能的SQL執行時,容易出現問題。

row行模式:

每進行一次資料操作都會詳細的記錄資料前後具體變化,正因為這樣,那麼假如說删除十萬行資料,就寫入日志十萬次,會導緻binlog非常大,主從同步的時候,會占用大量IO、急劇降低系統IO。解決辦法就是通過set sql_log_bin來解決,讓删除語句不傳下從庫,然後從庫再删除表(setsql_log_bin=0就是不讓語句記錄到binlog中,删除語句沒有記錄到日志中,是以從庫不删除内容)

混合模式:

混合模式我覺得就是針對SQL中是否有函數出現的一種模式吧,因為語句模式記錄的帶函數的SQL可能在master上執行不了,那麼就選擇行模式,詳細記錄資料操作前後的變化;而對于一些簡單的SQL就使用語句模式,這樣在保證主從同步可以成功的同時,又減少了binlog的大小,進而降低系統IO的負載。

繼續閱讀