MySQL 双主双从

一个主机 master1 用于处理所有写请求, 它的从机 slave1 和另一台主机 master2 还有它的从机 slave2 负责所有读请求。

当 master1 主机宕机后, master2 主机负责写请求, master1、 master2 互为备机。 架构图如下 :

在这里插入图片描述

1、服务器规划

编号 角色 IP 地址 机器名
1 Master1 192.168.140.101 host101_master1
2 Slave1 192.168.140.201 host201_slave1
3 Master2 192.168.140.102 host102_master2
4 Slave2 192.168.140.202 host202_slave2

2、双主机配置文件修改

2.1、Master1 配置

vim /etc/my.cnf

my.cnf 的内容:

[mysqld]

#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字

#设置logbin格式
binlog_format=STATEMENT

# 双主模式中,log-slave-updates必须配置。因为作为从数据库的时候, 有写入操作也要更新二进制日志文件
log-slave-updates

#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1, 取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1

2.2、Master2 配置

修改配置文件:

vim /etc/my.cnf

my.cnf 的内容:

[mysqld]

#主服务器唯一ID
server-id=3
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema

#设置需要复制的数据库
binlog-do-db=需要复制的主数据库名字

#设置logbin格式
binlog_format=STATEMENT

#  双主模式中,log-slave-updates必须配置。因为作为从数据库的时候, 有写入操作也要更新二进制日志文件
log-slave-updates

#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2

2.3、重启Mysql,使配置生效

systemctl restart mysqld.service

3、双从机配置文件修改

3.1、Slave1 配置

vim /etc/my.cnf

my.cnf 的内容:

[mysqld]

#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

3.2、Slave2 配置

vim /etc/my.cnf

my.cnf 的内容:

[mysqld]

#从服务器唯一ID
server-id=4
#启用中继日志
relay-log=mysql-relay

3.3、重启Mysql,使配置生效

systemctl restart mysqld.service

4、双主机上创建账号,并授权远程复制

grant replication slave on *.* TO 'slave'@'%' identified by '123123';

4.1、查询Master1的状态

show master status;

在这里插入图片描述

4.2、查询Master2的状态

 show master status;

在这里插入图片描述
分别记录下 File 和 Position 的值 ,执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化。

5、双从机上执行 change master

change master 命令格式如下:

#复制主机的命令
change master to master_host='主机的IP地址',
master_user='slave',
master_password='123123',
master_log_file='mysql-bin.具体数字',
master_log_pos=154;

5.1、执行 change master 命令

Slave1 复制 Master1的命令:
在这里插入图片描述

Slave2 复制 Master2的命令:
在这里插入图片描述

5.2、启动两台从服务器复制功能

#启动两台从服务器复制功能
start slave;

5.3、查看从服务器状态

查看从服务器状态的命令:

show slave status\G;

5.3.1、Slave1 从服务器状态

在这里插入图片描述

5.3.2、Slave2 从服务器状态

在这里插入图片描述
Slave_IO_RunningSlave_SQL_Running 两个参数都是Yes,则说明主从配置成功!

从服务涉及到的命令:

1、停止从服务复制功能

stop slave;

2、重新配置主从 :

stop slave;
reset master;

6、两个主机互相复制 change master

因为是双主双从,所以要配置 Master2 复制 Master1, Master1 复制 Master2 。

Master2的复制命令
在这里插入图片描述

Master1的复制命令
在这里插入图片描述

6.1、启动两台主服务器复制功能

#在两个Mysql主服务上,执行复制功能
start slave;

6.2、查看两台主服务的从服务器状态

从服务器状态命令:

show slave status\G;

6.2.1、Master2 的服务状态:

在这里插入图片描述

6.2.2、Master1 的服务状态 :

在这里插入图片描述
Slave_IO_RunningSlave_SQL_Running 两个参数都是Yes,则说明主从配置成功!

7、双主从双 测试

在 Master1 主机新建库、新建表、 insert 记录, 然后在 Master2、slave1、slave2上查看复制 是否成功 。

在这里插入图片描述

发布了297 篇原创文章 · 获赞 263 · 访问量 114万+

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/103913870