slave的几个类结构:

     Master_info:用于IO线程的参数,包括连接master实例的信息。
     Relay_log_info:用于sql线程,表示relay log相关的信息。
     Slave_worker:继承Relay_log_info,包括一个job队列,用于并行的worker线程。
 
binlog event的类结构:
     
 
slave启动的函数栈:
     dispatch_command
          start_slave
               start_slave_threads
                    start_slave_thread
 
     start_slave:初始化master_info和relay_log_info两个对象
     start_slave_threads:启动两个线程,分别是handle_slave_io io线程,handle_slave_sql sql线程。
 
handle_slave_io: 启动io线程,根据master_info对象的连接信息,连接master主库。
  while(!io_slave_killed(thd,mi))
     request_dump:循环发送dump协议指令到master,接受event写入relay_log.
 
handle_slave_sql:启动sql线程,
     1. 当没有使用并行复制的时候。
          while (!sql_slave_killed(thd,rli))
               exec_relay_log_event(thd,rli): 循环从relay_log中读取event,并执行apply。
     
          exec_relay_log_event的调用栈:
               apply_event_and_update_pos 
                    Log_event::apply_event
                         Query_log_event::do_apply_event
                              Query_log_event::do_apply_event     
 
     2. 当设置了opt_slave_parallel_workers时,启用了并行复制
          slave_start_workers:初始化relay_log_info中关于mts的变量。
               slave_start_single_worker:启动多个并发线程。
                    handle_slave_worker:
                         while (!error)

error= slave_worker_exec_job(w, rli):根据jobs_queue中的值,pop出event进行apply。

                              在Log_event::apply_event的过程中:
                                   1,如果开启了并行:那么会把event分配给worker线程,然后结束
                                   2,如果没有开启并行:则直接执行do_apply_event
                                   3,如果不能并行的,需要wait_for_workers_to_finish所有worker结束后,本线程自己独立执行。

MySQL5.6 基于db的并行复制的更多相关文章

  1. Centos7.5部署MySQL5.7基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)

    之前已经详细介绍了Mysql基于GTID主从复制的概念,原理和配置,下面整体记录下MySQL5.7基于GTID主从复制+并行复制+增强半同步复制+读写分离环境的实现过程,以便加深对mysql新特性GT ...

  2. MySQL 5.7 基于GTID主从复制+并行复制+半同步复制

    环境准备 IP HOSTNAME SERVICE SYSTEM 192.168.131.129 mysql-master1 mysql CentOS7.6 192.168.131.130 mysql- ...

  3. Mysql5.7实现主从复制、基于GTID的主从复制、并行复制

    (一.主从复制) 一.mysql主从复制原理    mysql的默认复制方式是主从复制.Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制, ...

  4. MySQL5.7 并行复制的学习

    MySQL 5.6 基于库级别的并行复制 MySQL5.6的并行复制是库(schema)级别的,从库为每个库(schema)分配一个线程以此来提高复制效率 在MySQL 5.6版本之前,Slave服务 ...

  5. MySQL 并行复制演进及 MySQL 8.0 中基于 WriteSet 的优化

    MySQL 8.0 可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前 Generally Available 版本已经已经发布,正式版本即将发布,在此将介绍8.0版本中引入的一 ...

  6. MySQL5.7 并行复制配置

    转自:https://www.cnblogs.com/langdashu/p/6125621.html [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7 一.缘由: 某天看到主从 ...

  7. MySQL5.7 并行复制

    MySQL5.7 并行复制 1.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->I ...

  8. [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7

    一.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (从) - ...

  9. MySQL 5.7基于组提交的并行复制

    参考链接: http://mysql.taobao.org/monthly/2016/08/01/ https://www.kancloud.cn/thinkphp/mysql-parallel-ap ...

随机推荐

  1. JDBC中事务的使用

    http://blog.sina.com.cn/s/blog_6f3ca78f01010pmj.html 当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对 ...

  2. iOS 获取设备型号以及IP地址

    首先导入四个头文件 #include <sys/types.h> #include <sys/sysctl.h> #include <ifaddrs.h> #inc ...

  3. angularJS--神奇的$scope

    我们在使用angularJS时,$scope对于angularJS是非常重要的,它是angularJS的基础,但$scope到底是什么呢?下面进行一些介绍. 1.$scope是一个普通的js对象 2. ...

  4. 04_XML_02_XML语法

    [XML组成] 一个XMl文件分为以下几部分组成 * 文档说明 * 元素 * 属性 * CDATA区.特殊字符 * 处理指令(processing Instruction) [1.文档说明] * 最简 ...

  5. 使用VirtualBox搭建Pentesterlab环境

    1 简介 VirtualBox 是一款开源虚拟机软件,我们使用它来装载Pentesterlab的镜像文件. 2 VirtualBox安装及配置 VirtualBox的安装项主要是网卡的配置比较麻烦,不 ...

  6. OpenCV2学习笔记01:Linux下OpenCV开发环境的搭建

    个人已经厌倦了Windows下的开发方式,于是决定转到Linux平台上来,当然我也知道这个转变会很艰辛,但是我还是要坚持.所以,后面的所有开发我都会基于Linux和Qt,先从开发环境的搭建开始做起,当 ...

  7. jquery tab mouseover 特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. Swift语言 1小时速学教程

    本文由 张渊杰 (网名寂静)编写 Swift语言 1小时速学教程 写在前面的话 有些人可能想, 呵呵, 1小时学一门语言, 你不是搞笑吧, 我想说, 是的, 完全可以, 就要看你怎么学了 要想在1小时 ...

  9. 收藏一个匹配html内容的文章

    http://blog.csdn.net/donglynn/article/details/35788879

  10. PHP 冒泡排序法

    <?php // 冒泡排序法:将一个数组中的值按照从小到大的顺 序排序 $arr = array(33, 1, 4, 5, 2, 3, 7, 9, 8, 99); $len = count($a ...