一 概念
1 MTS(Prepared transactions slave parallel applier)
   主库在同一时间进入prepare状态的事务可以被从库并行回放
2 传统与改进
   mariadb 从库回放处理(Commit-Parent-Based模式) 一组事务全部执行完才会执行下一组事务,时间:所有一组事务并行执行的总和 问题 一旦一组事务其中一个为大事务,那么整组事务的执行时间会被拖延,导致并行复制下的延时,拖累回放进度
   mysql5.7 从库回放处理(Lock-Based模式) 一组事务其中一个事务执行完,那么后续事务只要cq小于等于上一组事务最小seq号(代表不会有锁冲突),就可以继续执行,这样加快了执行的效率
3 线程
  模型:生产者 Coordinator
   消费者模型 Worker
4 并行复制须知
  1 普通复制也支持并行复制,但是还是提倡采用GTID复制
  2 并行复制并不能完全避免大事务和DDL产生的延时问题,只能尽量缓解,不能解决无主键和myisam表的问题,只能靠DBA来解决
  3 并行复制所要实现的目标是完全按照主库情况回放,这里要注意,主库如果串行,那么从库也一定是串行.
     这里存在的一种情况就是在业务不繁忙的情况下,DBA或者研发进行删除数据或者执行DDL操作,这样的并行复制情况下一定会有延时
  4 并行复制进程可能存在单个线程应用错误,但是IO and sql thread 为YES的情况
5 监控
  健康监控 IO_THREAD,SQL_THREAD Seconds_Behind_Master
  replication_applier_status_by_worker 查看worker的消费并行读
6 参数
  1 slave_pending_jobs_size_max
    说明 如果event大小已经超过了等待任务大小的上限(配置slave-pending-jobs-size-max ),就报event太大的错,然后返回
    调优 在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如果内存富余,或者延迟较大时,可以适当调大;注意这个值要比主库的max_allowed_packet大,主要针对大事务
  2 slave-parallel-type=LOGICAL_CLOCK //事务级别复制
  3 slave-parallel-workers=16 //消费者线程
  4 relay_log_recovery=ON //保证relay-log的完整性
  5 master_info_repository=TABLE
   relay_log_info_repository=TABLE //复制信息记录
 6 slave_preserve_commit_order

1 目的 并行应用relay-log,但是顺序提交,防止数据紊乱(这里理解的应该是同一时间事务组的顺序提交)-> 5.7.19的版本后才会真正采用.

2  注意

1  MGR必须开启此参数 2 设置此参数从库必须开启中继日志 切记 3 此参数可能导致从库出现延迟问题,可以打开关闭进行延迟问题测评决定是否开启,因为要有多余的代码和IO操作,会加重成本

转载于:https://www.cnblogs.com/danhuangpai/p/10654385.html

mysql 原理 ~ 并行复制相关推荐

  1. mysql 多线程并行复制_【MySQL】开启并行复制

    [MySQL]开启并行复制 一.介绍 在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高.TPS 高时就会出现严重的主备延迟问题. 如果备库执行日志的速度持续低于主库生成日志的 ...

  2. mysql复制多行_mysql中的复制方式总结(半同步复制,并行复制,多源复制)

    一.MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志b ...

  3. mysql并行复制降低主从同步延时的思路与启示

    mysql并行复制降低主从同步延时的思路与启示 一.缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严 ...

  4. 谈谈MySQL的WriteSet并行复制

    [历史背景] 岁月更迭中我已经从事MySQL-DBA这个工作三个年头,见证MySQL从"基本可用","边缘系统可以用MySQL","哦操!你怎么不用M ...

  5. mysql writeset_浅析MySQL的WriteSet并行复制

    [历史背景] 岁月更迭中我已经从事mysql-dba这个工作三个年头,见证mysql从"基本可用","边缘系统可以用mysql","哦操!你怎么不用m ...

  6. [inside]MySQL 5.7 并行复制实现原理与调优

    MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持"真正&quo ...

  7. MySQL 5.7 并行复制实现原理与调优

    转载:http://www.innomysql.net/article/16317.html Contents 1 MySQL 5.7并行复制时代 2 MySQL 5.6并行复制架构 3 MySQL ...

  8. MySQL 5.7 LOGICAL_CLOCK 并行复制原理及实现分析

    MySQL 5.7 LOGICAL_CLOCK 并行复制原理及实现分析 在MySQL5.7 引入基于Logical clock的并行复制方案前,MySQL使用基于Schema的并行复制,使不同db下的 ...

  9. mysql 并行复制原理_MySQL 5.7 并行复制实现原理与调优

    MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持"真正&quo ...

  10. mysql mts_MySQL进一步完善可用并行复制-MTS并行增量的应用-爱可生

    原标题: MySQL进一步完善可用并行复制-MTS并行增量的应用-爱可生 MTS 并行增量应用 MySQL 的复制延迟在早期版本一直存在,MySQL 5.6.3 版本后开始支持并行复制,并在 5.7 ...

最新文章

  1. 大数据技术下面向企业需求的高校应用型人才培养课程体系设计
  2. 剑指offer:链表中环的入口结点
  3. java编程思想 入门_java编程思想学习(基础)
  4. 倒计时2天!AI大咖云集、30场技术公开课,还有乐队... 年度最有意思的AI开发者活动来了!...
  5. python语言视频-Python语言之Python3 实现简易局域网视频聊天工具
  6. 用css如何写正方体,css正方体实现--(transform练习)
  7. junit4 的使用 顺便理解ClassPathXmlApplicationContext的使用
  8. [3]MVC3中使用Telerik(转)
  9. Linux基础练习题(三)
  10. 瓶子个数计数halcon
  11. github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github
  12. C++跳过(忽略)指定字符
  13. 如何建立队列c语言_什么是优先队列
  14. 一篇不错的vim命令入门
  15. 设计模式-04-行为型模式详解
  16. 判断数字在字符串中的位置 详解(C++)
  17. 登录注册页面html模版
  18. Python 实现局域网视频聊天工具
  19. 存储过程 生成拼音码与五笔码
  20. excel 序号下拉不能够自动(递增)排序

热门文章

  1. 查看Linux是Redhat 还是centos 还是...
  2. [leetcode]Unique Paths
  3. asp页面实现301重定向方法
  4. 【GDB调试学习笔记】 Makefie上
  5. C++中两种计算时间方法的比较
  6. ENVIArcGis——植被覆盖度提取
  7. JS学习总结(13)——DOM
  8. 测绘工程野外测量实践实习
  9. 机器学习Scikit-Learn基本操作实战
  10. python解析GF1卫星数据.xml文件