mysql并行复制
来源:互联网 发布:深圳淘宝代运营 编辑:程序博客网 时间:2024/06/08 04:48
先重复下MySQL复制原理,其通过三个线程来完成,在master节点上运行的binlogdump线程以及在slave节点上运行的I/O线程和SQL线程。具体如下:
1. master节点上的binlogdump线程,在slave与其正常连接的情况下,将binlog发送到slave上。
2.slave节点上的I/O线程,通过读取master节点发送的内容,并将数据复制到本地的relaylog中。
3.slave节点上的SQL线程,读取relaylog中的日志,并将其事务在本地执行。
Master节点的多个数据库并发进行事务提交,提交的事务根据LSN号顺序的写入binlog,slave节点通过I/O线程将master上的binlog写到本地relaylog中,在slave节点只有一个SQL线程来执行relaylog中的日志,这样很容易造成slave延迟。
在MySQL5.6中,引入了并发复制,这个并发复制是数据库级别的,这意味着一个SQL线程可以处理一个数据库的连续事务,而不用等待其它数据库完成。这个版本的并发复制,可以理解成一个数据库一个SQL线程。其与并发有关的参数如下:
slave_parallel_workers // worker 线程个数
slave-checkpoint-group // 隔多少个事务做一次 checkpoint
slave-checkpoint-period // 隔多长时间做一次 checkpoint
slave-pending-jobs-size-max // 分发给worker的、处于等待状态的event的大小上限
MySQL5.6基于DATABASE级别的并发复制可以解决业务表放在不同的database下同步延迟的问题,但是在实际生产中大部分表还是放在同一个库中的,这种情况即使设置slave_parallel_workers大于0,也无法进行并发。在高并发的情况下,依然会造成主从复制延迟。
在MySQL5.7中,引入了新的并发复制方法,基于LOGICAL_CLOCK的并发复制,可以支持在一个database中,并发执行relaylog中的事务。
相同的二进制日志组在master上提交并行应用到slave节点上,没有跨数据库的限制,并且不需要把数据分割到多个数据库。
要实现这个功能,需要在master节点标记binlog中提交的事务哪些是可以并发执行,虽然的MySQL5.6中已经引入binarylog group commit,但是没有将可并发的事务标记出来。
可以通过此命令来查看:mysqlbinlog-vvv mysql-bin.000106 | grep -i last_commit
在MySQL5.7中,已经解决了主从复制延迟的问题,具体配置参数如下:
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=16
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
- mysql并行复制
- mysql并行复制
- MySQL的并行复制
- mysql 5.7.9 并行复制
- mysql的主从复制,并行复制
- mysql主从复制和并行复制
- MySQL源码改造之并行复制改进
- MySQL源码改造之并行复制改进
- MySQL逻辑并行复制的实现
- mysql的主从复制和并行复制的实现
- MySQL 5.7并行复制实现原理与调优
- MySQL 5.7并行复制实现原理与调优
- MySQL 5.7 并行复制实现原理与调优
- 阿里RDS开发专家解析MySQL各版本并行复制
- MYSQL 5.7 并行复制实现原理与调优
- MySQL优化之并行复制优化(二)
- MYSQL 5.7 并行复制实现原理与调优
- 各版本MySQL并行复制的实现及优缺点
- js实时获取鼠标所在坐标
- ubuntu 14.04安装codeblocks
- 6.13字符字节流
- Android报错: can't load transform_config.xml
- tcp/udp高并发和高吐吞性能测试工具
- mysql并行复制
- matlab代码运行文件夹内的数据并将数据保存
- (Hadoop学习-2)mapreduce实现二次排序
- 搭建CAS单点登录服务器
- 证明实数区间不可数的新方法
- Android黑名单来电管理
- Spring框架的AOP源码剖析
- shell脚本小工具之万能解压和压缩器---实现思路
- Permutations 排列的实现