MyCat-高级-读写分离-双主双从搭建 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云防火墙,500元 1000GB
简介: 快速学习 MyCat-高级-读写分离-双主双从搭建

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(二):MyCat-高级-读写分离-双主双从搭建】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/756/detail/13282


MyCat-高级-读写分离-双主双从搭建

内容介绍:

一、双主机配置

二、双从机配置

三、双主机、双从机重启 MySQL 服务

四、主机从机都关闭防火墙

五、在两台主机上建立账户并授权 slave

六、在从机上配置需要复制的主机

七、启动两台从服务器复制功能,查看主从复制运行状态

八、两个主机互为复制

九、启动两台主服务器复制功能,查看主从复制运行状态

十、验证

十一、停止从服务复制功能

十二、重新配置主从关系

 

一、双主机配置

1、准备的机器如下:

image.png

双主双从的搭建。既然是双主双从,至少需要四台机器。已经准备好了四台服务器,来搭建这个集群。主机配置,四台服务器分别是 157、158、159 以及 160。157担任 Master1,158 是 Master1的从,也就是 Slave1,159 担任的是 Master2,160 担任的是 Master2 对应的从节点 Slave2,这是准备的四台服务器,这四台服务器准备好了之后,需要进行双主双从配置。

2、准备

在进行双主双从的配置之前,还需要做一些事情。这是准备的四台服务器,IP 地址分别是 157、158、159、160。

image.png

新增的一台服务器 160,已经在 160 这台服务器上把 Mysql 安装以及配置完成了,就是一台干净的 MySQL。之前搭建一主一从的时候,使用的是 157 和 158。接下来,要搭建的是双主双从,需要先把 157 和 158 之间的主从关系清除掉,进行重新配置。接下来要清除 157 和 158 的主从关系,在清除主从关系时,只需要再从的一方 158 上面进行操作。先登录上 MySQL,itcast,在执行 show slave status, 加上 \G,来看他们主从复制的状态,Slave IO Running 和 Slave SQL Running 都是 yes,主从依然复制这。要停了主从复制,需要执行 stop slave,这条指令执行完了,还需要再执行一条指令,这条指令只是停了从节点,接下来还需要重置主从之间的关系,接下来还需要执行一条指令叫 reset master,这句话一执行,主从关系就已经断了。要断掉主从关系需要,执行两步。第一步 stop slave 停止从节点,第二步 reset master 就可以了。这两步执行完了之后,这四台服务器就是干净的服务器了。接下来,需要进行双主双从的配置,首先配置双主机的配置,双主机就是 157 和 159,这就是两个主机。

3、Master1 配置

①第一个主机 Master1,也就是 157 我们要配置以下的信息

#主服务器唯一 ID

server−id=1

#启用二进制日志

log-bin=mysql-bin

# 设置不要复制的数据库(可设置多个)

#binlog−ignore−db=mysq1

# binlog-ignore-db=information_schema

#设置需要复制的数据库

binlog−do−db=db02

binlog−do−db=db03

binlog−do−db=db04

#设置 logbin 格式

binlog format=STATEMENT

②第一个 server ID,开启二进制日志,选择要复制的数据库,要复制 db02、03、04 数据库。之前进行操作搭建一主一从的时候,已经有了一个数据库 db01,接下来同步就是 db02、03、04,要同步多个数据库,复制多条就可以了。然后选择 binlog 的格式以及在进行从库使用的时候,关于二进制日志是否有写入的一些概念操作。这是 Master1 的配置,先来配置。Master1 157 需要修改 vi  /user/my.cnf,按大 G 切换到这

image.png

我们要把这里的配置删除掉,删除完了之后,再来进行一个配置。把配置内容导过来,这多了一个字符 D,需要把这个字符删掉。

image.png 

这样就可以了,保存。再来看一下我们的数据导进来了,保存完成之后,还需要配置另外一个主节点 Master2。

4、Master2 配置

