一步一步在Windows中使用MyCat負載均衡 上篇

傳統(tǒng)關系型數據庫的分布式開發(fā)通常需要自己做飒硅,不僅耗時耗力而且效果不是很理想徒蟆,當想快速搭建時,最初想到的是看有沒有第三方沟启,網上牛人還是很多的忆家,做得比較好的其中之一Mycat,它是開源的分布式數據庫系統(tǒng)德迹,解決數據庫的負載均衡芽卿,主備復制,讀寫分離胳搞,簡單來說就是你只管直接與mycat通訊卸例,至于分離什么的交給它里面自己做称杨,其它啥都不用操心。

至于什么是MyCat有什么優(yōu)勢筷转,可以看看官網介紹Mycat 數據庫分庫分表中間件姑原。

上圖是MyCat架構圖。

MyCat可以與HAProxy使用實現高可用數據庫集群呜舒,更深入的內容自己去查锭汛,本章只詳講從0開始使用MyCat 基礎篇,至少能先跑起來阴绢。

一店乐、下載

本次運行環(huán)境為windows,Linux下更好吧呻袭,然后數據庫用mysql,需要java環(huán)境腺兴,下載jdk8

jdk安裝配置

1. 首先去oracle官網下載并安裝jdk8,添加環(huán)境變量左电,JAVA_HOME設置為D:\Java\jdk1.8

2. CLASSPATH設置為.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

3. path系統(tǒng)變量追加%JAVA_HOME%\bin;

安裝Mysql镶殷,需要注意的是數據庫惰许,表刘莹,字段的編碼都采用utf8吧猪钮,否則插入的中文顯示為亂碼堤魁,具體解決方法網上查一查泵督,去試一試司草。

下載MyCat授段,http://dl.mycat.io/ ? 選擇最新的版本下載没陡。(下圖可以看到還有其它前面需要的資源都可以從這里下載)

二涩哟、配置

下載解壓后就要先配置MyCat了,(這里不是exe文件盼玄,沒有安裝贴彼,配置好后直接運行startup_nowrap.bat)

打開mycat\conf里面的startup_nowrap.bat?為了降低資源占用,mycat的jvm設置在startup_nowrap.bat?可以清楚看到如下配置:

“%JAVA_CMD%” -server -Xms1G -Xmx2G -XX:MaxPermSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=1G -DMYCAT_HOME=%MYCAT_HOME% -cp “..\conf;..\lib*” io.mycat.MycatStartup

這里將-Xms1G改成-Xms512M埃儿,-Xmx2G改成-Xmx1024M器仗,保存后重新啟動即可。

添加Windows環(huán)境變量童番,MYCAT_HOME設置為安裝目錄D:\MycatServer1.5

修改wrapper.conf文件里的改成wrapper.java.command=D:\jdk1.8\bin\java.exe

三精钮、連接MySQL

Mycat綁定MySQL 啟動的配置

conf 配置文件存放配置文件:

--server.xml:是Mycat服務器參數調整和用戶授權的配置文件。--schema.xml:是邏輯庫定義和表以及分片定義的配置文件剃斧。--rule.xml:? 是分片規(guī)則的配置文件轨香,分片規(guī)則的具體一些參數信息單獨存放為文件,也在這個目錄下悯衬,配置文件修改需要重啟MyCAT弹沽。--log4j.xml: 日志存放在logs/log中檀夹,每天一個文件,日志的配置是在conf/log4j.xml中策橘,根據自己的需要可以調整輸出級別為debug? ? ? ? ? ? ? ? ? ? ? ? ? debug級別下炸渡,會輸出更多的信息,方便排查問題丽已。--autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties蚌堵, sequence_db_conf.properties 分片相關的id分片規(guī)則配置文件--lib? ? MyCAT自身的jar包或依賴的jar包的存放目錄。--logs? ? ? ? MyCAT日志的存放目錄沛婴。日志存放在logs/log中吼畏,每天一個文件

具體什么意思后面慢慢看。

