一 概念
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产生的延时问题,只能尽量缓解,
  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 //并行应用relay-log,但是顺序提交,防止数据紊乱(这里理解的应该是同一时间事务组的顺序提交)

mysql 原理 ~ 并行复制的更多相关文章

  1. MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)

    MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves) http://www.tuicool.com/articles/m2Unmeq 姜承饶 简称MTS:基于binlog ...

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

    一.缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么mysql主从延时这么大? 回答:从 ...

  3. 谈谈MySQL的WriteSet并行复制

    [历史背景] 岁月更迭中我已经从事MySQL-DBA这个工作三个年头,见证MySQL从“基本可用”,“边缘系统可以用MySQL”,“哦操!你怎么不用MySQL”; 正所谓!“一个数据库的境遇既取决于历 ...

  4. 【58沈剑架构系列】mysql并行复制优化思路

    一.缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么mysql主从延时这么大? 回答:从 ...

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

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

  6. 官方:MySQL 5.7 并行复制实现原理与调优 | InsideMySQL(转载)

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

  7. MySQL并行复制(MTS)原理(完整版)

    目录 MySQL 5.6并行复制架构 MySQL 5.7并行复制原理 Master 组提交(group commit) 支持并行复制的GTID slave LOGICAL_CLOCK(由order c ...

  8. mysql 5.6多库并行复制原理

    首先,要开启这个并行复制,需要设定slave_parallel_workers参数,这个参数如果设定成0的话代表不使用并行,relaylog由sql线程执行,表现和之前版本一致.当这个参数设置成n时, ...

  9. [转载自阿里丁奇]各版本MySQL并行复制的实现及优缺点

    MySQL并行复制已经是老生常谈,笔者从2010年开始就着手处理线上这个问题,刚开始两三年也乐此不疲分享,现在再提这个话题本来是难免"炒冷饭"嫌疑.    最近触发再谈这个话题,是 ...

随机推荐

  1. 二维数组中的查找[by Python]

    题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  2. MongoDB 创建基础索引、组合索引、唯一索引以及优化

    一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引 ...

  3. 越狱解决iphone4s外放无声音

    删除iphone中/System/Library/PrivateFrameworks/IAP.framework/Support/目录下的iapd文件 进入/SYSTEM/Library/Launch ...

  4. go笔记-值传递、引用传递

    eg: func sliceModify(slice []int) { // slice[0] = 88 slice = append(slice, ) } func main() { slice : ...

  5. Kafka 详解(一)------简介

    在前面几篇博客我们介绍过一种消息中间件——RabbitMQ,本篇博客我们介绍另外一个消息中间件——Kafka,Kafka是由LinkedIn开发的,使用Scala编写,是一种分布式,基于发布/订阅的消 ...

  6. LOJ2831 JOISC2018 道路建设 LCT、树状数组

    传送门 题目的操作大概是:求某个点到根的链的逆序对,然后对这条链做区间赋值 求某个点到根的链,就是LCT中的access操作,所以我们每一次把access过后的链打上标记,就可以做到区间赋值了. 计算 ...

  7. 一篇博客带你入门Flask

    一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不 ...

  8. final关键字总结

    参考文章[https://www.cnblogs.com/xrq730/p/4820296.html] 前言:在Java中final作为最常见的一个关键字,平常用到的地方也很多,接下来就来看看什么是f ...

  9. RCTF 2017 easyre-153

    die查一下发现是upx壳 直接脱掉 ELF文件 跑一下: 没看懂是什么意思 随便输一个数就结束了 ida打开 看一下: pipe是完成两个进程之间通信的函数 1是写,0是读 fork是通过系统调用创 ...

  10. Python——Flask框架

    Flask框架相关知识构架 程序的基本结构 模板 Web表单 数据库 电子邮件 程序的结构 用户认证