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的小伙伴最为看重的功能之一就是并行复制。