MySQL:读写分离原理和实践

前言

读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。

读写分离原理

目前较为常见的MySQL读写分离方式有:

  1. 程序代码内部实现
  2. 引入中间代理层MySQL_proxy、Mycat

第一种就是客户端内部实现自定义的基于TCP的数据协议,简称MySQL协议,但读写操作特别多,耗时大,如果在客户端直接由代码直接控制,那么就和这个主从环境强相关了,某个库挂掉了,也不好监测,所以直接用代码实现不太合适。

所以本次使用Mycat。数据端口:8066,管理端口:9066

如图中的代理服务器,就是中间件Mycat,同样需要遵循MySQL通信协议,配置Mycat可以:一主一从、一主多从、多主多从。
如图中的写操作就是主库,下面的读操作是两个从库,那么他们之间的同步就是需要主从复制,在上篇文章中有讲到。

Mycat功能强大,如果配置的一主多从,该主库挂掉,那么会将一个从库设置成供读操作的主库。
在这里插入图片描述

多主多从:Mycat后面多挂几套环境就行。

如果某个主库挂掉,则其相应的从库也就不能用,那么Mycat会自动切换到第二套环境,所以说读写分离有高可用,容灾能力,这一切都归功于Mycat。

在这里插入图片描述

读写分离实践配置

首先要强调的是,读写分离的前提是有主从复制。

主从复制的配置:【点此查看】

先查看主从复制是否正常
在这里插入图片描述

Mycat配置

条件:

master(centos7):192.168.131.129
slave(win10):192.168.31.27

1、JDK1.7版本以上(java -version检查jdk环境),因为Mycat是Java写的

检查环境

在这里插入图片描述

2、MySQL的root账户有远程访问权限
设置支持ip远程连接
mysql默认只能通过localhost访问,不能通过ip远程访问,主要考虑安全的问题。如果在集群分布式环境中单独部署mysql,就需要设置通过ip远程访问了

在这里插入图片描述
上面显示可以看到,mysql默认只支持localhost访问。

在这里插入图片描述

通过ip地址远程连接mysql如下:

mysql -h 172.20.10.3 -u root -p123456

安装Mycat:
Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz(工具上传到linux,tar -zxvf解压)
解压放到/usr/local/mycat目录下
./mycat start启动服务,默认在8066和9066端口

在这里插入图片描述
在这里插入图片描述

配置Mycat账号信息:

在这里插入图片描述

USERDB是逻辑库,Mycat操作的就是这个逻辑库,逻辑库映射到具体的后端的库,有多个逻辑库的话用逗号隔开
在这里插入图片描述

vi mycat/conf/schema.xml

配置逻辑库和数据源、续写分离、分库分表信息等

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

balance:
“0”:不开启读写分离
“1”:全部的readHost和stand by writeHost参与select语句的负载
“2”:所有读操作随机在readHost和writeHost上分发
“3”:所有读请求随机分发到writeHost对应的readHost上执行

writeType=“0”:所有写操作发送到配置的第一个writeHost,第一个挂掉切换到还生存的第二个
writeHost
switchType:
“-1”:不自动切换
“1”:自动切换,根据心跳select user()
“2”:基于MySQL的主从同步状态决定是否进行切换 show slave status

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9066端口登录示例:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

8066端口示例

在这里插入图片描述

如图,这个之前说过是逻辑库,映射对应的主库
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_索伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值