官方下載地址: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中排序