①在 Master2 当中的配置实际上和 Master1 基本上是一样的,只需要修改一个地方,就是 server id,注意 server id 不能重复。

#主服务器唯一 ID

server−id=3

#启用二进制日志

log-bin=mysql-bin

# 设置不要复制的数据库(可设置多个)

#binlog−ignore−db=mysq1

# binlog-ignore-db=information_schema

#设置需要复制的数据库

binlog−do−db=db02

binlog−do−db=db03

binlog−do−db=db04

#设置 logbin 格式

binlog format=STATEMENT

把这些配置直接复制,注意 Master2 是 159,所以现在需要操作的是 159,vi  /user/my.cnf,按 G 切换到最后,然后在这里面把刚才的配置直接粘贴进来,x 保存。保存完成之后,两台主节点就已经配置好了。接下来,需要配置的是从机。

 

二、双从机配置

1、Slave1 配置

①#从服务器唯一 ID

server−id=2

#启用中继日志

relay-log=mysql-relay

②首先配置第一个从机 Slave1,只需要增加两行配置。第一个 server id,还是一样,不能重复;第二个 relay log,是否启用中继日志。使用 158 服务器,然后 vi  /user/my.cnf,按 G,这里的配置不用动,就这样来配置就可以了。

2、Slave2 配置

①#从服务器唯一 ID

server−id=3

#启用中继日志

relay-log=mysql-relay

②接下来还有一个节点,就是 Slave2 这个节点。Slave 这个节点的服务器是 160。vi  /user/my.cnf,按 G,切换到最后。把配置内容粘贴进来,然后保存。实际上,会发现这四个节点他的 server id 分别是1,2,3,4,是不会重复的,这是双主机以及双从机的配置。

 

三、双主机、双从机重启 MySQL 服务

这些配置完了之后,第三步是重启这四台 mysql 服务,需要四台服务重新启动,都输入 service mysql restart 重启,四台服务都已重启完成。这是第三步操作。

 

四、主机从机都关闭防火墙

第四步主机都需要关闭防火墙,因为这四台服务器他们直接是要进行交互的,如果防火墙不关闭,有些端口没有放开的话,是会存在问题的。所以需要检查防火墙的状态,四台服务分别输入service iptables status,看一下防火墙的状态,需要把防火墙关闭 stop。这四台服务器的防火墙就关闭了,关闭完成之后,还需要做一件事。

 

五、在两台主机上建立账户并授权 slave

1、#在主机 MySQL 里执行授权命令

GRANT REPLICATION SLAVET ON * , * TO ' itcast ' @ ' % ' IDENTIFIED BY ' itcast ' ;

flush privileges;

image.png

②第五步在两台主机上建立账户并授权 slave,直接执行,这两条指令实际上就是要创建一个账户 itcast ,密码也是 itcast,用于主从复制。接下来需要登录 mysql,mysql - u  root - p,itcast。在第一台主节点上需要执行这条指令。执行完成之后,还需要执行第二条指令刷新权限列表。完成之后,执行一个指令 show master status,需要看一下主从复制的二进制日志他的位置是什么?接下来操作第二个主节点159,mysql - u  root - p,itcast。执行创建账号的 sql 语句,操作完之后再来执行刷新权限列表的指令,执行 show master status。现在 bin 目录在两台主节点上创建主从同步的账户已经操作完成了。

 

六、在从机上配置需要复制的主机

已经准备了四台服务器,并且也开启了 Master1 和 Master2 的二进制日志,也开启了 Slave1 和 Slave2 的中继日志,也创建了 Master1 和  Master2 当中用于主从复制的账号。接下来就是让 Slave1 从 Master 1当中进行主从复制,Slave2 从 Master2 当中进行主从复制,接下来进行第六步操作,在从机上配置需要复制的主机。

1、Slave1 复制 Master1 , Slave2 复制 Master2

Slave1 指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.157',

MASTER_USER='itcast',

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;

