在搭建mysql的数据库双主双从之前,我们在四台不同的服务器上搭建mysql数据库,安装的步骤在下面的博客中:
linux安装mysql :https://blog.csdn.net/wangyunzhao007/article/details/104230509
一、架构图
二、配置
1.主机配置
第一台主机的配置(192.168.157.130)
#修改配置文件
vim /etc/my.cnf
在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
第二台主机的配置(192.168.157.133)
#修改配置文件
vim /etc/my.cnf
#主服务器唯一ID
server-id=3
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)Java
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
2.从机配置
第一台从机的配置(192.168.157.129)
#修改配置文件
vim /etc/my.cnf
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
第二台从机的配置(192.168.157.132)
#修改配置文件
vim /etc/my.cnf
修改配置文件: vim /etc/my.cnf
#从服务器唯一ID
server-id=4
#启用中继日志
relay-log=mysql-relay
三、主机,从机都重启mysql服务
#重启mysql服务器
systemctl restart mysqld
#查看mysql的状态
systemctl status mysqld
重启mysql服务器,查看mysql的状态,如下如是启动成功的状态,代表重启成功;
四、主机从机都关闭防火墙或者将3306端口打开
1.关闭防火墙
#关闭防火墙
service firewalld stop/systemctl stop firewalld
#开启防火墙
service firewalld start/systemctl start firewalld
#查看防火墙的状态
systemctl status firewalld
关闭防火墙之后我们需要查看防火墙的状态,下图分别使我们开启防火墙之后和关闭防火墙之后分查看防火墙的状态:
2.在防火墙开端口 (如果选择了关闭防火墙就不用做这步了)
#开3306端口
firewall-cmd --permanent --zone=public --add-port=3306/tcp
添加成功如下图所示,这时候还需要重新载入防火墙才能生效
#防火墙重新载入
firewall-cmd --reload
重新载入防火墙成功
然后验证是否添加成功
#查看是否添加成功
firewall-cmd --zone=public --query-port=3306/tcp
验证成功,已经添加完毕
五、在两台主机上建立账户并授权给从机(给从机分配账号,用来连接)
1.在liunx系统中登录mysql的主机
#u后是root账户,-p后密码是123456
mysql -uroot -p123456
2.给从机分配一个账号用来做主从复制
#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
3.查看两个master的状态,并记录必要信息,在从机连接时需要。
#查询master的状态
show master status;
输入命令后我们可以看到一下几个信息 :
记录下File和Position的值
执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
六、开启主从复制
1.两组主从
先做其中一组(130和129的)
在liunx系统中登录mysql的从机(129)
#u后是root账户,-p后密码是123456
mysql -uroot -p123456
停止主从复制(不论有没有开启)
#停止从服务器复制功能
stop slave;
重新配置主从
reset master;
配置复制的主机(129复制130,汉字需要改成第五步中上图show master中的值)
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.日志具体数字',MASTER_LOG_POS=位点具体值;
示例,这是根据我的信息写的命令:
CHANGE MASTER TO MASTER_HOST='192.168.157.130',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=2635;
启动复制
start slave;
查看主从复制的状态
#查看从服务器状态
show slave status\G;
看到下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则证明主从复制成功了。
另外一组是一样的,照着上边的过程搭建一遍。
2.主机互为主从
133复制130
刚刚130的从机129复制了130,133的命令和步骤和刚刚129复制的一样。两个主机互为主从也就是说,两个主机互相复制。
停止主从复制(不论有没有开启)
#停止从服务器复制功能
stop slave;
重新配置主从
reset master;
配置复制的主机(133复制130,汉字需要改成第五步中上图130主机show master中的值)
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.日志具体数字',MASTER_LOG_POS=位点具体值;
示例,这是根据我的信息写的命令:
CHANGE MASTER TO MASTER_HOST='192.168.157.130',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=2635;
启动复制
start slave;
查看主从复制的状态
#查看从服务器状态
show slave status\G;
看到下面两个参数都是Yes,则说明主从配置成功!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
则证明133复制130主从复制成功了。
130复制133
停止主从复制(不论有没有开启)
#停止从服务器复制功能
stop slave;
重新配置主从
reset master;
配置复制的主机(130复制133,汉字需要改成第五步中上图133主机show master中的值)
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.日志具体数字',MASTER_LOG_POS=位点具体值;
示例,这是根据我的信息写的命令:
CHANGE MASTER TO MASTER_HOST='192.168.157.133',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
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
则证明主从复制成功了。
两次的主从都成功了,说明互为主从就搭建完毕了。