原理

多源复制,就是把多台主库的数据同步到一台从库服务器上,从库会创建通往每个主库的管道。

MySQL 5.7之前,只能实现一主一从、一主多从 或 多主多从的复制架构。

MySQL 5.7版本之后 支持 多主一从,搭建过程支持 GTID模式 和 binlog + position 方式。

架构图如下:

优势:

  • (1)可以集中备份,在从库上备份,不影响线上数据库正常运行。

  • (2)节约购买从库服务器 成本,只需一个从服务器即可。

  • (3)数据都汇总在一起,方便后期数据统计。

搭建过程

使用基于MySQL5.7版本的两主一从架构。

描述 host
MasterA 192.168.23.132
MasterB 192.168.23.131
Slave 192.168.23.133

注意事项:

  • MasterA、MasterB 不能拥有相同名称的数据库,否则会在从库上出现数据覆盖。

  • MasterA -> slave 与 MasterB -> slave 要使用不同的复制账号。

三台机器的数据库参数配置 与 GTID复制一致,保证 开启 GTID 功能,server-id 之间不一致,binlog 格式 为 row 模式。

从库需要的参数配置:

master_info_repository=table
relay_log_info_repository=table

对于多源复制,主从间复制信息需要记录到表中。

(1)分别在 MasterA 和 MasterB 上创建复制账号。

MasterA:

create user 'bak'@'192.168.23.%' identified by 'bak123456';

grant replication slave on *.* to 'bak'@'192.168.23.%';

flush privileges;

MasterB:

create user 'rep'@'192.168.23.%' identified by 'rep123456';

grant replication slave on *.* to 'rep'@'192.168.23.%';

flush privileges;

(2)分别在 MasterA 和 MasterB 上使用 mysqldump 导出需要备份的 库 数据。

示例使用 database_a 和 database_b。并传递到 从库 服务器上。

MasterA:

mysqldump -uroot -pliu123456 --master-data=2 --single-transaction database_a > database_a.sql

MasterB:

mysqldump -uroot -pliu123456 --master-data=2 --single-transaction database_b > database_b.sql

(3)从库恢复数据

mysql -uroot -pliu123456 < database_a.sql

mysql -uroot -pliu123456 < database_b.sql

(4)在从库上分别 配置 MasterA -> slave 和 MasterB -> slave 的同步过程

# MasterA -> slave
change master to
master_host='192.168.23.132',
master_user='bak',
master_password='bak123456',
master_auto_position=1 for channel 'm1';

# MasterB -> slave
change master to
master_host='192.168.23.131',
master_user='rep',
master_password='rep123456',
master_auto_position=1 for channel 'm2';

for channel 'm1'for channel 'm2' 表示创建 m1、m2 两个从库到主库的通道

(5)开启主从复制

方式一:

使用 start slave; 开启所有复制。

方式二:

使用 start slave for channel 'm1 或 m2' 来分别开启。

通过 show slave status for channel 'm1'\Gshow slave status for channel 'm2'\G 命令分别查看复制源 m1 和 m2 的主从同步状态。

也可以通过 performance_chema 库下 replication_connection_configuration 表来查看复制配置信息,replication_connection_status 表中的内容用来监控主从复制状态。

(6)验证数据是否同步

在 MasterA、MasterB 的同步库中 插入数据,然后 在 从库 slave 上查看 数据是否同步。

如同步正常,则搭建成功。

作者:admin  创建时间:2023-01-06 09:41
最后编辑:admin  更新时间:2023-01-06 14:07