①我们要执行这些指令,这些 sql 语句之前是见过的,就是要去设置当前这个从节点他的主节点是谁,主从复制的用户名和密码是什么,操作的日志是哪一个,日志的位置是什么,需要我们进行一个简单的编辑。158 他的主就是 157,所以先需要在 158 上登录 MySQL,mysql - u  root - p,itcast,登录上来之后还需要改一个地方。现在是 mysql_bin.000001,位置 399,所以需要把 409 改为 399。操作完了接下来执行,执行的时候报错了,这告诉我们,要先停了之前的 slave,所以先要去执行 stop slave,接下来 reset smart,然后继续执行刚才的语句。

2、Slave2 指令

接下来需要在 Slave2,也就是 160 这台服务器上来执行下面的这条 SQL 语句。

CHANGE MASTER TO MASTER_HOST='192.168.192.159',

MASTER_USER='itcast',

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=409;

①他的主机 159,密码 itcast。要来看一下他的日志情况,日志情况也是 399,所以还需要把 409 改为 399,然后复制在 160 上面进行一个执行。先需要去登录 mysql,mysql - u  root - p,itcast ,执行这条指令。这两条指令都执行成功了,接下来需要开启复制功能,并且查看每个从节点的运行情况。

 

七、启动两台从服务器复制功能,查看主从复制运行状态

1、start  slave

show  slave  status\G;

image.png

①在 158 执行 start slave,开始主从复制,160 也执行 start slave,现在已经开启了,接下来需要查看他们主从复制的状态。执行 show  slave  status\G;,只要 Slave IO Running 和 Slave SQL Running 都是 yes,就说明主从复制的状态是正常的。在 160 上也执行 show  slave  status\G;,这样的话就相当于 Master1 已经同步到 Slave1 了,Master2 也已经同步到 Slave2 了。之前在讲解 MySQL 双主双从的架构的时候说了 Master 1 和 Master2 互为备机,当 Master1 挂掉之后,Master2 是可以顶替 Master1 的,所以这两个互为备机,因此 Master1 和 Master2 需要互相同步,接下来配置双主之间的主从配置。

 

八、两个主机互为复制

1、Master2 复制 Master1, Master1 复制 Master2

Master1 执行指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.159',

MASTER_USER="itcast",

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG _POS=409;

①先需要再 Master1 157 上执行 159 的指令。157 它的主机是 159,只需要执行

CHANGE MASTER TO MASTER_HOST='192.168.192.159',

MASTER_USER='itcast',

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=399;

所以应该在 157 上执行 159 的指令,执行完成之后,还需要在 159 上执行 157 的指令。

CHANGE MASTER TO MASTER_HOST='192.168.192.157',

MASTER_USER='itcast',

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=399;

现在只是设置了两个主机之间的复制,还需要开启复制功能。

2、Master2 执行指令:

CHANGE MASTER TO MASTER_HOST='192.168.192.157',

MASTER_USER="itcast",

MASTER_PASSWORD='itcast',

MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG _POS=409;

 

九、启动两台主服务器复制功能,查看主从复制运行状态

1、start  slave

show  slave  status\G;

执行 start  slave,开启之后执行 show  slave  status\G;查看主从复制运行状态。157 和 159 上面的 Slave IO Running 和 Slave SQL Running 都是 yes,主从复制运行状态正常。这样两台主机之间的复制功能就已经完成了。

 

十、验证

1、create database db03;

user db 03;

create table user(

id int(11) not null auto increment,

name varchar(50) not null.

sex varchar(1).

primary key(id)

) engine=innodb default charset=utf8;

insert into user(id, name, sex) values(null,'Tom','1');

insert into user(id, name, sex) values(null,'Trigger','0');

insert into user(id, name, sex) values(null,'Dawn','1');

insert into user(id, name, sex) values(null,'Jack Ma','1');

