Mycat(Windows环境)

二次信任 提交于 2020-02-04 14:46:38

Mycat 是SQL集群中间件,基于阿里开源的Cobar产品而研发,继承了Cobar的稳定性、可靠性、优秀的架构和性能

首先在安装Mycat之前,需要安装JDK1.7以上,可以在cmd环境下输入 java -version 查看本地安装的java版本

 安装JDK后,还需要安装Mysql(因为我本地环境安装的是Mysql,所以用Mysql做测试)

1.下载Mycat

链接: https://pan.baidu.com/s/1L9TK3Vo2PTxS2WKdvjL4CQ 提取码: rrrp

2.解压

下载成功后,解压到本地,目录结构如下:

3.配置

server.xml Mycat的配置文件,设置账号、参数等
schema.xml Mycat对应的物理数据库和数据库表的配置
rule.xml Mycat分片(分库分表)规则

 .server.xml

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE mycat:server SYSTEM "server.dtd">  
<mycat:server xmlns:mycat="http://io.mycat/">  
        <system> 
                <property name="defaultSqlParser">druidparser</property>  
                <property name="mutiNodeLimitType">1</property>  
                <property name="serverPort">8066</property>    
                <property name="managerPort">9066</property>   
        </system>  
        <!-- mycat 的用户名,密码,数据库  -->  
        <user name="test">  
                <property name="password">123456</property>  
                <property name="schemas">JGDB</property>  
        </user>  

        <user name="user">  
                <property name="password">123456</property>  
                <property name="schemas">JGDB</property>  
                <property name="readOnly">true</property>  
        </user>  
</mycat:server>   

.rule.xml


<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
    - you may not use this file except in compliance with the License. - You 
    may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
    - - Unless required by applicable law or agreed to in writing, software - 
    distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
    License for the specific language governing permissions and - limitations 
    under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">

    <tableRule name="order_rule">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>

    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">2</property>
    </function>
</mycat:rule>

.schema.xml

schema 是第一个,与server.xml配置的名称相对应
table 里表明student 表,主键是id,有两个dataNode节点,这两个节点是用来水平分片的,规则就是rule定义的ruleById.
dataNode节点标明物理数据库和物理主机
dataHost 设置具体的数据库
balance属性

    balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上
    balance=”1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡
    balance=”2”,所有读操作都随机的在 writeHost、 readhost 上分发。
    balance=”3”, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力

writeType 设置 写入方式的,负载均衡方式可以设置


<?xml version="1.0"?>  
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">  
<mycat:schema xmlns:mycat="http://io.mycat/">  

    <!-- 设置表的存储方式.schema name="JGDB" 与 server.xml中的 JGDB 设置一致  -->  
    <schema name="JGDB" checkSQLschema="false" sqlMaxLimit="100">  
        <table name="users" primaryKey="id"  dataNode="db1" />  
        <table name="orders" primaryKey="id" dataNode="db2,db3" rule="order_rule" />  

    </schema>  

    <!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->  
    <dataNode name="db1" dataHost="host1" database="db1" />  
    <dataNode name="db2" dataHost="host1" database="db2" />  
    <dataNode name="db3" dataHost="host1" database="db3" />  

    <!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->  
    <dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">  
            <heartbeat></heartbeat>  
            <writeHost host="server1" url="localhost:3306" user="root" password="123456"/>  
    </dataHost> 

</mycat:schema>

4.启动

5.测试

 5.1使用 navicat连接 mycat

现在去点击着两张表会报错,因为我们本地服务没有创建数据库和对应的表,根据schema.xml去建数据库和表

5.2创建本地服务的数据库和表

 5.3查看数据

本地服务的db1的users里的数据和mychat服务里的userss数据一样

mychat服务里的orders数据来自本地服务的db2,db3两个数据库中的orders表

6.springboot 代码

  1.properties文件

   只有这一个配置,其他的就和我们平时使用的没什么区别了

server.port=@service.port@
swagger.show=@swagger.show@
mybatis.mapperLocations=classpath:mybatis/*.xml
##设置全局的日志级别,如果没有设置,以log4j2.xml配置的root 的level 为准
logging.level.root=info
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=xudong
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:8066/mycatDatabase

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!