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阶段

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

  • 相关阅读:
    Linux useradd 命令介绍
    lsscsi
    安装MegaCli,查看linux服务器raid信息
    ipmitool命令详解
    python 收发邮件
    angularjs 高级玩法 创建递归的模板
    我的Android进阶之旅------>Android Activity的singleTask载入模式和onActivityResult方法之间的冲突
    Git实战(三)环境搭建
    使用Samba实现Linux与Windows文件共享实践
    设计模式个人备忘(享元模式,strategy, templete strategy)
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/11445035.html
Copyright © 2011-2022 走看看