【手把手】教你搭建MySQL主从复制

导读:本篇文章讲解 【手把手】教你搭建MySQL主从复制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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 so【手把手】教你搭建MySQL主从复制https://blog.csdn.net/FeenixOne/article/details/122686921只要你跟着我教程里的步骤去做,就一定能够安装好MySQL服务)。本文中所有的操作基于CentOS8进行安装演示;

② 接下来的演示文本中,红色字体为操作步骤,黑色字体为解释说明。

【手把手】教你搭建MySQL主从复制

在此架构中,可以让一台主机用来处理所有写请求,此时,它的从机和备机,以及备机的从机复制所有读请求。当主机宕机之后,另一台主机负责写请求,两台主机互为备机。

1、修改Master1中MySQL配置文件

vim /etc/my.cnf

【手把手】教你搭建MySQL主从复制

log-bin=mysql-bin  指定要启动的binlog日志名称

binlog-ignore-db=mysql  指定忽略数据同步的数据库

binlog-do-db=feenix  指定需要数据同步的数据库

binlog_format=STATEMENT  binlog的日志格式

2、修改Master2中MySQL配置文件

vim /etc/my.cnf

【手把手】教你搭建MySQL主从复制

注意,Master2相比较于Master1的my.cnf配置文件中多了一个: log-slave-updates,这个参数指的是“在作为从数据库的时候,有写入操作也要更新二进制日志文件”。因为在2主2从的集群模式中,Master2也会作为Master1的从机身份。

3、修改Slave1中MySQL配置文件

vim /etc/my.cnf

【手把手】教你搭建MySQL主从复制 relay-log=mysql-relay  指定从机的中继日志名称

4、修改Slave2中MySQL配置文件

vim /etc/my.cnf

【手把手】教你搭建MySQL主从复制

 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;

【手把手】教你搭建MySQL主从复制

7、查看Master1、Master2的主机状态

show master status 

【手把手】教你搭建MySQL主从复制

【手把手】教你搭建MySQL主从复制

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;

【手把手】教你搭建MySQL主从复制

【手把手】教你搭建MySQL主从复制

 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;

【手把手】教你搭建MySQL主从复制

 注意:当且仅当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;

【手把手】教你搭建MySQL主从复制

10、验证主从数据同步是否生效

查看四台服务器的原始数据库:

Master1(192.168.159.137)

【手把手】教你搭建MySQL主从复制

Slave1(192.168.159.138)

【手把手】教你搭建MySQL主从复制

Master2(192.168.159.139)

【手把手】教你搭建MySQL主从复制

Slave2(192.168.159.140)

【手把手】教你搭建MySQL主从复制

Master1中创建数据库:create database jy_universe;

再来看看四台服务器是否同步成功:

Master1(192.168.159.137)

【手把手】教你搭建MySQL主从复制

Slave1(192.168.159.138)

【手把手】教你搭建MySQL主从复制

Master2(192.168.159.139)

【手把手】教你搭建MySQL主从复制

Slave2(192.168.159.140)

【手把手】教你搭建MySQL主从复制

只有Master1中有刚刚创建的数据库,其它三台从机中都没有同步过来,哪里出了问题?还记得在一开始的配置文件中指定了允许同步的数据库:binlog-do-db=orders!只允许同步orders数据库中的内容,jy_universe数据库当然是不会同步的。那现在创建orders数据库试试:

Master1中创建数据库:create database orders;

【手把手】教你搭建MySQL主从复制

再来看看四台服务器是否同步成功:

Slave1(192.168.159.138)

【手把手】教你搭建MySQL主从复制

Master2(192.168.159.139)

【手把手】教你搭建MySQL主从复制

Slave2(192.168.159.140)

【手把手】教你搭建MySQL主从复制

Master1中创建数据表:

use orders;

create table mytbl(id int, name varchar(10));

show tables;

【手把手】教你搭建MySQL主从复制

再来看看四台服务器是否同步成功:

Slave1(192.168.159.138)

【手把手】教你搭建MySQL主从复制

Master2(192.168.159.139)

【手把手】教你搭建MySQL主从复制

Slave2(192.168.159.140)

【手把手】教你搭建MySQL主从复制

Master1中插入数据:insert into mytbl values(1, “xiexun”);

【手把手】教你搭建MySQL主从复制

再来看看四台服务器是否同步成功:

Slave1(192.168.159.138)

【手把手】教你搭建MySQL主从复制

Master2(192.168.159.139)

【手把手】教你搭建MySQL主从复制

Slave2(192.168.159.140)

【手把手】教你搭建MySQL主从复制

可以看到,配置文件中允许同步的数据库表的同步都没有任何问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111935.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!