MySQL多线程复制配置
一、MySQL主从复制原理
master 节点上的binlogdump 线程,在slave 与其正常连接的情况下,将binlog 发送到slave 上。slave 节点的I/O Thread ,通过读取master 节点binlog 日志名称以及偏移量信息将其拷贝到本地relay log 日志文件。slave 节点的SQL Thread,该线程读取relay log 日志信息,将在master 节点上提交的事务在本地回放,达到与主库数据保持一致的目的。
MySQL5.7 的MTS(Enhanced Muti‐threadedslaves)MySQL 5.7 引入了新的机制来实现并行复制,不再有基于库的并行复制限制,主要思想就是slave 服务器的回放与主机是一致的,即master 服务器上是怎么并行执行,slave 上就怎样进行并行回放。
【注】MySQL5.7之前,主从复制中从库都是单线程复制。
二、MySQL多线程复制
2.1 slave_parallel_type参数介绍
mysql v5.7.2 进行了优化,增加了参数slave_parallel_type参数有两个选项:
LOGICAL_CLOCK:基于逻辑时钟(即基于组提交的并行复制方式),可以在一个DATABASE 中并发执行relay log 事务。(建议使用)
DATABASE: 默认值,基于库的并行复制方式,v5.6 默认是这个参数,修改参数后每个库只能有一个复制线程。
show variables like "slave_parallel_type"; #默认为database,不建议使用。建议配置成LOGICAL_CLOCK
2.2 master_info_repository和relay_log_info_repository参数
(1)多线程从服务器可以将事务分发到不同的线程中,通过slave_parallel_workers变量调整使用的线程数量。
show variables like "slave_parallel_workers"; #建议配置为8线程,即理论主从复制速度是之前的8倍
(2)master_info_repository=TABLE # 开启MTS 功能后,会频繁更新master.info,建议设置为TABLE 减小开销,默认为FILE
show variables like "master_info_repository";
(3)relay_log_info_repository=TABLE # 建议修改为TABLE,默认为FILE
show variables like "relay_log_info_repository";
【注】slave_master_info 记录了首次同步master 的位置relay_log_recovery=ON (slave IO 线程crash,如果relay‐log损坏,则自动放弃所有未执行的relay‐log,重新从master 上获取日志,保证relay‐log 的完整性)
2.3 设置slave_parallel_workers多线程数量
(1)修改配置文件【持久化,需要重启】
[mysqld] slave-parallel-type = LOGICAL_CLOCK slave_parallel_workers = 8
注:CPU核心数可作为参考标准,即8C CPU数据库从库,可以将slave_parallel_workers设置为8!!!
(2)临时修改【重启失效】
set global slave_parallel_workers = 8;
【注】set临时修改不会立即生效,需要重启复制线程start slave。
官网介绍:https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html
2.4 保证提交的顺序性
slave_preserve_commit_order=ON 在slave 上应用事务的顺序是无序的,和relay log 中记录的事务顺序不一样,这样数据一致性是无法保证的,为了保证事务是按照relay log 中记录的顺序来回放,就需要开启参数slave_preserve_commit_order。
show variables like "slave_preserve_commit_order";
【注】虽然mysql5.7 添加MTS 后,虽然slave 可以并行应用relay log,但commit 部分仍然是顺序提交,其中可能会有等待的情况。
mysql> select * from mysql.slave_master_info; mysql> select * from mysql.slave_relay_log_info;
作者:UStarGao
链接:https://www.starcto.com/mysql/71.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-01-23Linux账户/用户的基本概念
- 2021-04-04Linux服务器配置Google二次验证登录
- 2022-01-26MongoDB logicalSession打满导致业务出现cannot add session into the cache
- 2021-06-03开源笔记Leanote解决方案
- 2021-08-05Redis持久化机制之AOF日志与RDB快照