MyCat - 高级 - 读写分离 - 主从复制(一主一从)搭建 | 学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 快速学习 MyCat - 高级 - 读写分离 - 主从复制(一主一从)搭建

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

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


MyCat - 高级 - 读写分离 - 主从复制(一主一从)搭建

内容介绍:

一、MySQL 一主一从搭建

二、验证主从同步

 

一、MySQL 一主一从搭建

搭建 MySQL 主从复制机制。首先我们需要准备两台服务器,一台作为 MySQL 的master,也就是主节点;另外一台作为 MySQL 的 slave 从节点。我们使用现成的两台服务器,一台是 157,一台是 158。

image.png

首先我们需要把 157 清掉,158 这台服务器我们也退出 MySQL 的服务端,全部清理掉,159 关闭掉,一个 157 也把他关了。需要把 157 上面的其他服务像 my cat 这样的服务把它停掉,cd /user/local/mycat,执行 bin 目录下的 mycat stop 指令(bin/mycat stop),停止 MyCat。现在 157、158 这两台服务器都已经有了,这两台服务器上装的都有 MySQL。我们想让 157 作为 MySQL 的主节点,158 作为157 的从节点,接下来我们需要搭建主从复制集群,我们需要进行一些配置。

2、master

(1)在 master 的配置文件(/usr/my.cnf)中,配置如下内容:

#mysql 服务 ID,保证整个集群环境中唯一

server-id=1

#mysql binlog 日志的存储路径和文件名

log-bin=/var/lib/mysql/mysqlbin

#设置 logbin 格式

binlog format=STATEMENT

#是否只读,1 代表只读,0 代表读写

read-only=0

#忽略的数据,指不需要同步的数据库

#binlog-ignore-db=mysql

#指定同步的数据库

binlog-do-db=db01

①首先,需要在 master 节点当中来开启 binlog 日志,然后再去指定 binlog 的格式为 STATMENT,再去指定它并不是只读的,是可以读写的,然后再指定同步的数据库。

②第一步我们需要修改 master 的配置文件,Master 157 她的 MySQL 的配置文件是存放在 user 目录下,在这个 /user/my.cnf 目录下。然后 sql_mode=No_ENGINE_SUBSTITUTION,STRICT_

TRANS_TABLES 在这一行下面需要添加一些配置,我们把上面的配置直接粘贴过来。第一个 sever_id=1 指的是服务 ID,只需要保证主从复制集群中他是唯一的就可以了;第二个是开启 binlog,并且指定 binlog 日志的存储目录;第三个就是 binlog 日志的格式设置为 STATEMENT;第四个是读写,当前数据库既可以读又可以写,接下来指定同步的数据库,同步的数据库我们只同步 db01 就可以了。

(2)执行完毕之后,需要重启 Mysql:service myself restart;

保存完成之后,我们需要重启 Mysql,重新启动 Mysql。当 Mysql 重新启动完成之后,我们还需要创建一个同步的账户。

(3)创建同步数据的账户,并且进行授权操作:

Grant replication slave on*.*to'itcast'@‘192.168.192.158' identified by'itcast';

flush privileges;

①因为 mysql 在进行主从复制的时候,它需要有一个同步账户,slave 需要通过这个同步账户来连接 master,然后读取它的二进制日志,所以我们需要创建一个同步的账户。创建同步账户,它所具有的权限是 replication slave,是作为复制的一个从节点。它的用户名 itcast,密码 itcast,他能够在 192.158 这台主机上来访问,所以我们需要执行这条 grant replication slave on *.* to ‘ itcast ‘@’ 192.168.192.158’ identified by ‘itcast ‘; sql 语句。要执行这条语句,需要先连接 mysql,mysql -u root -p,itcast,然后再去执行这条 sql 语句。执行完毕之后,我们还需要执行一条刷新权限的指令 flush privileges; 这些指令都执行,我们当前这个账号就已经创建好了。

(4)查看 master 状态: show master status;

再执行一条指令 show master status;来查看 master 的状态。粘贴这条指令,show master status 就是来查看这条指令的状态。当前的 binlog 日志读取到 mysqlbin.000001,读取到 413 这个位置,同步的数据库是 db01,到此主节点的配置就已经配置好了。

image.png

3.Slave

(1)在 slave 端配置文件中,配置如下内容:

#ymysq 服务端 ID,唯一

server−id=2

#指定 binlog 日志

log-bin=/var/lib/mysql/mysqlbin

#启用中继日志

relay-log=mysql-relay

①接下来配置从节点,打开 158 这台服务器。在从节点上,我们首先还是一样先修改 slave 的配置文件,依然是 /user/my.cnf 这份配置文件。这份配置文件当中,我们配置了三项信息,第一项 sever id 服务的 ID,上面 master 是 1,这里只要不是 1 就可以了;第二个 log bin, 指的是开启 binlog 日志,指定 binlog 日志的存储目录;第三个就是启用 relay log 叫中继日志,要启用中继日志。把配置内容复制一下,打开 vi /user/my.cnf,把配置粘贴过来,保存,重启 MySQL 服务,serve mysql restart。

(2)执行完毕之后,需要重启 Mysql:service mysql restart;

(3)执行如下指令 :

change master to master-host='192.168.192.157', master-user='itcast', master-password='itcast', master-log-file='mysqlbin.000001', master -log-pos=413;

指定当前从库对应的主库的IP地址,用户名,密码,从哪个日志文件开始的那个位置开始同步推送日志。

