1. 程式人生 > >MyCAT入門實踐

MyCAT入門實踐

定義 有關 sts use .com 融合 企業級 支持 .html

1.MyCAT簡單介紹

MyCAT是一個徹底開源的,面向企業應用開發的大數據庫集群,支持事務、ACID、可以替代MySQL的加強版數據庫,是一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
融合了內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server,並且結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品,是一個新穎的數據庫中間件產品

2.安裝JAVA環境

參考:Windows下Java環境變量配置 http://www.cnblogs.com/heyangyi/p/8942074.html

3.下載配置MyCat

下載地址:http://dl.mycat.io/1.6-RELEASE/

技術分享圖片

其他準備工作,安裝mysql,創建 db1,db2,db3三個數據庫

CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE `db2` /*!40100 DEFAULT CHARACTER SET utf8 */;
CREATE DATABASE `db3` /*!40100 DEFAULT CHARACTER SET utf8 */;

分別在三個數據庫中添加數據表:

CREATE TABLE `travelrecord` (
  `id` bigint(20) NOT NULL,
  `user_id` varchar(100) DEFAULT NULL,
  `traveldate` date DEFAULT NULL,
  `fee` decimal(10,0) DEFAULT NULL,
  `days` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

解壓下載得mycat,修改目錄下得 conf 中的 schema.xml

	<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="10.0.0.209:3306" user="sa"
				   password="123456">
			<!-- can have multi read hosts -->
			<readHost host="hostS2" url="10.0.0.209:3306" user="sa" password="123456" />
		</writeHost>
		<writeHost host="hostS1" url="10.0.0.209:3306" user="sa"
				   password="123456" />
		<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
	</dataHost>

註意修改mysql所在得ip,port, user,password

配置mycat環境變量 MYCAT_HOME

技術分享圖片

4.運行測試MyCat

進入mycat的bin目錄,運行 startup_nowrap.bat

技術分享圖片

打開MySQL Workbench,添加Connections

技術分享圖片

Host 是Mycat 所在服務IP地址,端口默認為:8066,User 和Password 是在 Mycat conf 目錄下的server.xml中配置的 user 節點

測試插入數據到 travelrecord 表

insert into travelrecord(id,user_id,traveldate,fee,days)  values(1,‘Victor‘,20160101,100,10);
insert into travelrecord(id,user_id,traveldate,fee,days)  values(5000001,‘Job‘,20160102,100,10);
insert into travelrecord(id,user_id,traveldate,fee,days)  values(10000001,‘Slow‘,20160103,100,10);

分別查看db1,db2,db3中的數據

SELECT * FROM db1.travelrecord;

技術分享圖片

SELECT * FROM db2.travelrecord;

技術分享圖片

SELECT * FROM db3.travelrecord;

技術分享圖片

三條數據分別被添加到3個數據庫中,這個與conf目錄下autopartition-long.txt的定義有關,這個文件主要定義auto-sharding-long的規則

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2

其中0-500M條數據會進到 db1分片庫
其中500M-1000M條數據會進到 db2分片庫
其中1000M-1500M條數據會進到 db3分片庫

查詢剛剛添加的三天數據:進入mycat_conn鏈接裏面,會發現存在了TESTDB邏輯庫,執行查詢

SELECT * FROM travelrecord;

技術分享圖片

重要配置文件簡要說明

  • server.xml是Mycat服務器參數調整和用戶授權的配置文件
  • schema.xml是邏輯庫定義和表以及分片定義的配置文件
  • rule.xml是分片規則的配置文件

MyCAT入門實踐