官方下载地址:http://dl.mycat.io/
环境:mysql 5.6 mysql-5.6.42-linux-glibc2.12-x86_64.tar.gz lunix centos 7.0 ip: 192.168.1.12 :3306
mycat 1.6 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz lunix centos 7.0 ip:192.168.1.3 :8066
jdk 1.8.0_73
2.解压mycat
同样使用rz工具将它上传到/software文件夹下 并解压到/user/local路径下(解压后的文件名就叫做mycat)
进入到/usr/local/mycat/bin/
它下面的mycat是启动文件
./mycat start 启动
./mycat stop 停止
./mycat restart 重启
./mycat status 查看mycat的启动状态
这样mycat就安装好了
前面也提到了,mycat安装在了192.168.1.3这台机器上,并且前提装好了jdk。
先用navicat 链接192.168.1.12装了个单机版的mysql。在这个上面,创建3个数据库db1/db2/db3,这几个库中都建一张item(商品表)
建表语句很简单
CREATE TABLE `item` (
`id` int(11) NOT NULL COMMENT '主键id',
`name` varchar(20) DEFAULT NULL COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在安装目录的/usr/local/mycat/conf文件夹下,是mycat的各种配置文件存储的地方。
而简单的分库分表操作,需要修改这三个配置文件
schema.xml
server.xml
rule.xml
schema.xml配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="item" dataNode="dn1,dn2,dn3" rule="mod-long" />
</schema>
<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
/> -->
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<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="192.168.1.12:3306" user="root"
password="root">
</writeHost>
</dataHost>
</mycat:schema>
server.xml
注意用户名连接的schema的TESTDB要和schema.xml和保持一致
而连接的默认端口是8066 ,用navicat 链接
通过navicat 给mycat 插入数据
INSERT INTO item(id, NAME) VALUES(1, 'a');
INSERT INTO item(id, NAME) VALUES(2, 'b');
INSERT INTO item(id, NAME) VALUES(3, 'c');
INSERT INTO item(id, NAME) VALUES(4, 'd');
INSERT INTO item(id, NAME) VALUES(5, 'f');
INSERT INTO item(id, NAME) VALUES(6, 'g');
SELECT * FROM item;
插入了6条数据,可以看到查询出来的不是按照顺序的。
而看192.168.1.12的db1/db2/db3的库
db1:
db2:
db3:
虽然分库了,但可以通过排序将不同库中的数据在查询后,在mycat中排序