linux之mysql57并行复制(提高延迟)
1 查看当前参数
show global variables like 'slave_parallel_workers'; 默认0,单线程
show global variables like'%slave_parallel_type%'; #默认是多线程机制是一个线程处理一个库
2 配置主服务器vim /etc/my.cnf
binlog_group_commit_sync_delay=1000 提交延迟
binlog_group_commit_sync_no_delay_count=100 每组包含的事务数量
3 配置从服务器vim /etc/my.cnf
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=8
slave_pending_jobs_size_max=2147483648
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
relay_log_purge=ON
4 变量说明
#变量binlog_group_commit_sync_delay
全局动态变量,单位微妙,默认0,范围:0~1000000(1秒)。
表示binlog提交后等待延迟多少时间再同步到磁盘,默认0,不延迟。设置延迟可以让多个事务在用一时刻提交,提高binlog组提交的并发数和效率,提高slave的吞吐量。
#变量binlog_group_commit_sync_no_delay_count
全局动态变量,单位个数,默认0,范围:0~1000000。
表示等待延迟提交的最大事务数,如果上面参数的时间没到,但事务数到了,则直接同步到磁盘。若binlog_group_commit_sync_delay没有开启,则该参数也不会开启
#变量slave-parallel-type可以有两个值:DATABASE 默认值,基于库的并行复制方式;LOGICAL_CLOCK:基于组提交的并行复制方式
slave-parallel-type=LOGICAL_CLOCK
#提交的事务都是可以并行回放(配合binary log group commit);
slave-parallel-workers=8
slave_pending_jobs_size_max = 2147483648
slave_preserve_commit_order=ON
#将master.info和relay.info保存在表中,默认是Myisam引擎,官方建议用
#开启MTS功能后,务必将参数master_info_repostitory设置为TABLE,这样性能可以有50%~80%的提升。这是因为并 行复制开启后对于元master.info这个文件的更新将会大幅提升
master_info_repository=TABLE
relay_log_info_repository=TABLE
#启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止。
relay_log_recovery=ON
relay_log_purge=ON