MyCat配置運行

昨天把mycat的環(huán)境搭建差不多了放棒,今天直接上配置文件:

主要需要修改三個配置文件:

rule.xml

schema.xml

server.xml

rule.xml配置如圖:

<?xml version="1.0" encoding="UTF-8"?>

<!-- - - Licensed under the Apache License, Version 2.0 (the "License");

- you may not use this file except in compliance with the License. - You

may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0

- - Unless required by applicable law or agreed to in writing, software -

distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the

License for the specific language governing permissions and - limitations

under the License. -->

<!DOCTYPE mycat:rule SYSTEM "rule.dtd">

<mycat:rule xmlns:mycat="http://io.mycat/">

<tableRule name="rule1">

<rule>

<columns>id</columns>

<algorithm>func1</algorithm>

</rule>

</tableRule>

<tableRule name="rule2">

<rule>

<columns>user_id</columns>

<algorithm>func1</algorithm>

</rule>

</tableRule>

<tableRule name="sharding-by-intfile">

<rule>

<columns>sharding_id</columns>

<algorithm>hash-int</algorithm>

</rule>

</tableRule>

<tableRule name="auto-sharding-long">

<rule>

<columns>id</columns>

<algorithm>rang-long</algorithm>

</rule>

</tableRule>

<tableRule name="mod-long">

<rule>

<columns>id</columns>

<algorithm>mod-long</algorithm>

</rule>

</tableRule>

<tableRule name="sharding-by-murmur">

<rule>

<columns>id</columns>

<algorithm>murmur</algorithm>

</rule>

</tableRule>

<tableRule name="crc32slot">

<rule>

<columns>id</columns>

<algorithm>crc32slot</algorithm>

</rule>

</tableRule>

<tableRule name="sharding-by-month">

<rule>

<columns>create_time</columns>

<algorithm>partbymonth</algorithm>

</rule>

</tableRule>

<tableRule name="latest-month-calldate">

<rule>

<columns>calldate</columns>

<algorithm>latestMonth</algorithm>

</rule>

</tableRule>

<tableRule name="auto-sharding-rang-mod">

<rule>

<columns>id</columns>

<algorithm>rang-mod</algorithm>

</rule>

</tableRule>

<tableRule name="jch">

<rule>

<columns>id</columns>

<algorithm>jump-consistent-hash</algorithm>

</rule>

</tableRule>

<function name="murmur"

class="io.mycat.route.function.PartitionByMurmurHash">

<property name="seed">0</property><!-- 默認是0 -->

<property name="count">2</property><!-- 要分片的數據庫節(jié)點數量虐沥,必須指定,否則沒法分片 -->

<property name="virtualBucketTimes">160</property><!-- 一個實際的數據庫節(jié)點被映射為這么多虛擬節(jié)點浩淘,默認是160倍贩耐,也就是虛擬節(jié)點數是物理節(jié)點數的160倍 -->

<!-- <property name="weightMapFile">weightMapFile</property> 節(jié)點的權重,沒有指定權重的節(jié)點默認是1本辐。以properties文件的格式填寫,以從0開始到count-1的整數值也就是節(jié)點索引為key蘸拔,以節(jié)點權重值為值师郑。所有權重值必須是正整數,否則以1代替 -->

<!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property>

用于測試時觀察各物理節(jié)點與虛擬節(jié)點的分布情況调窍,如果指定了這個屬性宝冕,會把虛擬節(jié)點的murmur hash值與物理節(jié)點的映射按行輸出到這個文件,沒有默認值邓萨,如果不指定地梨,就不會輸出任何東西 -->

</function>

<function name="crc32slot"

? class="io.mycat.route.function.PartitionByCRC32PreSlot">

<property name="count">2</property><!-- 要分片的數據庫節(jié)點數量,必須指定缔恳,否則沒法分片 -->

</function>

<function name="hash-int"

class="io.mycat.route.function.PartitionByFileMap">

<property name="mapFile">partition-hash-int.txt</property>

</function>

<function name="rang-long"

class="io.mycat.route.function.AutoPartitionByLong">

<property name="mapFile">autopartition-long.txt</property>

</function>

<function name="mod-long" class="io.mycat.route.function.PartitionByMod">

<!-- how many data nodes -->

<property name="count">3</property>

</function>

<function name="func1" class="io.mycat.route.function.PartitionByLong">

<property name="partitionCount">8</property>

<property name="partitionLength">128</property>

</function>

<function name="latestMonth"

class="io.mycat.route.function.LatestMonthPartion">