insert into user(id, name, sex) values(null,'CoCo,'0');

insert into user(id, name, sex) values(null,'Jerry','1');

①最后一步,验证。先查看四个数据库当中的信息,分别执行 show databases,157 和 158 有 db01,而 159 和 160 没有 db01。在 157 上执行 create database db03; ,创建了一个数据库

image.png

查看之后 158,159,160 上面都有 db03。是因为在 157 上创建,157 会同步到他的从节点,而 157 和 159 虽然都是主节点,但是他们两个相互复制,所以 157 也会同步到 159,而 159 是 160 的主节点,所以 159 的数据也会同步到 160,这是创建一个数据库。接下来切换数据库,切换数据库之后执行 use db03,切换之后再创建一张表,往表中插入数据,再来验证一下。创建 user 这张表 user 表创建好之后,往表结构当中插入几条记录,插入了三条记录,然后执行 select * from user,这三条数据就有了。

image.png

同样,在 158 上执行 use db03,select * from user,这样三条数据就有了。159 和 160 也是同样操作。

②注意刚才我们所做的操作都是在 157 上操作的,接下来在 159 上操作,看在 159 上执行相关语句是否会同步到 157。我们再插入一个数据  insert into user(id, name, sex) values(null,'Jack Ma','1');,这次要插入的用户名是 Jack Ma,执行成功之后,查询用户,157、158、159、160 上都有 Jack Ma 四号用户。因为 157 和 159 都是主节点,他们会相互复制,当我们在 159 上面插入数据的时候,它会同步到 157,而 157 会同步到 158,159 插入之后会同步到160,。这是搭建双主双从的 MySQL 集群。

 

十一、停止从服务复制功能

1、stop slave

 

十二、重新配置主从关系

1、stop slave

2、reset master

相关文章
|
7月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
611 0
|
4月前
|
cobar 关系型数据库 MySQL
使用MyCat实现MySQL主从读写分离(一)概述
【8月更文挑战第11天】MySQL读写分离通过主从复制分散负载,主库负责写操作,从库承担读查询,以复制技术确保数据一致性。此策略有效缓解锁竞争,提升查询效能并增强系统可用性。实现方式包括应用层处理,简便快捷但灵活性受限;或采用中间件如MyCAT、Vitess等,支持复杂场景但需专业团队维护。
122 0
|
5月前
|
SQL 中间件 关系型数据库
MyCAT数据库中间件的架构与使用方法
MyCAT数据库中间件的架构与使用方法
|
canal 存储 NoSQL
mysql进阶:canal搭建主从|集群架构
之前我们讲解过canal的各种应用,但是对于生产环境来讲,服务高可用是必须保证的。因此canal单节点是不能满足我们的需求的。就需要搭建canal集群。
1024 2
mysql进阶:canal搭建主从|集群架构
|
运维 关系型数据库 MySQL
MyCat-架构剖析-MyCat 主从切换实现 | 学习笔记
快速学习 MyCat-架构剖析-MyCat 主从切换实现
MyCat-架构剖析-MyCat 主从切换实现 | 学习笔记
|
XML SQL 负载均衡
MyCat - 高级 - 读写分离 - 一主一从读写分离配置 | 学习笔记
快速学习MyCat - 高级 - 读写分离 - 一主一从读写分离配置
MyCat - 高级 - 读写分离 - 一主一从读写分离配置 | 学习笔记
|
SQL 负载均衡 关系型数据库
MySQL主从复制的原理与实操+mycat2读写分离
MySQL主从复制的原理与实操+mycat2读写分离
263 0
|
存储 cobar NoSQL
开源数据库中间件-MyCat初探与分片实践
一个新颖的数据库中间件产品支持mysql集群,或者mariadb cluster,提供高可用性数据分片集群。
227 6
开源数据库中间件-MyCat初探与分片实践
|
SQL 存储 运维
MySQL主从复制与读写分离(详细部署案例)
MySQL主从复制与读写分离(详细部署案例)
361 0
|
缓存 Oracle 安全
(保姆级)Mycat搭建读写分离
(保姆级)Mycat搭建读写分离
(保姆级)Mycat搭建读写分离