大白话版理解mycat中间件实现读写分离的简单架构的步骤

仅用于个人学习,个人学习笔记。
一主一从,一mycat一web应用服务(测试)

1、首先进行地址解析,其实没有必要四台机器全部进行解析,但为了方便,在这里,我也没有进行全部解析,只是为了好理解。
主(master):
在这里插入图片描述
从(slave),在这里,我并没有用到slave,因为只要通过mycat,最后控制了master,控制slave同理。但我还是进行了解析。
在这里插入图片描述

mycat(中间件)
在这里插入图片描述

应用服务端端
在这里插入图片描述
2、在mycat上装jdk,因为mycat是用Java语言进行编写开发,而且由于 MyCAT 中使用了 JDK7 中的
一些特性,所以要求必须在 JDK7 以上的版本上运行。
下载jdk账号:
账号:liwei@xiaostudy.com
密码:OracleTest1234
将jdk上传到服务器中,
[root@mycat ~]# tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@mycat ~]# cd /usr/local/
[root@mycat local]# mv jdk1.8.0_221/ java
设置环境变量
[root@mycat local]# vim /etc/profile #添加如下内容,
JAVA_HOME=/usr/local/java
PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
[root@mycat local]# source /etc/profile
[root@mycat local]# Java -version #查看Java是否安装上
3、在mycat上装mycat
下载
[root@mycat ~]# wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-
linux.tar.gz
解压
[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
4、配置mycat的配置文件,其中两个主要的文件是server.xml和schema.xml。其中server.xml是用于应用服务端和mycat之间的,用于定义用户信息。是应用服务登陆mycat的用户。

server.xml
在这里插入图片描述

解释:
第一个“root”账户,密码,是给应用服务创建的账号,密码,这是给开发的信息,开发通过这些信息连接到后端的数据库。
第二个逻辑库。只是起到一个过渡作用,到时候开发连接的是tianyun库,实际连的是后端的数据库,通过tianyun库来对后端的数据库进行操作,在tianyun库里进行sql语句的操作,最后数据库也会有相应的变化。

schema.xml

第一个tianyun库,要与server里的逻辑库一致,是同一个。
第二个dataNote=“dn1”,千万不能遗忘,不然mycat会起不来的,与下边的dataNate name 相对应,切记!切记!
第三个dataHost,是逻辑名。
第四个hearbeat,是心跳检测,检测数据库是否都能正常,只需要一个sql语句就行,任何一句都行。
第五个writeHost,readHost,都是逻辑名。
第六个url,这个是解析地址,别记错啦
第七个user,password,是mycat和数据库连接的。需要在数据库上创建,授权

扩展:
balance 属性
负载均衡类型,目前的取值有 3 种:

  1. balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance=“1”, 全部的 readHost 与 writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1-

S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。

  1. balance=“2”, 所有读操作都随机的在 writeHost、readhost 上分发。
  2. balance=“3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意
    balance=3 只在 1.4 及其以后版本有,1.3 没有。
    writeType 属性
    负载均衡类型
  3. writeType=“0”, 所有写操作发送到配置的第一个 writeHost,第一个挂了切换到还生存的第二个writeHost,重新
    启动后已切换后的为准.
  4. writeType=“1”,所有写操作都随机的发送到配置的 writeHost,#版本1.5 以后废弃不推荐。

启动:
[root@mycat conf]# /usr/local/mycat/bin/mycat start
Starting Mycat-server…
[root@mycat ~]# jps #查看mycat是否启动
13377 WrapperSimpleApp
13431 Jps
在这里插入图片描述
先看mycat和数据库master
首先在master上创建、授权一个用于登陆数据库的用户
在这里插入图片描述
这条命令的意思是,tianyun可以对test库下的所有表进行sql语句操作。
然后测试一下,(在mycat上测试),前提是要有解析。
在这里插入图片描述
结果是,可以登上数据库master的。如果想要连接其他数据库,直接将其他数据库解析后的名字给换了就行。
然后,在t1表插入数据,然后在master登上数据库,查看t1表里是否也会有新插入的记录。结果是有的。这就表明mycat和数据库端连通了。

接下来再看应用服务和mycat之间的测试:
原理也是如此,要有解析地址,但不同的是,要有端口8066。8066是数据端口,用户执行增删改查等 SQL 语句,9066是管理端口,用于执行管理命令。
在这里插入图片描述
结果也是同样的。

最后,来一个总的测试,表示放心。
准备一台真机,就是应用服务的那个,安装上mysql,连接上mycat,然后进行增删改查,看看mycat,数据库master,是否发生变化。
真机端:

在这里插入图片描述在这里插入图片描述
mycat:
在这里插入图片描述
数据库,master:
在这里插入图片描述
在这里插入图片描述
注意:
1、真机登陆的是mycat,mycat登陆的是数据库master,master登陆的是自己的数据库
2、真机进入的是mycat的逻辑库tianyun,进去之后,才有数据库里的表;mycat进入的是真实的数据库test,test是数据库master真是的库。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值