转载请注明转载自:忆雨林枫

5.7多源复制下开启多线程

目前的情况是有多个复制源,版本是5.7.17,但是惊奇的是,原来的搭建者,并没有使用5.7的新功能多线程并行复制。
又由于带宽和负载相对较大的,导致复制延迟严重,最多时达到四千多秒。为了不想每天收到几百封邮件,故在线开启多线程并行复制。

第一步:先检查参数,确定当前的参数和需要修改的。

show variables like ‘slave_parallel_%’;
show variables like ‘%relay_log_recovery%’;
show variables like ‘relay_log_recovery’ ;

提示:
slave_parallel_type参数默认是database,因为5.6是基于库的并行复制。
slave_parallel_workers默认是0,表示不是用多线程并行复制,设置的值,要根据当前服务器的CPU和核数确定,一般不超过总核数的一半。如果是多库那么建议相对于单库就可以大一点。

第二步:停止SQL_THREAD进程

stop slave sql_thread;

提示:STOP SLAVE SQL_TRREAD和START SLAVE SQL_TRREAD命令跟STOP SLAVE和START SLAVE一样,可以操作所有的,也可以操作单个通道。而并行是全局的,所以需要停止所有的通道。

第三步:修改对应的参数

set global slave_parallel_type=’LOGICAL_CLOCK’;
set global slave_parallel_workers=8;
SET GLOBAL relay_log_recovery=on;
SET GLOBAL master_info_repository = ‘TABLE’;
SET GLOBAL relay_log_info_repository = ‘TABLE’;

第四步:开启SQL_THREAD进程

start slave sql_thread;

最后验证,修改的参数是否生效,为了以后重启后生效,建议把对应的参数,添加到MySQL的配置文件中。
我这边,修改后,十个小时过去后,基本上没有收到延迟提醒的邮件,说明效果还是杠杠滴。