mysql5.7组复制多主一从搭建,MySQL 5.7 多主一从的复制结构

多源复制的作用

MySQL 5.7.6 开始,添加了一个新特性:多源复制Multi-Source Replication

可以让你同时从多个master中并行复制,也就是形成了一种新的主从复制结构一从多主

以前都是一主多从的结构,想实现一从多主的复制需要自己想办法,现在好了,直接支持了

多源复制的应用场景示例:

比如我们分库后有多台数据库服务器,后台统计系统需要对数据进行汇总,就可以使用多源复制实现汇总功能

比如我们有多个项目,分为了多台数据库服务器,想使用主从复制进行数据备份,就可以使用多源复制,把多个数据库复制到同一台服务器中,如果没有多源复制这个功能,就要自己想办法实现,增加了数据库管理难度,或者使用多个从服务器分别进行复制,增加了资源开销

多源复制的配置

多源复制支持两种主从复制方式:基于日志位置复制、基于GTID的复制

下面以GTID的方式为例,介绍配置的具体步骤

前期准备

准备3个MySQL,我的版本是 5.7.13,IP分别为:

master1 192.168.31.221

master2 192.168.31.207

slave 192.168.31.158

然后检查3个MySQL的 server_uuid,确保是不同的,否则会复制失败

因为使用复制出来的两台虚机,或者在Docker中使用同一MySQL镜像的两个容器时,就会出现 uuid 相同的情况

mysql> SHOW VARIABLES like '%server_uuid%';

如果值相同,查看 my.cnf 中 datadir 的位置,其目录下有一个文件 auto.cnf,把其中的 server-uuid 值改一下,注意不要增减长度,例如把最后一个字符改下即可

配置 master

修改 master1、master2 的 my.cnf,在[mysqld]下添加:

[mysqld]

...

log-bin=mysql-bin

server-id=221

gtid_mode=on

enforce-gtid-consistency=true

...

server-id要确保唯一,例如设为IP的尾号

保存后重新启动MySQL

然后创建用于slave复制的用户

在master1中执行

mysql> GRANT REPLICATION SLAVE ON *.* to 'master1'@'%' identified by '123456';

在master2中执行

mysql> GRANT REPLICATION SLAVE ON *.* to 'master2'@'%' identified by '123456';

配置 slave

修改 my.cnf,在[mysqld]下添加:

server_id=207

log-bin=mysql-bin

read_only=on

gtid_mode=on

enforce-gtid-consistency=true

master_info_repository=TABLE

relay_log_info_repository=TABLE

保存后重启MySQL

添加 master1、master2

mysql> CHANGE MASTER TO MASTER_HOST='192.168.31.221', MASTER_USER='master1', MASTER_PASSWORD='123456', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

mysql> CHANGE MASTER TO MASTER_HOST='192.168.31.207', MASTER_USER='master2', MASTER_PASSWORD='123456', MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-2';

启动复制

mysql> start slave;

检查复制状态

mysql> show slave status\G;

结果信息

**************** 1. row ************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.31.221

Master_User: master1

......

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

......

**************** 2. row ************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.31.207

Master_User: master2

......

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

......

可以看到出现了两个Master信息,说明多源复制成功,其中每个的Slave_IO_Running与Slave_SQL_Running都是YES,说明复制状态是正常的

点击“阅读原文”查看 文章列表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值