mysql5.7组复制_mysql5.7组复制最佳实践

b17e4f3e2e0e0cffa465ca6f818dcbad.png

mysql5.7的版本是真正意义上实现了组提交和组复制的,在mysql5.6版本虽然也有并行复制,但其实现的是不同模式下的表才能并行复制,而在5.7的版本,只要是一组没有冲突的事物(没有模式的限制),就可以并行在从库中进行回放,大大的提高复制效率。

在mysql5.7版本在现有的主从复制环境,可以在线去配置并行复制,基本对业务无影响,下面就来看看怎么在线配置并行复制

首先在master端配置2个并行复制参数

binlog_group_commit_sync_delay=10binlog_group_commit_sync_no_delay_count=20binlog_group_commit_sync_delay最好配置成10的倍数,因为在mysql5.7的某些版本存在bug,会导致事务提交变得非常慢。

下面来解释一下上面2个参数的含义

binlog_group_commit_sync_delay全局动态变量,单位微妙,默认0,范围:0~1000000(1秒)。

表示 binlog 提交后等待延迟多少时间再同步到磁盘,默认0 ,不延迟。当设置为 0 以上的时候,就允许多个事务的日志同时一起提交,也就是我们说的组提交。组提交是并行复制的基础,设置这个值得大于 0 就代表打开了组提交的功能。

binlog_group_commit_sync_no_delay_count全局动态变量,单位个数,默认0,范围:0~1000000。

表示等待延迟提交的最大事务数,如果上面参数的时间没到,但事务数到了,则直接同步到磁盘。若 binlog_group_commit_sync_delay 没有开启,则该参数也不会开启。

在slave端设置以下4个参数,可以在线设置,不过需要先停slave,设置完参数,在启动slave

master_info_repository='TABLE';relay_log_info_repository='TABLE';slave_parallel_workers=4;slave_parallel_type='LOGICAL_CLOCK';

如果想要实例重启之后,并行复制也生效,则需要在my.cnf配置文件添加如下配置

slave-parallel-type=LOGICAL_CLOCKslave-parallel-workers=4master_info_repository=TABLErelay_log_info_repository=TABLErelay_log_recovery=ON为了使用crash-safe replication功能,需要开启relay_log_recovery参数

至此并行复制已经开启完毕,下面检查一下并行复制的效果,可以看到在slave节点已经有4个并行的worker线程了。

be8cd4ebf382ef22782f78a63405c935.png

给大家留个问题

1.在master节点启用了binlog_group_commit_sync_delay参数,应用提交的事务响应时间会有什么影响呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值