【接前面环境】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 

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

vim schema.xml

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

启动Mycat

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

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

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

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

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

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

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

Mycat1

Mycat2

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值