[MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7
2016-12-02 14:23
288 查看
一、缘由:
某天看到主从复制延时的告警有点频繁,就想着是不是彻底可以解决一下。 一般主从复制,有三个线程参与,都是单线程: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/相关文章推荐
- mysql5.7号称永久解决了复制延迟问题的并行复制
- [MySQL] 号称永久解决了复制延迟问题的并行复制,MySQL5.7
- MySQL5.7号称永久解决了复制延迟问题的并行复制
- [置顶] MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- 关于解决 MySQL 数据库主从复制延迟的问题
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- 怎样解决MySQL数据库主从复制延迟的问题
- 深入mysql主从复制延迟问题的详解
- 怎样解决MySQL数据库主从复制延迟的问题
- 怎样解决MySQL数据库主从复制延迟的问题(最后一个解决方案)
- 解决Mysql复制Relay log read failure 的问题
- mysql中主从复制延迟问题
- 关于 解决MySQL数据库主从复制延迟的问题
- MySQL异步复制备忘(主从复制,GR的基础,延迟问题参见mysql-tranfer)
- 【干货】MySQL5.6配置同步复制的新方法以及常见问题的解决方法
- MySQL的主从复制延迟问题
- mysql中主从复制延迟问题
- Linux系统下永久解决mysql存储中文问题
- 怎样解决MySQL数据库主从复制延迟的问题