前言

最近新的项目启动,计划采用mycat作为分库分表的中间件。预计会在这个坑里面爬很久,所以将坑中所得的点点滴滴记录下来,今天第一篇是关于MYCAT环境的搭建以及一些简单的使用。

软件安装

mycat环境的安装涉及jdk,mysql,mycat。我的环境里面安装的版本是jdk1.7mysql57mycat1.6
对应要设置的环境变量有JAVA_HOME,MYCAT_HOME
我的环境是windows,安装完jdk和mysql之后,再将mycat解压,配置好环境变量之后,就算安装成功了。
在mycat目录比较重要的是

  • bin 启动脚本
  • conf 配置文件,逻辑库,规则,用户等配置文件,这些配置文件在下面细说
  • logs 日志文件

初步安装后,试着启动,到bin目录下执行./mycat.bat start, 查看日志,如果启动没有问题,就算安装完成了。

配置

数据节点

先在mysql上建立三个数据库实例(mydb1,mydb2,mydb3),稍后会配置成mycat的数据节点,mycat不支持分区表在同一个库中分表生成tbl_1,tbl_2,tbl_3的方式,而是将分区表放到不同数据节点的方式。

mycat配置

mycat中,最基本的表是全局表和分区表,下面就进行这两个表的配置

  • schema.xml , gv_warehouse是全局表,会在所有数据节点上建立相同副本,gv_asn是采用一致性hash的分区表,数据会分布在指定的数据节点上。同时在文件中指定数据节点和数据库主机信息,一目了然。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTERDB" checkSQLschema="false" sqlMaxLimit="100">
        <table name="gv_warehouse" type="global" dataNode="dn1,dn2,dn3"></table>
        <table name="gv_asn" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="sharding-by-murmur"></table>    
    </schema>
    <dataNode name="dn1" dataHost="127.0.0.1" database="mydb1" />
    <dataNode name="dn2" dataHost="127.0.0.1" database="mydb2" />
    <dataNode name="dn3" dataHost="127.0.0.1" database="mydb3" />
    <dataHost name="127.0.0.1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="localhost:3306" user="root" password="abc123">
        </writeHost>
    </dataHost>
</mycat:schema>
  • rule.xml,设计分片规则,上面给分区表gv_asn指定了规则rule="sharding-by-murmur",就是在rule.xml中定义的。通过columns指定分区字段即可,别的不需要动。
    <tableRule name="sharding-by-murmur">
        <rule>
            <columns>wh_id</columns>
            <algorithm>murmur</algorithm>
        </rule>
    </tableRule>
  • server.xml ,mycat服务器的配置,这里我只配置了上面配置逻辑库的用户名密码
<user name="tester">
        <property name="password">tester</property>
        <property name="schemas">TESTERDB</property>
</user>

配置基本完成,现在重新启动mycat,进入mycat的bin目录,./mycat.bat restart.使用mysql客户端工具,我用的是SQLyog,登录mycat
clipboard.png
登录成功,OK。下面我们来做点小测试了。

小测试

现在我们还没有建立任何表,别急,我们可以在客户端直接建,但是只能建我们再schema中配置的表,否则会报错,下面是建表语句

CREATE TABLE gv_asn(
  id INTEGER NOT NULL PRIMARY KEY,
  wh_id INTEGER,
  qty INTEGER,
  createtime DATETIME
);
create TABLE gv_warehouse(
    id INTEGER NOT NULL PRIMARY KEY auto_increase,
    CODE varchar(100),
    alias varchar(500),
    address varchar(500),
    createtime DATETIME,
    city varchar(100)
);

然后对这两个表执行一些插入,看看全局表和分区表的区别。好了,简单介绍到这,下篇介绍mycat的自增主键的配置。


沈子平
183 声望17 粉丝

慢慢积累,一切都不会太晚.