Mycat读写分离

目录

一.Mycat读写分离原理

二.部署jdk

三.部署Mycat

1.下载mycat并解压到指定文件

2.配置server.xml文件

3.配置schema.xml文件

逻辑库和分表设置 :

数据节点

主机组

读写配置

4.启动mycat

四.测试

1.登陆测试

一.Mycat读写分离原理

Mycat读写分离是基于MySQL集群的主从复制实现的,而Mycat负责SQL分析,并将分析出的结果分发至与Mycat读写分离机制所绑定的MySQL主从复制数据库,从而实现读写分离。

Mycat 是什么?

Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。

二.部署jdk

MyCAT 是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了 JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。

这里已经将jdk下载到本地直接解压

[root@mycat ~]# tar xf jdk-8u211-linux-x64.tar.gz  
[root@mycat ~]#mv jdk-8u211-linux  /usr/local/java

配置环境变量

[root@mycat ~]# vim /etc/profile
export PATH=/usr/local/java/bin:$PATH
使环境变量生效
[root@mycat ~]# source /etc/profile

三.部署Mycat

1.下载mycat并解压到指定文件

[root@mycat ~]# wget http://dl.mycat.org.cn/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/

2.配置server.xml文件

以下为代码片段

下面的用户和密码是应用程序连接到 MyCat 使用的,可以自定义配置

而其中的schemas 配置项所对应的值是逻辑数据库的名字,也可以自定义,但是这个名字需要和后面 schema.xml 文件中配置的一致。

在server.xml文件中用户名root和密码123456是java端登陆mycat的用户名和密码并非在真正的数据库中。

上面的配置中,假如配置了用户访问的逻辑库,那么必须在 schema.xml 文件中也配置这个逻辑库,否则报错,启动 mycat 失败

3.配置schema.xml文件

逻辑库和分表设置

<schema name="TESTDB"        // 逻辑库名称,与server.xml的一致
 checkSQLschema="false"        // 不检查sql
 sqlMaxLimit="100"             // 最大连接数
dataNode="dn1">                //  数据节点名称
        </schema>
        <schema name="test"
 checkSQLschema="false"
 sqlMaxLimit="100" 
dataNode="dn2">
        </schema>

数据节点

dataNode 数据节点是用来连接server.xml中虚假数据库和数据库集群的真实数据库的。

         <dataNode name="dn1"     // 此数据节点的名称
dataHost="myhost"             // 主机组
database="db1" />                // 真实的数据库名称
        <dataNode name="dn2"     
dataHost="myhost" 
database="l" />

主机组

<dataHost name="myhost"         // 主机组
maxCon="1000" minCon="10"          // 连接
balance="3"                        // 负载均衡
        writeType="0"            // 写模式配置
 dbType="mysql" dbDriver="native"     // 数据库配置
switchType="1"  slaveThreshold="100">

读写配置

此配置适合双主从复制

host="master1" url="master1:3306" user="mycat"  password="224216"  这里的user和password

是真实数据库集群中存在的授权用户

<heartbeat>select user()</heartbeat>        **健康检查**
                <writeHost host="master1" url="master1:3306" user="mycat"
                                   password="224216">
                        <readHost host="slave1" url="slave1:3306" user="mycat" password="224216" />
                </writeHost>
                <writeHost host="master2" url="master2:3306" user="mycat"
                                   password="224216">
                        <readHost host="slave2" url="slave2:3306" user="mycat" password="224216" />
                </writeHost>
        </dataHost>

balance 属性
负载均衡类型,目前的取值有 4 种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 
    互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡
4. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发
5. balance="3", 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。

writeType 属性
负载均衡类型
1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.
2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

4.启动mycat

[root@mycat ~]# /usr/local/mycat/bin/mycat  start

[root@mycat ~]# /usr/local/mycat/bin/mycat  status
Mycat-server is running (2305).

四.测试

这里我们配置双主双从数据库服务集群,做好域名解析。

192.168.134.150  master1
192.168.134.152  master2
192.168.134.149  slave1
192.168.134.151  slave2

在配置两个主服务器时在配置文件中加入log-slave-updates 使每个从服务器上的数据保持一致。

 

 下图为数据库集群上的数据库。


 !!!注意

在数据库集群上一定要有schema.xml配置文件中的授权用户(user=mycat)和数据库(db1和l);因为java端是在部署mycat的服务器上用server.xml中的root和123456登录的,通过schema.xml配置文件里的映射条件,映射到数据库服务集群的授权用户(mycat)才能看到数据库。

1.登陆测试

通过客户端进行测试是否能登录到 mycat 上192.168.134.150 是 mycat 的主机地址注意端口号是 `8066`

[root@mycat ~]# mysql -uroot -p123456 -h192.168.134.150 -P 8066
mysql> show databases;
+----------+
| DATABASE |
+----------+
| TESTDB   |
| test     |
+----------+
2 rows in set (0.00 sec)
mysql> use TESTDB;
Database changed
mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| bba           |
| t1            |
| test1         |
| test3         |
+---------------+
4 rows in set (0.00 sec)

mysql> 

可以进入到数据库并且查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值