环境准备
为了搭建MySQL数据库主从复制(双主双从模式),准备一下四台服务器,并明确了各节点的角色及IP地址。
角色 | IP地址 | 节点名称 |
---|---|---|
Master1 | 192.168.67.140 | CentOS01 |
Slave1 | 192.168.67.130 | CentOS02 |
Master2 | 192.168.67.180 | CentOS04 |
Slave2 | 192.168.67.190 | CentOS05 |
双主双从配置过程
一、双主机配置
1、Master1节点配置
修改配置文件:vim /etc/my.cnf,主要修改内容如下:
#主服务器唯一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
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=1
2、Master2配置
修改配置文件:vim /etc/my.cnf,主要修改内容如下:
#主服务器唯一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
#表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 .. 65535
auto-increment-increment=2
# 表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 .. 65535
auto-increment-offset=2
二、双从机配置
1、Slave1配置
修改配置文件:vim /etc/my.cnf,主要修改内容如下:
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
2、Slave2配置
修改配置文件:vim /etc/my.cnf,主要修改内容如下:
#从服务器唯一ID
server-id=4
#启用中继日志
relay-log=mysql-relay
三、双主机、双从机重启mysql服务
四、主机从机都关闭防火墙
五、在两台主机上建立帐户并授权slave
#在主机MySQL里执行授权命令
grant replication slave on *.* to ‘htzw2020’@‘192.168.67.%’ identified by ‘123456’;
#查询Master1的状态
show master status;
#查询Master2的状态
show master status;
分别记录下File和Position的值
执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
六、在从机上配置需求复制的主机
Slave1复制Master1,Slave2复制Master2
#复制主机的命令
mysql> CHANGE MASTER TO
MASTER_HOST='master_host_name',
MASTER_PORT='master_port'
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=xxx;
Slave1的复制命令如下
CHANGE MASTER TO
MASTER_HOST='192.168.67.140',
MASTER_PORT=3306,
MASTER_USER='htzw2020',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000036',
MASTER_LOG_POS=107;
Slave2的复制命令如下
CHANGE MASTER TO
MASTER_HOST='192.168.67.180',
MASTER_PORT=3306,
MASTER_USER='htzw2020',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000038',
MASTER_LOG_POS=107;
启动两台从服务器复制功能
start slave;
查看从服务器的状态
show slave status\G
Slave1的复制Master1
Slave2的复制Master2
下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
七、两个主机互相复制
Master2复制Master1,Master1复制Master2
Master2的复制命令如下
CHANGE MASTER TO
MASTER_HOST='192.168.67.140',
MASTER_PORT=3306,
MASTER_USER='htzw2020',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000036',
MASTER_LOG_POS=107;
Master1的复制命令如下
CHANGE MASTER TO
MASTER_HOST='192.168.67.180',
MASTER_PORT=3306,
MASTER_USER='htzw2020',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000038',
MASTER_LOG_POS=107;
启动两台主服务器复制功能
start slave;
查看两台主服务器的状态
show slave status\G
Master2的复制Master1
Master1的复制Master2
八、Master1主机新建库、新建表、insert记录,Master2和从机复制
九、如何停止从服务复制功能
stop slave;
十、如何重新配置主从
stop slave;
reset master;