Mycat 数据库中间件 安装 & 配置

说明

  1. 什么是Mycat
    • 一个彻底开源的,面向企业应用开发的大数据库集群
    • 支持事务、ACID、可以替代MySQL的加强版数据库
    • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
    • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
    • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
    • 一个新颖的数据库中间件产品
  2. 官网:http://www.mycat.org.cn/
  3. 开源地址:https://github.com/MyCATApache/Mycat-Server

相关版本配置说明

软件 版本
Mycat Mycat-server-1.6.7.5
MySQL 5.7

下载 Mycat 解压到任意目录

mark

配置文件说明

进入 Mycat 的 conf/ 目录下,主要注意这 3个配置文件

  • schema.xml: 中定义逻辑库,表、分片节点等内容
  • rule.xml: 中定义分片规则;
  • server.xml: 中定义用户以及系统相关变量,如端口等

mark

配置 schema.xml 文件

官方文件里 注释太多,太杂,看着太费劲,可以先进行删减

该配置说明:
逻辑库名TESTDB,相当于一个数据库,逻辑表名table,相当于数据库里的一张表,这张表里的数据放在了 dn1,dn2,dn3,dn4 这个四个真实的数据库里。

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

    <!-- name 逻辑数据名称 取消sql限制,把 sqlMaxLimit = "-1" -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <!-- name:逻辑表名称 dataNode:逻辑表数据存放的节点 rule:逻辑表的分片规则 规则对应 rule.xml 里面-->
        <table name="sbtest1" dataNode="dn1,dn2,dn3,dn4" rule="rule1" />
        <!-- 逻辑表可以配置多个  -->
    </schema>

    <!-- 数据节点对应的数据库,这里都配置在一个机器上,可分布式配置 -->
    <dataNode name="dn1" dataHost="localhost" database="db1" />
    <dataNode name="dn2" dataHost="localhost" database="db2" />
    <dataNode name="dn3" dataHost="localhost" database="db3" />
    <dataNode name="dn4" dataHost="localhost" database="db4" />

    <!-- 数据的节点的链接信息,name 需要对应上 <dataNode/> 标签里的 dataHost -->
    <dataHost name="localhost" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <!-- 心跳语句 -->
        <heartbeat>select user()</heartbeat>
        <!--配置写入主机 -->
        <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"></writeHost>

    </dataHost>

</mycat:schema>

配置 server.xml 文件

该文件可以不用配置

mark

配置 rule.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
    <!-- 分片规则名称 -->
    <tableRule name="rule1">
        <rule>
            <!-- 分片字段 -->
            <columns>id</columns>
            <!-- 分片的方法 -->
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>

    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- 分片的节点数量 -->
        <property name="count">4</property>
    </function>

</mycat:rule>

mark

MySQL 创库 创表

创建真实库

mark

创建真实表

mark

启动 Mycat

mark

进入Mycat

注意在 Linux 下,如果进入MySQL需要端口,一定要加上 host ,不然指定的端口不会生效。

mysql -uroot -h 127.0.0.1 -P 8066 -p

mark

插入数据

在插入数据时,分片规则字段数据尽量不要太接近,不然看不出效果。

mark

发表评论 / Comment

用心评论~