mysql 原理 ~binlog系列之-sync_binlog刷新機制


簡介 詳細講述 sync_binlog參數
一 參數
   包含兩部分 1 sync本地磁盤 2 dump_thread時機  
   sync_binlog=0
    1 binary log 不 sync 刷盤,依賴於 OS 刷盤機制
    2 在flush階段后通知DUMP線程發送Event。(不進入sync階段)
   sync_binlog=1
     1 binary log 每次 sync 隊列形成后都進行sync刷盤 約等於每次group commit 進行刷盤 
     2 在 sync 階段后通知DUMP線程發送 Event
   sync_binlog = N
    1 binary log 將在指定次 sync 隊列形成后進行 sync 刷盤
     2 會在 flush 階段后通知 DUMP 線程發送 Event。
二 binlog組提交技術
   1 Flush:所有已經注冊線程都將寫入binary log緩存
   2 Sync :binary log緩存的數據將會sync到磁盤,當sync_binlog=1時所有該隊列事務的二進制日志緩存永久寫入磁盤
   3 Commit: leader根據順序調用存儲引擎提交事務(innodb層) 

  4 所有隊列都是串行化執行,這點要牢記
三 組提交細節
  如何提高一次性group commit的數量
   binlog_group_commit_sync_delay毫秒直到達到 binlog_group_commit_sync_no_delay_count事務個數時,將進行一次組提交。
四 具體流程
  存儲引擎(InnoDB) Prepare ----> 數據庫上層(Binary Log) Flush Stage ----> Sync Stage ----> 調存儲引擎(InnoDB)Commit stage.
五 總結
  1 sync_binlog如果設置非1 可能導致從庫比主庫多數據.所以在重要環境還是建議使用sync_binlog=1
  2 不同的sync_binlog值 對於dump線程何時獲取binlog都是有影響的
  3 dump線程確實是獲取的binlog cache
  4 所謂的sync_binlog涉及到的就是binlog組提交的sync階段

 此文章大多來源八怪大神相關文章總結,特此說明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM