MyCAT入门实践
1.MyCAT简单介绍
MyCAT是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务、ACID、可以替代MySQL的加强版数据库,是一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
融合了内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,并且结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品,是一个新颖的数据库中间件产品
2.安装JAVA环境
参考:Windows下Java环境变量配置 http://www.cnblogs.com/heyangyi/p/8942074.html
3.下载配置MyCat
下载地址:http://dl.mycat.io/1.6-RELEASE/
其他准备工作,安装mysql,创建 db1,db2,db3三个数据库
CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */; CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET utf8 */; CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */;
分别在三个数据库中添加数据表:
CREATE TABLE `travelrecord` ( `id` bigint(20) NOT NULL, `user_id` varchar(100) DEFAULT NULL, `traveldate` date DEFAULT NULL, `fee` decimal(10,0) DEFAULT NULL, `days` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
解压下载得mycat,修改目录下得 conf 中的 schema.xml
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="10.0.0.209:3306" user="sa" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS2" url="10.0.0.209:3306" user="sa" password="123456" /> </writeHost> <writeHost host="hostS1" url="10.0.0.209:3306" user="sa" password="123456" /> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
注意修改mysql所在得ip,port, user,password
配置mycat环境变量 MYCAT_HOME
4.运行测试MyCat
进入mycat的bin目录,运行 startup_nowrap.bat
打开MySQL Workbench,添加Connections
Host 是Mycat 所在服务IP地址,端口默认为:8066,User 和Password 是在 Mycat conf 目录下的server.xml中配置的 user 节点
测试插入数据到 travelrecord 表
insert into travelrecord(id,user_id,traveldate,fee,days) values(1,'Victor',20160101,100,10); insert into travelrecord(id,user_id,traveldate,fee,days) values(5000001,'Job',20160102,100,10); insert into travelrecord(id,user_id,traveldate,fee,days) values(10000001,'Slow',20160103,100,10);
分别查看db1,db2,db3中的数据
SELECT * FROM db1.travelrecord;
SELECT * FROM db2.travelrecord;
SELECT * FROM db3.travelrecord;
三条数据分别被添加到3个数据库中,这个与conf目录下autopartition-long.txt的定义有关,这个文件主要定义auto-sharding-long的规则
# range start-end ,data node index # K=1000,M=10000. 0-500M=0 500M-1000M=1 1000M-1500M=2
其中0-500M条数据会进到 db1分片库
其中500M-1000M条数据会进到 db2分片库
其中1000M-1500M条数据会进到 db3分片库
查询刚刚添加的三天数据:进入mycat_conn链接里面,会发现存在了TESTDB逻辑库,执行查询
SELECT * FROM travelrecord;
重要配置文件简要说明
- server.xml是Mycat服务器参数调整和用户授权的配置文件
- schema.xml是逻辑库定义和表以及分片定义的配置文件
- rule.xml是分片规则的配置文件
、