橫空出世的MyCat截至到2015年4月,保守估計(jì)已經(jīng)有超過(guò)60個(gè)項(xiàng)目在使用,主要應(yīng)用在電信領(lǐng)域、互聯(lián)網(wǎng)項(xiàng)目,大部分是交易和管理系統(tǒng),少量是信息系統(tǒng)。比較大的系統(tǒng)中,數(shù)據(jù)規(guī)模單表單月30億。本人也初步嘗鮮,體驗(yàn)了一把,見(jiàn)以下描述,供大家參考。
MyCAT 是使用 JAVA 語(yǔ)言進(jìn)行編寫開(kāi)發(fā),使用前需要先安裝 JAVA 運(yùn)行環(huán)境(JRE),由于 MyCAT 中使用
了 JDK7 中的一些特性,所以要求必須在 JDK7 以上的版本上運(yùn)行。
?
https://github.com/MyCATApache/
注:MyCAT 相關(guān)源碼、文檔都可以在此地址下進(jìn)行下載。
?
windows下可以下載Mycat-server-1.4-RELEASE-yyyymmddxxxx-win.tar
?
今天體驗(yàn)的是在windows 10系統(tǒng)下。
體驗(yàn)的版本:Mycat-server-1.4-release-20151019230038-win
?
解壓后的文件目錄:
|-mycat
|----bin ? ? //啟動(dòng)mycat
|----catlet
|----conf ? //配置文件
|----lib ? ? //jar存放目錄
|----logs ?//日志文件
?
體驗(yàn)步驟
1、首先在本地的mysql建兩個(gè)空數(shù)據(jù)庫(kù) ?mycat1,mycat2。
2、修改conf目錄下面的 schema.xml配置文件。
Xml代碼 ?
<?xml?version="1.0"?>??<!DOCTYPE?mycat:schema?SYSTEM?"schema.dtd">??<mycat:schema?xmlns:mycat="http://org.opencloudb/">????????<schema?name="TESTDB"?checkSQLschema="false"?sqlMaxLimit="100">????????????<table?name="employee"?primaryKey="ID"?dataNode="dn1,dn2"??????????????rule="sharding-by-intfile"?/>??????</schema>??????<dataNode?name="dn1"?dataHost="localhost"?database="mycat1"?/>??????<dataNode?name="dn2"?dataHost="localhost"?database="mycat2"?/>??????<dataHost?name="localhost"?maxCon="1000"?minCon="10"?balance="0"??????????writeType="0"?dbType="mysql"?dbDriver="native"?switchType="1"??slaveThreshold="100">??????????<heartbeat>select?user()</heartbeat>??????????<writeHost?host="hostM1"?url="localhost:3306"?user="root"??????????????password="11aa..123">????????????????????????</writeHost>??????</dataHost>????</mycat:schema>??<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"><table name="employee" primaryKey="ID" dataNode="dn1,dn2"rule="sharding-by-intfile" /></schema><dataNode name="dn1" dataHost="localhost" database="mycat1" /><dataNode name="dn2" dataHost="localhost" database="mycat2" /><dataHost name="localhost" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="localhost:3306" user="root"password="11aa..123"><!-- can have multi read hosts --></writeHost></dataHost></mycat:schema>
?
3、修改conf目錄下面的 server.xml配置文件:
Xml代碼 ?
<?xml?version="1.0"?encoding="UTF-8"?>??<!DOCTYPE?mycat:server?SYSTEM?"server.dtd">??<mycat:server?xmlns:mycat="http://org.opencloudb/">??????<system>??????<property?name="defaultSqlParser">druidparser</property>??????</system>??????<user?name="test">??????????<property?name="password">test</property>??????????<property?name="schemas">TESTDB</property>??????</user>????</mycat:server>??<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/"><system><property name="defaultSqlParser">druidparser</property></system><user name="test"><property name="password">test</property><property name="schemas">TESTDB</property></user></mycat:server>
?
server.xml配置文件用來(lái)配置mycat對(duì)方的數(shù)據(jù)庫(kù)連接用戶名密碼,啟動(dòng)成功后可以用navicat連接。
?
? ?3、進(jìn)入bin目錄。
? ? ? ? ?
? ?看命名的意思startup_nowrap.bat是不注冊(cè)開(kāi)機(jī)自動(dòng)啟動(dòng)服務(wù)的,準(zhǔn)備選擇startup_nowrap.bat來(lái)啟動(dòng)mycat。但是雙擊startup_nowrap.bat 之后,運(yùn)行界面一閃而過(guò)。logs中也沒(méi)有相關(guān)的錯(cuò)誤信息,改為從dos環(huán)境啟動(dòng)。
? ?輸錯(cuò)錯(cuò)誤信息:
?
?
講bat文件中的啟動(dòng)配置修改為:
Python代碼 ?
"%JAVA_CMD%"?-server?-Xms128M?-Xmx256M?-XX:MaxPermSize=64M??-XX:+AggressiveOpts?-XX:MaxDirectMemorySize=128M?-DMYCAT_HOME=%MYCAT_HOME%?-cp?"..\conf;..\lib\*"?org.opencloudb.MycatStartup??"%JAVA_CMD%" -server -Xms128M -Xmx256M -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=128M -DMYCAT_HOME=%MYCAT_HOME% -cp "..\conf;..\lib\*" org.opencloudb.MycatStartup
?
再次啟動(dòng)程序成功。
?
Logs代碼 ?
11/17?17:16:45.689???INFO?[main]?(MycatServer.java:195)?-===============================================??11/17?17:16:45.689???INFO?[main]?(MycatServer.java:196)?-MyCat?is?ready?to?startup?...??11/17?17:16:45.689???INFO?[main]?(MycatServer.java:206)?-Startup?processors?...,total?processors:8,aio?thread?pool?size:16???????each?process?allocated?socket?buffer?pool??bytes?,buffer?chunk?size:4096??buffer?pool's?capacity(buferPool/bufferChunk)?is:8000??11/17?17:16:45.689???INFO?[main]?(MycatServer.java:207)?-sysconfig?params:SystemConfig?[processorBufferLocalPercent=100,?frontSocketSoRcvbuf=1048576,?frontSocketSoSndbuf=4194304,?backSocketSoRcvbuf=4194304,?backSocketSoSndbuf=1048576,?frontSocketNoDelay=1,?backSocketNoDelay=1,?maxStringLiteralLength=65535,?frontWriteQueueSize=2048,?bindIp=0.0.0.0,?serverPort=8066,?managerPort=9066,?charset=utf8,?processors=8,?processorExecutor=16,?timerExecutor=2,?managerExecutor=2,?idleTimeout=1800000,?catletClassCheckSeconds=60,?sqlExecuteTimeout=300,?processorCheckPeriod=1000,?dataNodeIdleCheckPeriod=300000,?dataNodeHeartbeatPeriod=10000,?clusterHeartbeatUser=_HEARTBEAT_USER_,?clusterHeartbeatPass=_HEARTBEAT_PASS_,?clusterHeartbeatPeriod=5000,?clusterHeartbeatTimeout=10000,?clusterHeartbeatRetry=10,?txIsolation=3,?parserCommentVersion=50148,?sqlRecordCount=10,?processorBufferPool=32768000,?processorBufferChunk=4096,?defaultMaxLimit=100,?sequnceHandlerType=0,?sqlInterceptor=org.opencloudb.interceptor.impl.DefaultSqlInterceptor,?sqlInterceptorType=select,?sqlInterceptorFile=D:\mycat_study\Mycat-server-1.4-release-20151019230038-win\mycat\bin/logs/sql.txt,?mutiNodeLimitType=0,?mutiNodePatchSize=100,?defaultSqlParser=druidparser,?usingAIO=0,?packetHeaderSize=4,?maxPacketSize=16777216,?mycatNodeId=1]??11/17?17:16:45.720???INFO?[main]?(MycatServer.java:266)?-using?nio?network?handler???11/17?17:16:45.751???INFO?[main]?(MycatServer.java:284)?-$_MyCatManager?is?started?and?listening?on?9066??11/17?17:16:45.751???INFO?[main]?(MycatServer.java:288)?-$_MyCatServer?is?started?and?listening?on?8066??11/17 17:16:45.689 INFO [main] (MycatServer.java:195) -===============================================
11/17 17:16:45.689 INFO [main] (MycatServer.java:196) -MyCat is ready to startup ...
11/17 17:16:45.689 INFO [main] (MycatServer.java:206) -Startup processors ...,total processors:8,aio thread pool size:16 each process allocated socket buffer pool bytes ,buffer chunk size:4096 buffer pool's capacity(buferPool/bufferChunk) is:8000
11/17 17:16:45.689 INFO [main] (MycatServer.java:207) -sysconfig params:SystemConfig [processorBufferLocalPercent=100, frontSocketSoRcvbuf=1048576, frontSocketSoSndbuf=4194304, backSocketSoRcvbuf=4194304, backSocketSoSndbuf=1048576, frontSocketNoDelay=1, backSocketNoDelay=1, maxStringLiteralLength=65535, frontWriteQueueSize=2048, bindIp=0.0.0.0, serverPort=8066, managerPort=9066, charset=utf8, processors=8, processorExecutor=16, timerExecutor=2, managerExecutor=2, idleTimeout=1800000, catletClassCheckSeconds=60, sqlExecuteTimeout=300, processorCheckPeriod=1000, dataNodeIdleCheckPeriod=300000, dataNodeHeartbeatPeriod=10000, clusterHeartbeatUser=_HEARTBEAT_USER_, clusterHeartbeatPass=_HEARTBEAT_PASS_, clusterHeartbeatPeriod=5000, clusterHeartbeatTimeout=10000, clusterHeartbeatRetry=10, txIsolation=3, parserCommentVersion=50148, sqlRecordCount=10, processorBufferPool=32768000, processorBufferChunk=4096, defaultMaxLimit=100, sequnceHandlerType=0, sqlInterceptor=org.opencloudb.interceptor.impl.DefaultSqlInterceptor, sqlInterceptorType=select, sqlInterceptorFile=D:\mycat_study\Mycat-server-1.4-release-20151019230038-win\mycat\bin/logs/sql.txt, mutiNodeLimitType=0, mutiNodePatchSize=100, defaultSqlParser=druidparser, usingAIO=0, packetHeaderSize=4, maxPacketSize=16777216, mycatNodeId=1]
11/17 17:16:45.720 INFO [main] (MycatServer.java:266) -using nio network handler
11/17 17:16:45.751 INFO [main] (MycatServer.java:284) -$_MyCatManager is started and listening on 9066
11/17 17:16:45.751 INFO [main] (MycatServer.java:288) -$_MyCatServer is started and listening on 8066
?可以看到mycat監(jiān)聽(tīng)的端口號(hào),使用navicat連接mycat數(shù)據(jù)庫(kù)。
?
?
連接成功可以看到schema.xml配置的邏輯庫(kù)。
?
創(chuàng)建表
Sql代碼 ?
CREATE?TABLE?`employee`?(????`ID`?int(11)?NOT?NULL,????`NAME`?varchar(100)?default?NULL,????`SHARDING_ID`?int(11)?NOT?NULL,????PRIMARY?KEY??(`ID`)??)??CREATE TABLE `employee` (`ID` int(11) NOT NULL,`NAME` varchar(100) default NULL,`SHARDING_ID` int(11) NOT NULL,PRIMARY KEY (`ID`)
)
?插入數(shù)據(jù):
Sql代碼 ?
INSERT?INTO?`employee`?VALUES?('1',?'leader?us',?'10000');??INSERT?INTO?`employee`?VALUES?('2',?'mycat',?'10000');??INSERT?INTO?`employee`?VALUES?('3',?'mydog',?'10000');??INSERT?INTO?`employee`?VALUES?('4',?'mypig',?'10000');??INSERT INTO `employee` VALUES ('1', 'leader us', '10000');
INSERT INTO `employee` VALUES ('2', 'mycat', '10000');
INSERT INTO `employee` VALUES ('3', 'mydog', '10000');
INSERT INTO `employee` VALUES ('4', 'mypig', '10000');
?
? ?使用navicat可以看到插入的四條記錄。
分別打開(kāi)mycat1 ?,mycat2數(shù)據(jù)庫(kù)
employee表中分別有1,3;2,4;兩條記錄 ?表明mycat分片表成功
? ? ? ? ?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的mycat快速体验(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。