【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡

前面,我们搭建了Apache的Web服务器,分离出数据库,把数据库做了一个集群。按照架构来说,数据库采取了1主1备主2从库的结构。然后通过MHA实现高可用。按照目前的结构来说。存在以下几个问题

数据库没有实现读写分离。VIP是作用在mmaster和bmaster上。并且按照目前的情况。如果通过VIP连接,全部的读写压力都集中在VIP所在的服务器上。这样是不合理的。我们要实现数据库读写分离。我们的目标是写在主库上面。读的操作在从库和备份主库上。

数据库没有实现负载均衡,单点压力过大。我们要实现的目标是,连接采用轮询的方式,或者是最小连接的方式。这样确保负载均衡。

为了解决以上的问题。我们打算新增2台服务器。安装Mysql的中间件Mycat。IP为21和22

一、环境准备,新增2台服务器,IP分别为21和22.安装JDK

yum -y install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64

tar -xf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

mv mycat /usr/local/

cd /usr/local/mycat/conf/

vim server.xml 

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第1张图片

修改登录虚拟库的账号是密码,分别是读的,和写的。schemas指向的是虚拟库的名称。

vim schema.xml

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第2张图片

把配置文件改成这样。红框的,请多留意。这里大概解释一下,定义虚拟库为v_mydb,虚拟数据库为dn1,虚拟主机为本机,实际数据库为mydb。

启动Mycat

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第3张图片

从上图可以看到。角色已经起来了。端口也已经起来了8066

我们尝试一下,通过Mycat连接数据库集群

这里忘记了。我们刚刚定义schemas文件的时候,设置了写是用root账户,读是用sread账户。我们先授权sread先

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第4张图片

试试通过Mycat连接数据库集群

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第5张图片

通过上图,我们可以看到。通过Mycat,我连接进去了数据库集群里面,显示出来的库名,就是我们定义的虚拟库。然后我连接所在服务器,是slave2

好的。我们开始做第二台Mycat。流程是一样的。但第二台,我们定义的虚拟库,定义为mydb。虚拟库和实际库,一样的名字。

我们测试一下通过Mycat1和Mycat2,连接数据库的情况

Mycat1

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第6张图片

Mycat2

【接前面环境】Centos7.4,Mycat中间件解决Mysql集群的读写分离,负载均衡_第7张图片

可以看到。虚拟库不同。在生产环境中,如果我定义的都是和实际库一样的虚拟库名。那么在客户端的角度来看。就是透明的。客户端是察觉不了的,以为自己访问的就是实际库。我这里把虚拟库定义分开来,是为了下一步做中间件负载均衡和高可用的时候,能够让大家看得出差别来。

Mycat的读写分离和负载均衡到这里就结束了。

大家可以网络查询一下,更详细的Mycat参数设置。

你可能感兴趣的:(Linux学习日记)