- 一个主机 m1 用于处理所有写请求,它的从机 s1 和另一台主机 m2 还有它的从机 s2 负责所有读请
求。当 m1 主机宕机后,m2 主机负责写请求,m1、m2 互为备机。
- 双主配置
2.1.1 m1配置
修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
#设置需要复制的数据库
binlog-do-db=test_slave
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
2.1.2 m2配置
修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=3 #启用二进制日志
log-bin=mysql-bin
#设置需要复制的数据库
binlog-do-db=test_slave
#设置logbin格式
binlog_format=STATEMENT
# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2
2.2 双从配置
2.2.1 s1配置
修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
2.2.2 s2配置
修改配置文件:vim /etc/my.cnf
#从服务器唯一ID
server-id=4 #启用中继日志
relay-log=mysql-relay
- 四台服务器都重启mysql
service mysql restart
- 主机从机都关闭防火墙
systemctl stop firewalld.service
- 停止主从复制(因为配置多单主单从,需要重新配置,如无,请忽略),然后在两台主机上建立帐户并授权 slave
# 启动mysql 输入密码
cd /usr/local/mysql
./bin/mysql -u root -p
stop slave;
reset master;
# 执行在两台主机上建立帐户并授权 slave
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'root';
- 查询m1的状态
show master status;
查询m2的状态
show master status;
分别记录下File和Position的值 执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
- 从机上配置需要复制的主机
s1 复制 m1
CHANGE MASTER TO MASTER_HOST='192.168.10.106',
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=438;
s2 复制 m2
CHANGE MASTER TO MASTER_HOST='192.168.10.107',
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
- 启动两台从服务器复制功能
start slave;
#查看从服务器状态
show slave status\G;
下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 两个主机互相复制
m2 复制 m1,m1 复制 m2
CHANGE MASTER TO MASTER_HOST='192.168.10.106',
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=438;
CHANGE MASTER TO MASTER_HOST='192.168.10.107',
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;
启动两台主服务器复制功能
start slave;
#查看从服务器状态
show slave status\G;
- 数据库验证