1:下载安装包
下载地址:http://www.mycat.io/
--点击下载linux版本的安装包
2:将安装包上传到/usr/local 目录下,解压
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
3:新建用户和组
groupadd mycat
adduser -r -g mycat mycat
chown -R mycat.mycat /usr/local/mycat //修改mycat目录所属mycat用户
4:修改conf目录下的配置文件
schema.xml:定义并管理MyCat的逻辑库、表、分片规则、DataNode 以及DataSource。
server.xml:几乎保存了所有mycat 需要的系统配置信息。用于服务器参数调整和用户授权的配置文件。
rule.xml:用来定义拆分表格的分片规则。
wrapper.conf:jvm启动参数的配置。
一:修改wrapper.conf文件,配置jdk
vim wrapper.conf
# 配置自己的java路径
wrapper.java.command=/usr/local/java/bin/java
二:修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- TESTDB是mycat数据库,注意名称必须和server.xml中配置的一致 -->
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- dn1、dn2、dn3是mysql中的三个数据库节点,分别代替三个不同的数据库。
dataNode该属性定义逻辑表所属的数据库,
rule属性用于指定逻辑表要使用的规则名字,规则名字在rule.xml中定义。
-->
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
<!--
primaryKey属性指定逻辑表对应的主键,
type属性定义了逻辑表的类型,目前逻辑表只有“全局表”和”普通表”两种类型,不指定即为普通表
-->
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
<table name="goods" primaryKey="ID" type="global" dataNode="dn1,dn2" />
<!-- autoIncrement指定这个表有使用自增长主键,默认为false -->
<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"
rule="mod-long" />
<table name="employee" primaryKey="ID" dataNode="dn1,dn2"
rule="sharding-by-intfile" />
<table name="customer" primaryKey="ID" dataNode="dn1,dn2"
rule="sharding-by-intfile">
<childTable name="orders" primaryKey="ID" joinKey="customer_id"
parentKey="id">
<childTable name="order_items" joinKey="order_id"
parentKey="id" />
</childTable>
<childTable name="customer_addr" primaryKey="ID" joinKey="customer_id"
parentKey="id" />
</table>
</schema>
<!-- 配置mysql数据库节点,一个dataNode代表一个数据库 -->
<dataNode name="dn1" dataHost="127.0.0.1" database="db1" />
<dataNode name="dn2" dataHost="127.0.0.1" database="db2" />
<dataNode name="dn3" dataHost="127.0.0.1" database="db3" />
<!-- dataHost用来定义具体的mysql以及读写分离 -->
<!--
maxCon/maxCon指定最大最小连接数,
balance=“0”, 所有读操作都发送到当前可用的writeHost上。
balance=“1”,所有读操作都随机的发送到readHost。
balance=“2”,所有读操作都随机的在writeHost、readhost上分发。
writeType=“0”, 所有写操作都发送到可用的writeHost上。
writeType=“1”,所有写操作都随机的发送到readHost。
writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。
dbType指定数据库类型,支持oracle、mongodb等
dbDriver指定连接后端数据库使用的Driver,目前可选的值有native和JDBC。
-->
<dataHost name="127.0.0.1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- heartbeat标签指定后端数据库进行心跳检查的语句。例如,MYSQL可以使用select user(),Oracle可以使用select 1 from dual等-->
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:3306" user="root"
password="root">
<!-- <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> -->
</writeHost>
<!-- <writeHost host="hostS1" url="localhost:3316" user="root"
password="123456" /> -->
</dataHost>
</mycat:schema>
三:修改server.xml文件
<!-- 配置根用户和密码,这里的TESTDB需要和schema.xml配置的名称一致 -->
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>
<!-- 配置用户和密码,设置权限为只读 -->
<user name="test">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
5:测试测试数据库
连接mysql创建db1、db2、db3 三个数据库
6:启动mycat
/usr/local/mycat/bin/mycat start
7:连接mycat
mysql -uroot -p123456 -h127.0.0.1 -P8066 -DTESTDB
注意-P、-D需要大写,-h 后面必须是ip,使用localhost会出错
8:测试
use TESTDB;
create table company(id int not null primary key,name varchar(50),addr varchar(255));
insert into company values(1,"facebook","usa");