①MySQL 服务重启完成之后,我们还需要指定当前的主节点是哪个,需要执行这条 change master to master-host='192.168.192.157', master-user='itcast', master-password='itcast', master-log-file='mysqlbin.000001', master -log-pos=413; 指令,这条指令执行的含义就是当前要去指定主节点,主节点是 157,主节点的用户是 itcast,密码也是 itcast,这个用户名和密码就是我们刚才在上面创建的用户名 itcast 和密码 itcast。

②还有一个叫做 Master_log_file,这个 Master_log_file,还有一个叫做 log position,指的就是这两个

image.png

一个是 log file,一个是 log position。原因是因为从节点需要从主节点进行数据库同步的,而数据同步是基于二进制日志进行同步的。既然是基于二进制日志同步的,就要指定从哪个日志开始同步,从这个日志文件的哪个位置进行同步,是需要指定的。复制指令并执行

change master to master-host='192.168.192.157', master-user='itcast', master-password='itcast', master-log-file='mysqlbin.000001', master -log-pos=413;

在执行这条 sql 语句的时候,需要看一下 IP 对不对,用户名、密码对不对,以及日志文件是否匹配,位置是否是 413,不是的话需要适当修改。输入 mysql- u root- p,itcast,执行,

image.png

(4)开启同步操作

start slave

show slave status

开启同步只需要执行 start slave,执行 start slave,接下来查看 slave 的状态。通过 show slave status,查看状态,只需要查看里面的两个选项。

image.png

我们只需要在 show slave status 这条 sql 语句后面加上“\G;”,这个时候就可以查看到具体的信息。在这个里面,重点看两项信息

image.png

一个是 Slave IO Running和 Slave SQL Running,只需要这两项为 yes,就说明我们主从复制已经搭建好了。刚才加了一个 \G,\G 指的是我们可以让横向展示变为纵向展示,这样展示的更加清晰,因为横向一行展示不下,这样就说明主从复制已经搭建好了。搭建好了,需要验证。

 

二、验证主从同步

1、在主库中创建数据库,创建表,并插入数据;

create database db01;

user db01;

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');

(1)需要在主节点创建一个数据库,创建一张表,插入数据,看一下从节点有没有就可以了。通过 show databases,先来看一下主节点的数据库,有这么多如下图:

image.png

接下来看从节点 show databases,从节点的数据库也有这么多如下图:

image.png

执行一条语句,创建一个数据库,复制 create database db01,注意这条语句是在 157,也就是主节点当中执行的,主节点一旦执行会创建 db 01 这个数据库,show databases,db01 这个数据库就有了,接下来查看 158 从数据库,也有 db 01。

image.png

接下来在这个数据库当中切换 db01 这个数据库,在 157 这个数据库 use db01。在这个数据库当中再来创建一张表,创建 user 这张表,表已经创建好了。

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;

image.png

我们在 158 从数据库切换 db01,接下来 show tables,查看表已经有了。

image.png

我们执行这三条 sql 语句插入三条数据

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');

三条数据插入之后,执行一个语句 select* from user,三条数据已经插入到主库了,看从库有没有。执行一条语句 select* from user,如果这条语句执行成功,也能查看数据和主库当中的数据完全一致,则说明主重复制就搭建好了。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
SQL 负载均衡 关系型数据库
MySQL主从复制的原理与实操+mycat2读写分离
MySQL主从复制的原理与实操+mycat2读写分离
136 0
|
9月前
|
负载均衡 监控 关系型数据库
MySQL数据库的主从复制和高可用性架构
MySQL数据库的主从复制和高可用性架构
|
XML SQL 负载均衡
MyCat - 高级 - 读写分离 - 一主一从读写分离配置 | 学习笔记
快速学习MyCat - 高级 - 读写分离 - 一主一从读写分离配置
365 0
MyCat - 高级 - 读写分离 - 一主一从读写分离配置 | 学习笔记
|
10月前
|
SQL 负载均衡 前端开发
案例:MySQL主从复制与读写分离
案例:MySQL主从复制与读写分离
|
10月前
|
SQL 存储 运维
MySQL主从复制与读写分离(详细部署案例)
MySQL主从复制与读写分离(详细部署案例)
176 0
|
SQL 关系型数据库 MySQL
MyCat-高级-读写分离-双主双从搭建 | 学习笔记
快速学习 MyCat-高级-读写分离-双主双从搭建
102 0
MyCat-高级-读写分离-双主双从搭建 | 学习笔记
|
关系型数据库 MySQL 中间件
MyCat-高级-读写分离-双主双从架构 | 学习笔记
快速学习 MyCat-高级-读写分离-双主双从架构
76 0
MyCat-高级-读写分离-双主双从架构 | 学习笔记
|
负载均衡 关系型数据库 MySQL
MyCat - 高级 - 读写分离 - MyCat 实现 MySQL 双主双从读写分离 | 学习笔记
快速学习 MyCat - 高级 - 读写分离 - MyCat 实现 MySQL 双主双从读写分离
98 0
MyCat - 高级 - 读写分离 - MyCat 实现 MySQL 双主双从读写分离 | 学习笔记
|
SQL 关系型数据库 MySQL
MyCat - 高级 - 读写分离 - MySQL 主从复制原理 | 学习笔记
快速学习 MyCat - 高级 - 读写分离 - MySQL 主从复制原理
97 0
MyCat - 高级 - 读写分离 - MySQL 主从复制原理 | 学习笔记
|
NoSQL 开发工具 Redis
主从复制-搭建主从结构|学习笔记
快速学习主从复制-搭建主从结构
53 0