<property name="splitOneDay">24</property>

</function>

<function name="partbymonth"

class="io.mycat.route.function.PartitionByMonth">

<property name="dateFormat">yyyy-MM-dd</property>

<property name="sBeginDate">2015-01-01</property>

</function>

<function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod">

? ? ? ? <property name="mapFile">partition-range-mod.txt</property>

</function>

<function name="jump-consistent-hash" class="io.mycat.route.function.PartitionByJumpConsistentHash">

<property name="totalBuckets">3</property>

</function>

</mycat:rule>


其中最重要的兩段:列舉使用id分片宝剖,分多少片:

schema.xml:數據庫關系配置,分庫分表配置

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

<schema name="cuijiale" checkSQLschema="false" sqlMaxLimit="100">

<!-- auto sharding by id (long) -->

<table name="tb_user" dataNode="dn1,dn2" rule="sharding-by-murmur">

</table>

<!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate"

/> -->

</schema>

<!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"

/> -->

<dataNode name="dn1" dataHost="192.168.30.134" database="cuijiale" />

<dataNode name="dn2" dataHost="192.168.30.135" database="cuijiale" />

<!-- <dataNode name="dn3" dataHost="localhost1" database="db3" /> -->

<!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" />

<dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" />

<dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" />

<dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> -->

<dataHost name="192.168.30.134" 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="192.168.30.134" url="192.168.30.134:3306" user="cuijiale" password="2153577">?

? ? ? ? </writeHost>

<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->

</dataHost>

<dataHost name="192.168.30.135" 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="192.168.30.135" url="192.168.30.135:3306" user="cuijiale" password="2153577">?

? ? ? ? </writeHost>

<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->

</dataHost>

</mycat:schema>

我這里準備了兩臺寫庫虛擬機歉甚,只為驗證分庫分表是否成功與否万细;

server.xml:配置用戶信息

<?xml version="1.0" encoding="UTF-8"?>

<!-- - - Licensed under the Apache License, Version 2.0 (the "License");

- you may not use this file except in compliance with the License. - You

may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0

- - Unless required by applicable law or agreed to in writing, software -

distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the

License for the specific language governing permissions and - limitations

under the License. -->

<!DOCTYPE mycat:server SYSTEM "server.dtd">

<mycat:server xmlns:mycat="http://io.mycat/">

<system>

<property name="useSqlStat">0</property>? <!-- 1為開啟實時統(tǒng)計、0為關閉 -->

<property name="useGlobleTableCheck">0</property>? <!-- 1為開啟全加班一致性檢測纸泄、0為關閉 -->

<property name="sequnceHandlerType">2</property>

? ? ? <!--? <property name="useCompression">1</property>--> <!--1為開啟mysql壓縮協(xié)議-->

? ? ? ? <!--? <property name="fakeMySQLVersion">5.6.20</property>--> <!--設置模擬的MySQL版本號-->

<!-- <property name="processorBufferChunk">40960</property> -->

<!--

<property name="processors">1</property>

<property name="processorExecutor">32</property>

-->

<!--默認為type 0: DirectByteBufferPool | type 1 ByteBufferArena-->

<property name="processorBufferPoolType">0</property>

<!--默認是65535 64K 用于sql解析時最大文本長度 -->

<!--<property name="maxStringLiteralLength">65535</property>-->

<!--<property name="sequnceHandlerType">0</property>-->

<!--<property name="backSocketNoDelay">1</property>-->

<!--<property name="frontSocketNoDelay">1</property>-->

<!--<property name="processorExecutor">16</property>-->

<!--

<property name="serverPort">8066</property> <property name="managerPort">9066</property>

<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>

<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->

<!--分布式事務開關赖钞,0為不過濾分布式事務腰素,1為過濾分布式事務(如果分布式事務內只涉及全局表,則不過濾)雪营,2為不過濾分布式事務,但是記錄分布式事務日志-->

<property name="handleDistributedTransactions">0</property>

<!--

off heap for merge/order/group/limit? ? ? 1開啟? 0關閉

-->

<property name="useOffHeapForMerge">1</property>

<!--

單位為m

-->

<property name="memoryPageSize">1m</property>

<!--

單位為k

-->

<property name="spillsFileBufferSize">1k</property>

<property name="useStreamOutput">0</property>

<!--

單位為m

-->

<property name="systemReserveMemorySize">384m</property>

<!--是否采用zookeeper協(xié)調切換? -->

<property name="useZKSwitch">true</property>

</system>

