0、安装前环境准备
① 本篇是基于Linux操作系统中的安装,MySQL的演示基于2主2从,故先准备4个已经安装好JDK和MySQL服务的Linux操作系统(MySQL在Linux系统下的安装可以参考之前我写的这篇教程:
【软件安装】MySQL在Linux系统中的安装_FeenixOne的博客-CSDN博客0、安装前环境准备① 本篇是基于Linux操作系统中的安装,故先准备一个干净的Linux操作系统。本文中所有的操作基于CentOS8进行安装演示;② 接下来的演示文本中,红色字体为操作步骤,黑色字体为解释说明。1、下载MySQL安装包到本地MySQL安装包下载地址:MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/mysql/cd /usr/local/mkdir sourcecd sohttps://blog.csdn.net/FeenixOne/article/details/122686921只要你跟着我教程里的步骤去做,就一定能够安装好MySQL服务)。本文中所有的操作基于CentOS8进行安装演示;
② 接下来的演示文本中,红色字体为操作步骤,黑色字体为解释说明。
在此架构中,可以让一台主机用来处理所有写请求,此时,它的从机和备机,以及备机的从机复制所有读请求。当主机宕机之后,另一台主机负责写请求,两台主机互为备机。
1、修改Master1中MySQL配置文件
vim /etc/my.cnf
log-bin=mysql-bin 指定要启动的binlog日志名称
binlog-ignore-db=mysql 指定忽略数据同步的数据库
binlog-do-db=feenix 指定需要数据同步的数据库
binlog_format=STATEMENT binlog的日志格式
2、修改Master2中MySQL配置文件
vim /etc/my.cnf
注意,Master2相比较于Master1的my.cnf配置文件中多了一个: log-slave-updates,这个参数指的是“在作为从数据库的时候,有写入操作也要更新二进制日志文件”。因为在2主2从的集群模式中,Master2也会作为Master1的从机身份。
3、修改Slave1中MySQL配置文件
vim /etc/my.cnf
relay-log=mysql-relay 指定从机的中继日志名称
4、修改Slave2中MySQL配置文件
vim /etc/my.cnf
5、重启4台MySQL服务器
systemctl restart mysqld.service
6、为Master1、Master2授权允许从机可以复制
MySQL5.x的版本直接执行:
grant replication slave on *.* to ‘root’@’%’ identified by ‘Lee@0629’;
flush privileges;
MySQL8则需要拆分替换为:
create user root@’%’ identified by ‘Lee@0629’;
grant replication slave on *.* to ‘root’@’%’;
grant all privileges on *.* to ‘root’@’%’;
flush privileges;
7、查看Master1、Master2的主机状态
show master status
8、在Slave1、Slave2上配置复制来源的主机
change master to master_host=’192.168.159.137′,master_user=’root’,master_password=’Lee@0629′,master_log_file=’mysql-bin.000001′,master_log_pos=1073;
master_host=’192.168.159.137′ 复制来源主机IP地址
master_user=’root’ 复制来源主机授权的账号(第6步中授权)
master_password=’Lee@0629′ 复制来源主机授权的密码(第6步中授权)
master_log_file=’mysql-bin.000001′ 复制来源主机的binlog(第7步中查看)
master_log_pos=1073 复制来源主机的position(第7步中查看)
启动从机:start slave;
查看Slave1和Slave2状态:show slave status;
注意:当且仅当Slave_IO_Running: Yes、Slave_SQL_Running: Yes这两个参数值都为YES的时候,才代表Slave和Master绑定成功,只要有一个不成功,那么对应的Slave就无法成功同步数据。
9、将Master2作为Master1的从机
此时,已经建立的主从关系为Slave1 >> Master1,Slave2 >> Master2,但Master2和Master1之间并无任何关系,所以还需要将Master2连接Master1,作为Master1的从机。
change master to master_host=’192.168.159.137′,master_user=’root’,master_password=’Lee@0629′,master_log_file=’mysql-bin.000001′,master_log_pos=1073;
start slave;
show slave status;
10、验证主从数据同步是否生效
查看四台服务器的原始数据库:
Master1(192.168.159.137)
Slave1(192.168.159.138)
Master2(192.168.159.139)
Slave2(192.168.159.140)
Master1中创建数据库:create database jy_universe;
再来看看四台服务器是否同步成功:
Master1(192.168.159.137)
Slave1(192.168.159.138)
Master2(192.168.159.139)
Slave2(192.168.159.140)
只有Master1中有刚刚创建的数据库,其它三台从机中都没有同步过来,哪里出了问题?还记得在一开始的配置文件中指定了允许同步的数据库:binlog-do-db=orders!只允许同步orders数据库中的内容,jy_universe数据库当然是不会同步的。那现在创建orders数据库试试:
Master1中创建数据库:create database orders;
再来看看四台服务器是否同步成功:
Slave1(192.168.159.138)
Master2(192.168.159.139)
Slave2(192.168.159.140)
Master1中创建数据表:
use orders;
create table mytbl(id int, name varchar(10));
show tables;
再来看看四台服务器是否同步成功:
Slave1(192.168.159.138)
Master2(192.168.159.139)
Slave2(192.168.159.140)
Master1中插入数据:insert into mytbl values(1, “xiexun”);
再来看看四台服务器是否同步成功:
Slave1(192.168.159.138)
Master2(192.168.159.139)
Slave2(192.168.159.140)
可以看到,配置文件中允许同步的数据库表的同步都没有任何问题。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111935.html