MySQL5.7号称永久解决了复制延迟问题的并行复制
一、缘由:
某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下。
一般主从复制,有三个线程参与,都是单线程:Binlog Dump(主) ----->IO Thread (从) -----> SQL Thread(从)。复制出现延迟一般出在两个地方
1)SQL线程忙不过来(可能需要应用数据量较大,可能和从库本身的一些操作有锁和资源的冲突;主库可以并发写,SQL线程不可以;主要原因)
2)网络抖动导致IO线程复制延迟(次要原因)。
二、解决办法:
MySQL从5.6开始有了SQL Thread多个的概念,可以并发还原数据,即并行复制技术。
MySQL 5.6中,设置参数slave_parallel_workers = 4(>1),即可有4个SQL Thread(coordinator线程)来进行并行复制,其状态为:Waiting for an evant from Coordinator。
但是其并行只是基于Schema的,也就是基于库的。如果数据库实例中存在多个Schema,这样设置对于Slave复制的速度可以有比较大的提升。通常情况下单库多表是更常见的一种情形,
那基于库的并发就没有卵用。其核心思想是:不同schema下的表并发提交时的数据不会相互影响,即slave节点可以用对relay log中不同的schema各分配一个类似SQL功能的线程,
来重放relay log中主库已经提交的事务,保持数据与主库一致。
在MySQL 5.7中,引入了基于组提交的并行复制(Enhanced Multi-threaded Slaves),设置参数slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,
即可支持一个schema下,slave_parallel_workers个的worker线程并发执行relay log中主库提交的事务。其核心思想:一个组提交的事务都是可以并行回放(配合binary log group commit);
slave机器的relay log中 last_committed相同的事务(sequence_num不同)可以并发执行。
其中,变量slave-parallel-type可以有两个值:DATABASE 默认值,基于库的并行复制方式;LOGICAL_CLOCK:基于组提交的并行复制方式
MySQL 5.7开启Enhanced Multi-Threaded Slave配置:
# slaveslave-parallel-type=LOGICAL_CLOCKslave-parallel-workers=16master_info_repository=TABLErelay_log_info_repository=TABLErelay_log_recovery=ON
至此,MySQL彻底解决了复制延迟问题,可喜可贺!
三、参考文档
官方文档:https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html
Inside君的文章:http://www.ttlsa.com/mysql/mysql-5-7-enhanced-multi-thread-salve/
本文出自http://www.cnblogs.com/langdashu/p/6125621.html
转载于:https://blog.51cto.com/lookingdream/1909338
MySQL5.7号称永久解决了复制延迟问题的并行复制相关推荐
- mysql5.7延迟_[MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7-阿里云开发者社区...
原文:[MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7 一.缘由: 某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下. 一般主从复制,有三个线程参与,都是单线程: ...
- mysql 5.6 并行复制_MySQL 5.6并行复制架构
诚然,MySQL 5.6版本也支持所谓的并行复制,但是其并行只是基于schema的,也就是基于库的.如果用户的MySQL数据库实例中存在多个schema,对于从机复制的速度的确可以有比较大的帮助.My ...
- MySQL备库复制延迟的原因及解决办法
背景 今天有同事问我主从复制延迟会影响高可用切换的 RTO 怎么办,这个不需要做实验,我可以直接回答,所以有了以下赶鸭子的文章,都是一线运维经验之谈,建议四连:点赞.收藏.转发.在看. 复制延迟的原因 ...
- mysql 多线程并行复制_【MySQL】开启并行复制
[MySQL]开启并行复制 一.介绍 在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高.TPS 高时就会出现严重的主备延迟问题. 如果备库执行日志的速度持续低于主库生成日志的 ...
- mysql复制多行_mysql中的复制方式总结(半同步复制,并行复制,多源复制)
一.MySQL主从复制(异步复制,默认) Mysql主从复制原理 Mysql的复制原理大致如下: 1.主库记录binlog日志 在每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志b ...
- MySQL 5.7 并行复制实现原理与调优
转载:http://www.innomysql.net/article/16317.html Contents 1 MySQL 5.7并行复制时代 2 MySQL 5.6并行复制架构 3 MySQL ...
- InnoSQL/MySQL并行复制的实现与配置
InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...
- 故障分析 | 记一次 MTS 并行复制导致的死锁排查
作者:刘开洋 爱可生交付服务团队北京 DBA,对数据库及周边技术有浓厚的学习兴趣,喜欢看书,追求技术. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源 ...
- MySQL异步复制延迟解决的架构设计与运维架构ppt
<MySQL异步复制延迟解决的架构设计与运维架构ppt> 下载地址:网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731216.html
最新文章
- 梦美生命获1亿元A轮融资,鼎晖领投
- 待遇46K起,这几个公众号在招人!
- 京东员工怒怼公司:每天工作到很晚甚至凌晨,你跟我说这是幸福?
- python如何去掉一个字符串两边的引号
- 解决QT出现XXXX.dll不能加载问题
- golang mysql proxy_mixer: 一个用go实现的mysql proxy
- CascadingStyleSheets
- 正则汇总 个人汇总 不断更新中
- NOR和NAND Flash存储器的区别
- 哈希表数据结构_Java数据结构哈希表如何避免冲突
- Flink 状态管理
- 74cms3.0 SQL注入
- 一转眼,波士顿动力 Atlas 机器人又会过独木桥了!
- latex排版——博雅编辑室
- Dell optiPlex麦克风显示未插入问题解决
- 齐博x1教程:快速增加下拉菜单
- 天堂2java gm设置_请教私服GM用什么命令调整服务器属性啊?
- NYOJ2347---LYQの字符串(技巧题:应该是滑动窗)
- “大数据治理”专题导读
- 银行术语之“表内”“表外”