mycat 分表分庫demo

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章