天天看点

小白入门必知必会-MySQL双主双从安装

一 MySQL双主双从基础

1.1 介绍

一台主机Master1用于处理所有写请求,它的从机Slave1和另一台主机Master2还有它的从机Slave2负责所有读请求,当Master1主机宕机后,Master2主机负责写请求,Master1、Master2互为备机。

小白入门必知必会-MySQL双主双从安装

1.2 服务器规划

编号 服务器IP 安装软件 角色
1 192.168.0.99 MySQL-8.0.26 Master1
2 192.168.0.100 MySQL-8.0.26 Slave1
3 192.168.0.101 MySQL-8.0.26 Master2
4 192.168.0.102 MySQL-8.0.26 Slave2

二 MySQL双主双从安装

2.1 关闭防火墙

四台服务器分别执行

systemctl stop firewalld

systemctl disable firewalld

2.2 安装数据库环境

四台服务器分别执行,之前已分享过MySQL的安装文章,此处不再赘述。

2.3 Master1主库配置

192.168.0.99服务器操作

vim /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,默认为1

server-id=1

#指定同步的数据库

binlog-do-db=db01

binlog-do-db=db02

binlog-do-db=db03

# 在作为从数据库的时候,有写入操作也要更新二进制日志文件

log-slave-updates

重启mysql

systemctl restart mysqld

2.4 Master2主库配置

192.168.0.101服务器操作

vim /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 2^32-1,默认为1

server-id=3

#指定同步的数据库

binlog-do-db=db01

binlog-do-db=db02

binlog-do-db=db03

# 在作为从数据库的时候,有写入操作也要更新二进制日志文件

log-slave-updates

重启mysql

systemctl restart mysqld

2.5 两台主库创建账户并授权

192.168.0.99和192.168.0.101分别执行

#创建test用户,并设置密码,该用户可在任意主机连接该MySQL服务

create user 'test'@'%' identified with mysql_native_password by 'Test@123456';

#为 'test'@'%' 用户分配主从复制权限

grant replication slave on *.* to 'test'@'%';

通过指令查看两台主库的二进制日志坐标

小白入门必知必会-MySQL双主双从安装

2.6 Slave1从库配置

192.168.0.100服务器操作

vim /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1

server-id=2

重启mysql

systemctl restart mysqld

2.7 Slave2从库配置

192.168.0.102服务器操作

vim /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1 – 232-1,默认为1

server-id=4

重启mysql

2.8 两台从库分别设置关联的主库

需要注意Slave1对应的是Master1,Slave2对应的是Master2。

192.168.0.100数据库执行如下sql:

change replication source to source_host='192.168.0.99',source_user='test',source_password='Test@123456',source_log_file='binlog.000002',source_log_pos=663;

start slave;

show slave status\G;

小白入门必知必会-MySQL双主双从安装

192.168.0.102数据库执行如下sql:

change replication source to source_host='192.168.0.101',source_user='test',source_password='Test@123456',source_log_file='binlog.000002',source_log_pos=663;

start slave;

show slave status\G;

小白入门必知必会-MySQL双主双从安装

2.9 两台主库相互复制

Master2复制Master1,Master1复制Master2

Master1:192.168.0.99执行如下SQL:

change replication source to source_host='192.168.0.101',source_user='test',source_password='Test@123456',source_log_file='binlog.000002',source_log_pos=663;

start slave;

show slave status\G;

小白入门必知必会-MySQL双主双从安装

Master2:192.168.0.101执行如下SQL:

change replication source to source_host='192.168.0.99',source_user='test',source_password='Test@123456',source_log_file='binlog.000002',source_log_pos=663;

start slave;

show slave status\G;

小白入门必知必会-MySQL双主双从安装

2.10 测试

分别在两台主库Master1、Master2上执行DDL、DML语句,查看涉及到的数据库服务器的数据同步情况。

在Master1创建数据库db01,发现其它三台数据库都会同步

create database db01;

在Master1创建表,发现其它三台数据库也会同步

use db01;

create table tb_user(

id int(11) not null,

name varchar(50) not null,

sex varchar(1),

primary key (id)

)engine=innodb default charset=utf8;

在Master2插入数据,发现其它三台数据库也会同步

insert into tb_user(id,name,sex) values(1,'Cat','1');

insert into tb_user(id,name,sex) values(2,'Lucy','0');

insert into tb_user(id,name,sex) values(3,'Candy','1');

至此,MySQL双主双从安装完成,感谢观看。

继续阅读