MySQL 5.7多源复制及并行复制功能

准备环境:

os version:CentOS release 6.5 (Final)

服务器信息:

Master1:192.168.1.29

Master2:192.168.1.37

Slave:192.168.1.86

1,修改my.cnf

Slave中的my.cnf加入以下参数

启用enhanced multi-threaded slave (多线程复制)

slave-parallel-type=LOGICAL_CLOCK

slave-parallel-workers=8

master_info_repository=TABL

relay_log_info_repository=TABLE

relay_log_recovery=ON

可以通过以下监控并行复制

mysql> show tables like 'replication%';

+---------------------------------------------+

| Tables_in_performance_schema (replication%) |

+---------------------------------------------+

| replication_applier_configuration          |

| replication_applier_status                  |

| replication_applier_status_by_coordinator  |

| replication_applier_status_by_worker        |

| replication_connection_configuration        |

| replication_connection_status              |

| replication_group_member_stats              |

| replication_group_members                  |

+----------------------------------

2,授权,在master1上和master2上授权,允许slave复制

3,change master

change master tomaster_host="192.168.1.29",master_port=3306,master_user="root",master_password="Password@123456"FOR CHANNEL "master1";

change master tomaster_host="192.168.1.37",master_port=3306,master_user="root",master_password="Password@123456"FOR CHANNEL "master2";

4,启动slave

start slave for channel "master1";

start slave for channel "master2";

MySQL 5.7才可称为真正的并行复制,这其中最为主要的原因就是slave服务器的回放与主机是一致的即master服务器上是怎么并行执行的slave上就怎样进行并行回放。不再有库的并行复制限制,对于二进制日志格式也无特殊的要求(基于库的并行复制也没有要求)。

从MySQL官方来看,其并行复制的原本计划是支持表级的并行复制和行级的并行复制,行级的并行复制通过解析ROW格式的二进制日志的方式来完成,WL#4648。但是最终出现给小伙伴的确是在开发计划中称为:MTS: Prepared transactions slave parallel applier,可见:WL#6314。该并行复制的思想最早是由MariaDB的Kristain提出,并已在MariaDB 10中出现,相信很多选择MariaDB的小伙伴最为看重的功能之一就是并行复制。

相关推荐