多源复制需在MySQL 5.7+使用GTID模式,配置主从server-id、log-bin、gtid_mode等参数,创建复制用户,从库通过CHANGE REPLICATION SOURCE TO为每个主库建立独立通道并启动复制,确保各通道状态正常且无冲突。

在MySQL中实现多源复制(Multi-Source Replication)可以让一个从服务器(Slave)同时从多个主服务器(Master)复制数据。这种架构常用于数据聚合、备份集中管理或数据仓库场景。要实现多源复制,需要使用基于GTID的复制方式,并确保MySQL版本支持该功能(MySQL 5.7及以上,推荐使用MySQL 8.0)。
启用GTID和相关配置
多源复制通常依赖GTID(Global Transaction Identifier)来简化管理和避免事务冲突。所有参与复制的实例都需要开启GTID模式及相关参数。
在每个主库和从库的配置文件(my.cnf 或 my.ini)中添加以下内容:
server-id = 唯一值(每台机器不同)log-bin = mysql-bin
binlog-format = ROW
gtid_mode = ON
enforce-gtid-consistency = ON
replica_parallel_workers = 4 (可选,提升并行复制性能)
replica_parallel_type = LOGICAL_CLOCK
重启MySQL服务使配置生效。
为每个主库创建复制用户
在每一个主服务器上创建具有复制权限的用户,例如:
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
记录每个主库的IP地址、端口、用户名和密码,后续配置从库时会用到。
从库配置多源复制
登录到从库,使用 CHANGE REPLICATION SOURCE TO(MySQL 8.0+语法)命令为每个主库设置复制通道(Channel)。每个通道对应一个主库。
由于疫情等原因大家都开始习惯了通过互联网上租车服务的信息多方面,且获取方式简便,不管是婚庆用车、旅游租车、还是短租等租车业务。越来越多租车企业都开始主动把租车业务推向给潜在需求客户,所以如何设计一个租车网站,以便在同行中脱颖而出就重要了,易优cms针对租车行业市场需求、目标客户、盈利模式等,进行策划、设计、制作,建设一个符合用户与搜索引擎需求的租车网站源码。 网站首页
示例:添加两个主库的复制关系:
CHANGE REPLICATION SOURCE TOSOURCE_HOST='master1_ip',
SOURCE_PORT=3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='password',
SOURCE_AUTO_POSITION=1
FOR CHANNEL 'master1'; CHANGE REPLICATION SOURCE TO
SOURCE_HOST='master2_ip',
SOURCE_PORT=3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='password',
SOURCE_AUTO_POSITION=1
FOR CHANNEL 'master2';
每个通道名称(如 'master1')必须唯一,用于区分不同的复制流。
启动并监控复制状态
执行以下命令启动所有通道的复制:
START REPLICA FOR CHANNEL 'master1';START REPLICA FOR CHANNEL 'master2';
查看各通道的复制状态:
SHOW REPLICA STATUS FOR CHANNEL 'master1'\GSHOW REPLICA STATUS FOR CHANNEL 'master2'\G
重点关注 Seconds_Behind_Source、Replica_IO_Running 和 Replica_SQL_Running 是否正常。
基本上就这些。只要各主库独立写入不同数据库或表,避免主键冲突,多源复制就能稳定运行。注意定期检查错误日志和复制延迟,确保数据一致性。









