主库写入二进制日志的时间 比如执行一个事务要30秒,会记录到二进制日志中,然后在同步到从库上
set global slave_parallel_type= 'logical_clock'; 逻辑时钟方式多线程复制
set global slave_parallel_workers=4;
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
#master_info_repository=TABLE
relay_log_info_repository=TABLE
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这#样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启
控制主库的事务大小,分割大事务
二进制日志传输时间
使用mixed 日志格式 set binlog_row_image=minimal; 减少复制的大小
默认情况下 从只有一个 sql线程,主上并发的修改在 从上变成了 串行。
从上 换成多线程复制 减少修改表结构的占用时间
mysql 5.7中 可以安装逻辑时钟的方式来 分配sql线程
从库 临时配置 多线程复制,重启mysql后,配置将不存在
stop slaveset global slave_parallel_type= 'logical_clock'; 逻辑时钟方式多线程复制
set global slave_parallel_workers=4;
start slave;
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
这两个参数会将master.info和relay.info保存在表中#master_info_repository=TABLE
relay_log_info_repository=TABLE
#当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这#样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启
relay_log_recovery=ON
show processlist; #查看复制进程,可以看到有4个
show variables like 'slave_parallel_workers'; 查看复制的进程数