先解決主配置嘁灯,server.xml配置文件配置訪問用戶及權限,?修改高亮處信息泻蚊,其中mycat、user為訪問mycat的用戶丑婿,TESTDB為mycat虛擬的數據庫性雄,供上層應用訪問。

123456TESTDB-->

-->123456TESTDBtrue

mycat的數據庫配置是在schema.xml中配置,這部分不太好理解羹奉,精簡了一下秒旋,主要分schema、dataNode诀拭、dataHost三個主要配置迁筛。

節(jié)點定義了mycat的虛擬數據庫為TESTDB,下面借用園友的說明:

dataNode的意義很簡單,這個邏輯表的數據存儲在后端的哪幾個數據庫里面rule代表的是這個邏輯表students的具體切分策略,目前MyCAT只支持按照某一個特殊列,遵循一些特殊的規(guī)則來切分,如取模,枚舉等,具體的留給之后細說-->

這意味著耕挨,childtable的joinkey會按照父表的parentKey的策略一起切分细卧,當父表與子表進行連接酒甸,

且連接條件是childtable.joinKey=parenttable.parentKey時,不會進行跨庫的連接.-->

這里的測試過程比較麻煩赋铝,所以直接貼結論:

1.balance=0時,讀操作都在localhost上(localhost失敗時,后端直接失敗)

2.balance=1時,讀操作會隨機分散在localhost1和兩個readhost上面(localhost失敗時,寫操作會在localhost1,如果localhost1再失敗,則無法進行寫操作)

3.balance=2時,寫操作會在localhost上革骨,讀操作會隨機分散在localhost1,localhost1和兩個readhost上面(同上)

4.writeType=0時,寫操作會在localhost上,如果localhost失敗,會自動切換到localhost1,localhost恢復以后并不會切換回localhost進行寫操作

5.writeType=1時,寫操作會隨機分布在localhost和localhost1上,單點失敗并不會影響集群的寫操作,但是后端的從庫會無法從掛掉的主庫獲取更新,會在讀數據的時候出現數據不一致

舉例:localhost失敗了,寫操作會在localhost1上面進行,localhost1的主從正常運行,但是localhost的從庫無法從localhost獲取更新,localhost的從庫于其他庫出現數據不一致-->select user()-->

以上配置注意高亮部分良哲,配置的是每個dn對應哪個實體服務器里面哪個實體庫(此處只有本機筑凫,所以都綁定到本機localhost并村,再添加3個不同的數據庫TESTDB1\TESTDB2\TESTDB3哩牍,手動都添加要測試的表膝昆,若有多余的服務器可以將ip替換掉測試)荚孵,詳細的內容參考文中的注釋纬朝。

經過實驗 goods表:在mycat的TESTDB的虛擬表goods中添加一行記錄會在?TESTDB1和TESTDB2中的表goods同步添加一行記錄。

hotnews表:在mycat的TESTDB的虛擬表hotnews中添加的一行記錄會隨機插入 TESTDB1滔驾、TESTDB2、TESTDB3的其中一個庫中的hotnews表俄讹。

其它表的測試你們自己試試。

這就是分片绕德,靠的是分片規(guī)則患膛,下面就來看rule。

(每個數據庫中相同的表要手工提前生成表結構耻蛇,否則會提示找不到此表踪蹬,操作mycat時它并不能自動同步實體數據庫生成,可能有方法臣咖,現在還沒深入了解)

rule.xml配置文件跃捣,可以先不管。


- 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.-->idfunc1user_idfunc1sharding_idhash-intidrang-longidmod-longidmurmurcreate_datepartbymonthcalldatelatestMonthidrang-modidjump-consistent-hash02160weightMapFile 節(jié)點的權重夺蛇,沒有指定權重的節(jié)點默認是1。以properties文件的格式填寫刁赦,以從0開始到count-1的整數值也就是節(jié)點索引為key甚脉,以節(jié)點權重值為值丸升。所有權重值必須是正整數牺氨,否則以1代替-->/etc/mycat/bucketMapPath-->

