一、mycat 环境的搭建
下面介绍如何在本地运行mycat项目:
上github下载mycat的源码 https://github.com/MyCATApache/Mycat-Server,因为我们要目前使用的是mycat1.5版本,所以我们选择1.5版本的下载,当然我们也可以直接使用git下载代码,在这里就不做介绍。
1、下载源码
点击“Download ZIP”
2、解压文件,然后打开eclipse 导入maven项目。如果没有安装maven,请自行谷歌eclipse如何配置maven。在此不做介绍。
3、等待maven下载相关的依赖。另外需要说的是,mycat需要jdk1.7以上的版本。
4、依赖下载完后,可以对项目进行打包了。
如果打包出现失败,则查看相关日志,如果是某些依赖找不到,则需要将该包从maven仓库中删除,然后让项目重新下载,导致这样的结果有可能是Mycat项目在下载依赖包的时候,下载不完整导致依赖包不可用。顺利打包后,我们再继续配置mycat启动的相关文件。
一、配置Mycat
在resource目录下需要配置 schema.xml、rule.xml和server.xml 这三个文件。
(相关配置参考http://blog.csdn.net/d6619309/article/details/52746430)
1、mycat 支持多种数据库,在这里我们使用的是Mysql,首先需要创建三个分库(当然,你可以创建更多)
create database db1 default charset 'utf8';
create database db2 default charset 'utf8';
create database db3 default charset 'utf8';
2、在db1、db2、db3中都创建一样的表
create table hotnews (
id int primary key,
title varchar(100),
author_id int,
create_tm datetime,
content text
) engine = innodb default character set = 'utf8';
3、配置server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "F:\workPlace\Mycat-Server-1.5\src\main\resources\backups\server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<!-- 1为开启实时统计、0为关闭-->
<property name="useSqlStat">1</property>
<!-- 1为开启全加班一致性检测、0为关闭 -->
<property name="useGlobleTableCheck">0</property>
<property name="defaultSqlParser">druidparser</property>
<property name="sequnceHandlerType">0</property>
<!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
<property name="processorBufferPoolType">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">1m</property>
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
</system>
<user name="root">
<!-- password 连接 mycat数据库的密码 -->
<property name="password">mysql</property>
<!-- schemas 数据库名 -->
<property name="schemas">TESTDB</property>
</user>
</mycat:server>
4、配置schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name 上面 server.xml 配置的 schemas name, dataNode 配置几个节点的名称 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" />
</schema>
<dataNode name="dn1" dataHost="localhost" database="db1" />
<dataNode name="dn2" dataHost="localhost" database="db2" />
<dataNode name="dn3" dataHost="localhost" database="db3" />
<dataHost name="localhost" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- url 填Mysql的地址以及端口号 ,user 填mysql用户,password 填密码 -->
<writeHost host="hostM1" url="localhost:3306" user="root" password="mysql">
</writeHost>
</dataHost>
</mycat:schema>
5、配置rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "F:\workPlace\Mycat-Server-1.5\src\main\resources\backups\rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="mod-long">
<rule>
<columns>title</columns>
<algorithm>murmur1</algorithm>
</rule>
</tableRule>
<!--name 定义分片方法名称 这里使用一致性哈希算法 -->
<function name="murmur1" class="org.opencloudb.route.function.PartitionByMurmurHash">
<!-- how many data nodes -->
<property name="count">3</property>
<property name="virtualBucketTimes">90</property>
</function>
</mycat:rule>
三、项目运行
1、在Eclipse的mycat项目下打开MycatStartup这个类,找到main方法,右键->Run As->Java Application。
2、然后在下面配置运行参数。
然后再重新启动mycat。
看到MyCAT Server startup successfully. see logs in logs/mycat.log
就表示mycat 启动成功啦。