zoukankan      html  css  js  c++  java
  • MySQL5.7的并行复制

      MySQL5.6开始支持以schema为维度的并行复制,即如果binlog row event操作的是不同的schema的对象,在确定没有DDL和foreign key依赖的情况下,就可以实现并行复制。
    社区也有引入以表为维度或者以记录为维度的并行复制的版本,不管是schema,table或者record,都是建立在备库slave实时解析row格式的event进行判断,保证没有冲突的情况下,进行分发来实现并行。
      MySQL5.7的并行复制,multi-threaded slave即MTS,期望最大化还原主库的并行度,实现方式是在binlog event中增加必要的信息,以便slave节点根据这些信息实现并行复制。
    MySQL 5.7的并行复制建立在group commit的基础上,所有在主库上能够完成prepared的语句表示没有数据冲突,就可以在slave节点并行复制。
    关于MySQL5.7的组提交,我们要看下以下的参数:

    mysql> show global variables like '%group_commit%';
    +-----------------------------------------+-------+
    | Variable_name | Value |
    +-----------------------------------------+-------+
    | binlog_group_commit_sync_delay                  | 0 |
    | binlog_group_commit_sync_no_delay_count | 0 |
    +-----------------------------------------+-------+
    2 rows in set (0.00 sec)

    binlog_group_commit_sync_delay这个参数控制着日志在刷盘前日志提交要等待的时间,默认是0也就是说提交后立即刷盘,但是并不代表是关闭了组提交,当设置为0以上的时候,就允许多个事物的日志同时间一起提交刷盘,也就是我们说的组提交。组提交是并行复制的基础,我们设置这个值的大于0就代表打开了组提交的延迟功能,而组提交是默认开启的。最大值只能设置为1000000微妙。
    binlog_group_commit_sync_no_delay_count ,这个参数表示我们在binlog_group_commit_sync_delay等待时间内,如果事物数达到binlog_group_commit_sync_no_delay_count 设置的参数,就会触动一次组提交,如果这个值设为为0的话就不会有任何的影响。如果到达时间但是事物数并没有达到的话,也是会进行一次组提交操作的。
     
    参考:https://www.cnblogs.com/shengdimaya/p/6972278.html
  • 相关阅读:
    还算满意的流程图
    C#WinCE程序(.NET Compact Framework 3.5)项目重构面向抽象设计
    c#使用PortableDeviceApiLib读取便携式设备(WPD:Windows Portable Devices)信息
    缅怀逝去的青葱岁月, 忆“煤油灯”
    又趟一个坑,IO卡信号DI和DO的信号类型
    C#Winform使用mysql作为本地数据库
    C#winform自定义控件模拟设计时界面鼠标移动和调节大小、选中效果
    zxing .net 多种条码格式的生成
    C#单例测试(懒汉式双锁保证线程安全)
    架构师之路->架构师思维的培养
  • 原文地址:https://www.cnblogs.com/elontian/p/9989080.html
Copyright © 2011-2022 走看看