主从复制通过三个线程来完成,在master节点运行的binlog dump的线程,在slave 节点运行I/O线程和SQL线程master节点的Binlog

dump线程,当slave节点与master正常连接的时候,master把更新的binlog 内容推送到slave节点。

slave节点的I/O 线程 ,该线程通过读取master节点binlog日志名称以及偏移量信息将其拷贝到本地relay log日志文件。

slave节点的SQL线程,该线程读取relay

log日志信息,将在master节点上提交的事务在本地回放,达到与主库数据保持一致的目的。

问题1:

Master节点的数据库实例并发跑多个线程同时提交事务,提交的事务按照逻辑的时间(数据库LSN号)顺序地写入binary

log日志,,slave节点通过I/O线程写到本地的relay log日志,但是slave节点只有SQL单线程来执行relay

log中的日志信息重放主库提交得事务,造成主备数据库存在延迟(lag)

无论是MySQL还是MariaDB在Binary

Log Group Commit优化的目的都是:使高并发下的事务尽可能的在同一个时间点提交,然后用一次fsync()的操作将这一组的Binary

log缓存的数据写入磁盘。当并发事务可以在同一个时间提交,说明每个线程所执行的事务之间没有锁冲突(如果有锁冲突,并发的事务将无法在同一个时刻提交),那么意味着这一组并发提交的事务在slave机器上能并发重放主库提交的事务,所以我们只需要在master机器对二进制日志进行Group

Commit的时候标记上组提交相关信息,slave机器就可以安全的并发执行主库提交的事务 为此主库的BINLOG会把一组可以并发的事打上last_committed=N的标记.

我们用命令 mysqlbinlog -vvv mysqlbinlog.0000003 | grep -i

last_committed    在MySQL

5.7的master机器上可以看到last_committed

和sequence_number

1.  #151223 15:11:28 server id 15102  end_log_pos 14623 CRC32

0x767a33fa GTID      last_committed=18         sequence_number=26

2.

3.  #151223 15:11:28 server id 15102  end_log_pos 15199 CRC32

0x7dd1bf05 GTID     last_committed=26         sequence_number=27

4.

5.  #151223 15:11:28 server id 15102  end_log_pos 15773 CRC32

0xb01dc76e GTID     last_committed=26

sequence_number=28

slave机器的relay

log中 last_committed相同的事务可以并发执行。从上面截取的信息可以看出last_committed=26的事务一共有8个:从sequence_number=27~33。假设当slave_parallel_workers=7时,Coordinator线程(SQL线程)分配这一组事务到worker中排队去执行。这里可以看出增加master库binary

log group

commit组中事务的数量可以提高slave机器并发处理事务的数量,MySQL5.7引入 binlog_group_commit_sync_delay和

binlog_group_commit_sync_no_delay_count参数即提高binary

log组提交并发数量。MySQL等待binlog_group_commit_sync_delay毫秒的时间直到binlog_group_commit_sync_no_delay_count个事务数时,将进行一次组提交。

总结:

MySQL 5.7 GA版本推出的 Enhanced Multi-threaded

Slaves功能,彻底解决了之前版本主备数据复制延迟的问题,开启该功能参数如下:

1.  # slave机器

2.  slave-parallel-type=LOGICAL_CLOCK

3.  slave-parallel-workers=16 #开启多线程复制

4.  master_info_repository=TABLE

5.  relay_log_info_repository=TABLE

6.  relay_log_recovery=ON

mysql从库并发连接_MYSQL从库的并发恢复相关推荐

  1. mysql跨库查询 索引_MySQL中跨库查询怎么搞?

    导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...

  2. mysql从库夯住_MySQL从库维护经验分享

    前言: MySQL 主从架构应该是最常用的一组架构了.从库会实时同步主库传输来的数据,一般从库可以作为备用节点或作查询使用.其实不只是主库需要多关注,从库有时候也要经常维护,本篇文章将会分享几点从库维 ...

  3. mysql建立从库同时备份_mysql主从库配置读写分离以及备份

    1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...

  4. mysql无法通过工具连接_MySQL 8.0版本无法使用 node、Navicat等三方工具连接的问题...

    问题描述: 在官网下载mysql之后,一切按照默认配置安装完毕. (windows 7 64位操作系统) 使用 MySQL Workbench 8.0 CE 登录本地库,正常: 使用 MySQL Wo ...

  5. mysql怎么禁止远程连接_mysql如何设置禁止远程连接

    mysql设置禁止远程连接的方法:1.登录数据库服务器,指定mysql数据库:2.执行[update user set host='localhost' where user='root';]语句:3 ...

  6. mysql客户端新建一个表_MySQL 建库、建用户及建表事项

    1,MySQL建库语句比较简单,一句话: 1 create database tppamltest3 2,创建用户及授权: 1 insert into mysql.user(Host,User,Pas ...

  7. mysql建库需要注意_MySQL 建库、建用户及建表事项

    1,MySQL建库语句比较简单,一句话: 1 create database tppamltest3 2,创建用户及授权: 1 insert into mysql.user(Host,User,Pas ...

  8. mysql约束建表规范_MySQL 建库建表规范

    1.约束 1.PrimaryKey(PK)主键 特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的. 2.NOT NULL 非空 特点:不能为空,建议在MySQL中,业 ...

  9. mysql建库sql语句_mysql建库和建表的sql语句

    需求描述: 在用户提交酒店订单时,需要记录订单信息和订单日志:订单信息包括用户名.订单号.入住时间和离店时间: 订单日志包括谁在什么时候操作了该订单,下订单时需要记录的订单日志为系统在下订单的时间点创 ...

最新文章

  1. 解决tomcat启动后访问页面中文乱码
  2. 2021年高考成绩查询湖北状元,2021年湖北高考状元多少分,今年湖北高考状元资料名单...
  3. 苹果欲借免费纳米SIM卡技术控制行业标准
  4. 张帅用赢球庆生 搭档斯托瑟晋级澳网女双八强
  5. python 图表_用 Python 让你的数据图表动起来
  6. QT创建文件夹(QDir方式)
  7. xss攻击突破转义_每个人都应该了解的7种xss漏洞
  8. Apache RewriteCond %{REQUEST_FILENAME} 不起作用问题
  9. 多线程之间通讯JDK1.5-Lock
  10. TabLayout+Viewpage滑动
  11. aac怎么转化为mp3格式?
  12. 西安交大计算机2000年山西专业录取分数,西安交大在山西各专业录取分数.doc
  13. bat怎么发起网络请求_批处理命令教程之网络入侵
  14. ORA-3136错误解决
  15. 行数据上加一个version版本字段,可以有效防止数据重复更新
  16. c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度
  17. 解决http error 503.the service is unavailable错误
  18. 使用Fiddler抓取微信小程序二维码请求地址
  19. 今天那个劝比尔盖茨退学的人死了
  20. 华为安卓手机记事本内容导出

热门文章

  1. python元类 orm_python-进阶-元类在ORM上的应用详解
  2. html中表单涉及的标记有哪几个,HTML学习笔记--表单标记
  3. arm02gnu/linux,2.1. 支持的硬件 - Debian GNU/Linux 安装手册(PPC架构)
  4. 易语言录入数据到access里重复提示_一招搞定:excel数据共享协同
  5. Android换肤逻辑
  6. go语言学习(4)接口,duck typing
  7. MiguelCatalan/MaterialSearchView
  8. android从放弃到精通第10天 勿忘初心
  9. 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)...
  10. 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...