首页 > 编程知识 正文

mycat oracle读写分离,mycat配置读写分离

时间:2023-05-03 22:56:47 阅读:242777 作者:1955

仅用于个人学习,个人学习笔记。
一主一从,一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/mmydws: JAVAH​OME/mmydws:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAH​OME/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 种:

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

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

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

启动:
[root@mycat conf]# /usr/local/mycat/mmydws/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真是的库。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。