-- 查看主从复制的并发模型
SHOW VARIABLES LIKE '%slave_parallel%'
-- 设置开启多线程复制,线程数量为8个
STOP SLAVE SQL_THREAD;
SET GLOBAL slave_parallel_type = 'LOGICAL_CLOCK';
SET GLOBAL slave_parallel_workers = 8;
START SLAVE SQL_THREAD;
Mysql 5.7 的主从复制
(1)新版本增加了一种类型,变成了两种类型
1、DATABASE 基于库的并行复制 , 每个数据库对应一个复制线程(5.6版本就有了,然并卵);
2、LOGICAL_CLOCK 基于组提交的并行复制方式,同一个数据库下可以有多个线程(对大多数数据库更实用)。
对于第二种类型,设置参数slave_parallel_workers>0并且global.slave_parallel_type=‘LOGICAL_CLOCK’,即可支持一个schema下,slave_parallel_workers中的worker线程并发执行relay log中主库提交的事务。
(2)从MySQL官方文件看,其并行复制的要实现的目标是支持表级的并行复制和行级的并行复制,行级的并行复制通过解析ROW格式的二进制日志的方式来完成。
(3)5.7版本基于组提交的并行复制核心思想是:一个组提交的事务都是可以并行回放的,因为这些事务都已进入到事务的prepare阶段,则说明事务之间没有任何冲突(否则就不可能提交)。