跳至主要內容

MySQL集群部署:多主多从

程序猿DDMySQLMySQL大约 3 分钟

MySQL集群部署:多主多从

环境准备

MySQL多主多从环境就是一个集群中有多个互为主从的节点,同时每个互为主从的写节点又挂载只读的从节点。之前的章节已经介绍过主从搭建、双主搭建的方法,多主多从架构也是在其基础上进行改造。总的来说,MySQL的集群基本上是在主从架构的基础上进行演化改进的。所以下面我主要列出搭建的核心步骤和配置文件,不再一一细讲。

分别在每个节点配置 /etc/hosts 主机域名映射。

#IP             域名|主机名
10.53.207.20    10.53.207.20  #master1
10.53.207.21    10.53.207.21  #master2
10.53.207.22    10.53.207.22  #slave1
10.53.207.23    10.53.207.23  #slave2

关闭防火墙:ufw disable

重启网络执行:

sudo systemctl restart systemd-resolved;
bash /etc/hosts;

或者

sudo /etc/init.d/dns-clean start;
sudo /etc/init.d/networking restart;

master节点配置

配置这两个节点:10.53.207.20,10.53.207.21

  1. my.cnf 文件(默认在 /etc/mysql/ 下)配置,我只配置了关键核心属性,其他属性读者可以自定义配置

10.53.207.20

[mysqld]
#集群中服务实例的唯一标识,两个节点不能相同
server-id = 20
# 开启gtid
gtid_mode = ON
enforce_gtid_consistency = 1
# 设置自增ID初始值为1,每次自增量为2。即都是奇数1,3,5,7,...
auto_increment_offset = 1
auto_increment_increment = 2
# 不需要写binlog的库
binlog_ignore_db = mysql
binlog_ignore_db = information_schema
binlog_ignore_db = performance_schema
binlog_ignore_db = sys
# 从库不进行同步的库
replicate_ignore_db = mysql
replicate_ignore_db = information_schema
replicate_ignore_db = performance_schema
replicate_ignore_db = sys

10.53.207.21

[mysqld]
server-id=21
# 开启gtid
gtid_mode = ON
enforce_gtid_consistency = 1
# 设置自增ID初始值为2,每次自增量为2。即都是偶数2,4,6,8,...
auto_increment_offset = 2
auto_increment_increment = 2
# 不需要写binlog的库
binlog_ignore_db = mysql
binlog_ignore_db = information_schema
binlog_ignore_db = performance_schema
binlog_ignore_db = sys
# 从库不进行同步的库
replicate_ignore_db = mysql
replicate_ignore_db = information_schema
replicate_ignore_db = performance_schema
replicate_ignore_db = sys

配置完成后分别重启两个服务:service mysql restart

2、然后分别在两个节点中创建数据同步账户:

use mysql;
create user 'repl'@'10.53.207.%' identified by 'P@repl';
grant replication slave on *.* to 'repl'@'10.53.207.%';
flush privileges;

3、分别在两个节点配置并开启主从同步:

10.53.207.20

change master to
    master_host='10.53.207.21',
    master_port=3306,
    master_user='repl',
    master_password='P@repl',
    master_auto_position=1,
    get_master_public_key=1;

开启主从同步:start slave

10.53.207.21

change master to
    master_host='10.53.207.20',
    master_port=3306,
    master_user='repl',
    master_password='P@repl',
    master_auto_position=1,
    get_master_public_key=1;

开启主从同步:start slave

4、验证双主架构

可以在任意一个节点同时执行 show master status 和 show replica status 来查看 主从同步信息。

分别在两个服务上进行数据的更新,发现数据都可以同步至另外的主节点。

slave节点配置

配置这两个节点:10.53.207.22,10.53.207.23

1、my.cnf 文件配置

10.53.207.22

[mysqld]
server-id=22
read_only=1
gtid_mode=ON
enforce_gtid_consistency=1

replicate_ignore_db = mysql
replicate_ignore_db = information_schema
replicate_ignore_db = performance_schema
replicate_ignore_db = sys

10.53.207.23

[mysqld]
server-id=23
read_only=1
gtid_mode=ON
enforce_gtid_consistency=1

replicate_ignore_db = mysql
replicate_ignore_db = information_schema
replicate_ignore_db = performance_schema
replicate_ignore_db = sys

配置完成后分别重启两个服务:service mysql restart

2、配置主从同步信息并开启同步服务。

10.53.207.22

change master to
    master_host='10.53.207.20',
    master_port=3306,
    master_user='repl',
    master_password='P@repl',
    master_auto_position=1,
    get_master_public_key=1;

开启主从同步:start slave

10.53.207.23

change master to
    master_host='10.53.207.21',
    master_port=3306,
    master_user='repl',
    master_password='P@repl',
    master_auto_position=1,
    get_master_public_key=1;

开启主从同步:start slave

集群验证

可以在每个节点通过 show slave status 或者 show replica status 查看主从同步状态,通过 show master status 查看主节点状态。

可以在主节点(10.53.207.20,10.53.207.21)上进行插入数据,发现数据都能同步至其他节点(包括另一个主节点和其他从节点)。

在从节点无法进行数据更新( super 和 connection_admin 权限的用户不受只读属性限制),只能进行查询,并且可以同步主节点的数据。

本文转载自:https://www.cnblogs.com/hewei-blogs/articles/17637254.html

我们正在连载开发者安装大全open in new window,主要整理与汇总开发者常用软件、编程环境、中间件等工具的安装使用方法,以指导开发者快速搭建自己需要的开发环境,欢迎关注、收藏、转发支持一下啊 ^_^

上次编辑于:
贡献者: 程序猿DD