用于測試時觀察各物理節(jié)點與虛擬節(jié)點的分布情況狡耻,如果指定了這個屬性墩剖,會把虛擬節(jié)點的murmur hash值與物理節(jié)點的映射按行輸出到這個文件,沒有默認值夷狰,如果不指定,就不會輸出任何東西-->partition-hash-int.txtautopartition-long.txt3812824yyyy-MM-dd2015-01-01partition-range-mod.txt3

四蒲障、運行

用管理員權限運行startup_nowrap.bat啟動MyCat背捌。

若出現上面的問題,檢查java的環(huán)境是否正確和mycat的環(huán)境配置毅否。

啟動成功后會出現:

#如果啟動失敗捆探,請修改D:\mycat\bin\startup_nowrap.bat文件中的以下參數。默認占用內存為2G

D:\dev-bin\mycat\bin>"C:\Program Files (x86)\Java\jdk1.7.0_13/bin/java" -server-Xms512m -Xmx512m -XX:MaxPermSize=64M-XX:+AggressiveOpts -XX:MaxDirectMemorySize=768m-DMYCAT_HOME=D:\

p "..\conf;..\lib\*" io.mycat.MycatStartup

然后dos中會不停的出現心跳檢測,有錯誤信息可去mycat\logs中查看日志恰起。

注意:如日志中出現192.168.xxx not connected 等信息翘单,請允許對應的mysql遠程訪問柬唯,且先提前獨自檢查mysql都能正確訪問。

使用navicat連接mycat剧腻,操作方式和連接物理mysql庫一致拘央,用戶mycat,密碼123456儒旬,端口8066

連接成功后栏账,將看到TESTDB數據庫和hotnews等數據表

在hotnews表中添加一些數據,保存

執(zhí)行select * from hotnews 查看操作栈源,然后去TESTDB1挡爵、TESTDB2了讨、TESTDB3中查詢hotnews表

MyCat中TESTDB是中間件邏輯數據庫,MySQL中的testdb制轰、testdb2垃杖、testdb3是真實的數據庫。

在mycat中添加數據時若提示testdb2.hotnews不存在丈屹,則要手動在testdb2中添加相同表結構调俘。

添加完后,可以看到hotnews記錄在三個testdb旺垒、testdb2彩库、testdb3中是均衡隨機插入的。

而goods在testdb先蒋、testdb2中是一樣的骇钦。

至此可以配置出MyCat了,敬請期待下篇 net下如何使用竞漾。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末眯搭,一起剝皮案震驚了整個濱河市窥翩,隨后出現的幾起案子,更是在濱河造成了極大的恐慌鳞仙,老刑警劉巖寇蚊,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異棍好,居然都是意外死亡仗岸,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門借笙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扒怖,“玉大人,你說我怎么就攤上這事提澎∫” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵积糯,是天一觀的道長。 經常有香客問我看成,道長跨嘉,這世上最難降的妖魔是什么祠乃? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮琴拧,結果婚禮上蚓胸,老公的妹妹穿的比我還像新娘除师。我一直安慰自己,他們只是感情好锹安,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布八毯。 她就那樣靜靜地躺著,像睡著了一般讶踪。 火紅的嫁衣襯著肌膚如雪泊交。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天廓俭,我揣著相機與錄音云石,去河邊找鬼。 笑死研乒,一個胖子當著我的面吹牛汹忠,可吹牛的內容都是我干的。 我是一名探鬼主播雹熬,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宽菜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竿报?” 一聲冷哼從身側響起铅乡,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烈菌,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體芽世,經...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年咬腕,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葬荷。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纽帖,死狀恐怖宠漩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情懊直,我是刑警寧澤扒吁,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站室囊,受9級特大地震影響雕崩,放射性物質發(fā)生泄漏魁索。R本人自食惡果不足惜盼铁,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望当辐。 院中可真熱鬧,春花似錦找筝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灾锯。三九已至,卻和暖如春兼雄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背囱井。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工千扶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澎羞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓枫攀,卻偏偏與公主長得像括饶,于是被迫代替她去往敵國和親来涨。 傳聞我的和親對象是個殘疾皇子蹦掐,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內容