zoukankan      html  css  js  c++  java
  • 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阶段

     此文章大多来源八怪大神相关文章总结,特此说明

  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/11445035.html
Copyright © 2011-2022 走看看