mysql从库并发连接_MYSQL从库的并发恢复
主从复制通过三个线程来完成,在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从库的并发恢复相关推荐
- mysql跨库查询 索引_MySQL中跨库查询怎么搞?
导读 在MySQL中跨库查询主要分为两种情况,一种是同服务的跨库查询;另一种是不同服务的跨库查询;它们进行跨库查询是不同的,下面就具体介绍这两种跨库查询. 在MySQL中跨库查询主要分为两种情况,一种 ...
- mysql从库夯住_MySQL从库维护经验分享
前言: MySQL 主从架构应该是最常用的一组架构了.从库会实时同步主库传输来的数据,一般从库可以作为备用节点或作查询使用.其实不只是主库需要多关注,从库有时候也要经常维护,本篇文章将会分享几点从库维 ...
- mysql建立从库同时备份_mysql主从库配置读写分离以及备份
1,什么是读写分离? 其实就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作, 主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构. 一个组从同步集群,通常被称为是一个& ...
- mysql无法通过工具连接_MySQL 8.0版本无法使用 node、Navicat等三方工具连接的问题...
问题描述: 在官网下载mysql之后,一切按照默认配置安装完毕. (windows 7 64位操作系统) 使用 MySQL Workbench 8.0 CE 登录本地库,正常: 使用 MySQL Wo ...
- mysql怎么禁止远程连接_mysql如何设置禁止远程连接
mysql设置禁止远程连接的方法:1.登录数据库服务器,指定mysql数据库:2.执行[update user set host='localhost' where user='root';]语句:3 ...
- mysql客户端新建一个表_MySQL 建库、建用户及建表事项
1,MySQL建库语句比较简单,一句话: 1 create database tppamltest3 2,创建用户及授权: 1 insert into mysql.user(Host,User,Pas ...
- mysql建库需要注意_MySQL 建库、建用户及建表事项
1,MySQL建库语句比较简单,一句话: 1 create database tppamltest3 2,创建用户及授权: 1 insert into mysql.user(Host,User,Pas ...
- mysql约束建表规范_MySQL 建库建表规范
1.约束 1.PrimaryKey(PK)主键 特点:唯一 + 非空,一张表中只能有一个主键约束,一般是一个数字列,最好是无意义的. 2.NOT NULL 非空 特点:不能为空,建议在MySQL中,业 ...
- mysql建库sql语句_mysql建库和建表的sql语句
需求描述: 在用户提交酒店订单时,需要记录订单信息和订单日志:订单信息包括用户名.订单号.入住时间和离店时间: 订单日志包括谁在什么时候操作了该订单,下订单时需要记录的订单日志为系统在下订单的时间点创 ...
最新文章
- 解决tomcat启动后访问页面中文乱码
- 2021年高考成绩查询湖北状元,2021年湖北高考状元多少分,今年湖北高考状元资料名单...
- 苹果欲借免费纳米SIM卡技术控制行业标准
- 张帅用赢球庆生 搭档斯托瑟晋级澳网女双八强
- python 图表_用 Python 让你的数据图表动起来
- QT创建文件夹(QDir方式)
- xss攻击突破转义_每个人都应该了解的7种xss漏洞
- Apache RewriteCond %{REQUEST_FILENAME} 不起作用问题
- 多线程之间通讯JDK1.5-Lock
- TabLayout+Viewpage滑动
- aac怎么转化为mp3格式?
- 西安交大计算机2000年山西专业录取分数,西安交大在山西各专业录取分数.doc
- bat怎么发起网络请求_批处理命令教程之网络入侵
- ORA-3136错误解决
- 行数据上加一个version版本字段,可以有效防止数据重复更新
- c语言中测长度的函数,c读入文本后,用strlen函数测不出正确长度
- 解决http error 503.the service is unavailable错误
- 使用Fiddler抓取微信小程序二维码请求地址
- 今天那个劝比尔盖茨退学的人死了
- 华为安卓手机记事本内容导出
热门文章
- python元类 orm_python-进阶-元类在ORM上的应用详解
- html中表单涉及的标记有哪几个,HTML学习笔记--表单标记
- arm02gnu/linux,2.1. 支持的硬件 - Debian GNU/Linux 安装手册(PPC架构)
- 易语言录入数据到access里重复提示_一招搞定:excel数据共享协同
- Android换肤逻辑
- go语言学习(4)接口,duck typing
- MiguelCatalan/MaterialSearchView
- android从放弃到精通第10天 勿忘初心
- 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)...
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测...