<!-- 全局SQL防火墻設置 -->

<!--

<firewall>

? <whitehost>

? ? ? <host host="127.0.0.1" user="mycat"/>

? ? ? <host host="127.0.0.2" user="mycat"/>

? </whitehost>

? ? ? <blacklist check="false">

? ? ? </blacklist>

</firewall>

-->

<user name="cuijiale">

<property name="password">2153577</property>

<property name="schemas">cuijiale</property>

<!-- 表級 DML 權限設置 -->

<!--

<privileges check="false">

<schema name="TESTDB" dml="0110" >

<table name="tb01" dml="0000"></table>

<table name="tb02" dml="1111"></table>

</schema>

</privileges>

-->

</user>

<!-- <user name="user">

<property name="password">user</property>

<property name="schemas">TESTDB</property>

<property name="readOnly">true</property>

</user> -->

</mycat:server>

替換mycat服務配置文件后弓千,啟動服務:

在mycat安裝目錄bin文件夾下輸入如下命令:

有時linux虛擬機訪問mysql會失敗,一般情況會有防火墻献起,關掉防火墻在訪問即可洋访;

全部啟動好后,兩個庫分別新建表tb_user:

CREATE TABLE `tb_user` ( `id` int(10) NOT NULL , `name` varchar(255) NULL , `sex` varchar(255) NULL , PRIMARY KEY (`id`) );

我是靠id分片的谴餐,這里要注意下:

全部搞定后姻政,可以insert幾條數據驗證下:


經驗證,mycat服務查詢結果來自兩臺不同mysql服務器总寒,至此分庫分表切片都已成功扶歪!

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摄闸,隨后出現的幾起案子善镰,更是在濱河造成了極大的恐慌,老刑警劉巖年枕,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炫欺,死亡現場離奇詭異,居然都是意外死亡熏兄,警方通過查閱死者的電腦和手機品洛,發(fā)現死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摩桶,“玉大人桥状,你說我怎么就攤上這事∠跚澹” “怎么了辅斟?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長芦拿。 經常有香客問我士飒,道長,這世上最難降的妖魔是什么蔗崎? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任酵幕,我火速辦了婚禮,結果婚禮上缓苛,老公的妹妹穿的比我還像新娘芳撒。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布笔刹。 她就那樣靜靜地躺著庐完,像睡著了一般。 火紅的嫁衣襯著肌膚如雪徘熔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天淆党,我揣著相機與錄音酷师,去河邊找鬼。 笑死染乌,一個胖子當著我的面吹牛山孔,可吹牛的內容都是我干的。 我是一名探鬼主播荷憋,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼台颠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勒庄?” 一聲冷哼從身側響起串前,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎实蔽,沒想到半個月后荡碾,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡局装,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年坛吁,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐尚。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡拨脉,死狀恐怖,靈堂內的尸體忽然破棺而出宣增,到底是詐尸還是另有隱情玫膀,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布统舀,位于F島的核電站匆骗,受9級特大地震影響,放射性物質發(fā)生泄漏誉简。R本人自食惡果不足惜碉就,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闷串。 院中可真熱鬧瓮钥,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锈津,卻和暖如春呀酸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琼梆。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工性誉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茎杂。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓错览,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煌往。 傳聞我的和親對象是個殘疾皇子倾哺,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容

  • PLEASE READ THE FOLLOWING APPLE DEVELOPER PROGRAM LICENSE...
    念念不忘的閱讀 13,493評論 5 6
  • 大學中,周末的生活大多數都閑散在床鋪上刽脖。即便六七點的清晨睜開已睡醒的雙眼羞海,在窗簾將陽光擋在屋外的情況下做上一場回籠...
    轉晴閱讀 332評論 0 0
  • 剛剛忙完躺下扣猫,正準備寫寫關于你的事兒。沒想到熟睡中的你竟迷迷糊糊的爬了起來翘地,連滾帶爬的來到我躺著的地方申尤。抬起頭來,...
    心敘楊麟閱讀 382評論 4 12
  • 我們之間 永恒的距離 黑白是唯一的天地 你知道 我有多么愛你 不由自主的愛慕 不再顧及的禮儀 抱緊了就不想放棄 就...
    李唐的小詩閱讀 116評論 0 2
  • 郎德苗寨位于凱里市東南27公里的苗嶺腹地衙耕,苗嶺主峰雷公山麓的巴拉河上游昧穿,分上下兩自然寨。對外開放的是上郎德...
    非常道yw閱讀 1,109評論 0 2