前言
最近新的项目启动,计划采用mycat作为分库分表的中间件。预计会在这个坑里面爬很久,所以将坑中所得的点点滴滴记录下来,今天第一篇是关于MYCAT环境的搭建以及一些简单的使用。
软件安装
mycat环境的安装涉及jdk,mysql,mycat。我的环境里面安装的版本是jdk1.7,mysql57,mycat1.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
登录成功,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的自增主键的配置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。