? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1,愕然回首。它在燈火闌珊處
關于mysql集群中間件。曾經寫在應用程序里面,由開發者實現,在配置文件中面寫多個數據源,寫庫一個數據源,讀庫一個數據源,笨拙不高效,由于程序猿的差異化。效果并非特別理想。
?
后來。組織了開發者寫了一個自己主動識別讀寫的功能模塊接口,讓開發者調用,這樣能滿足特定場景的業務需求。可是適應性比較窄。
?
后來出了cobar,可是在高并發這里出殼了,后來在一次無意中的演講中,見到leader在介紹了mycat,于是眼前一亮。就是它了。不早不晚。在我特別須要的時候,就進入了我的生活。
?
2。人約黃昏后,月上柳梢頭
記得leader說過,看百集非誠勿擾記千句樂嘉戀愛寶典,不如妹子約起……
?
萬事開頭難。興趣攻其艱—>由于喜歡所以自然而然開始學習mycat。途中也認識了非常多mycat的同道門,眾所周知。對于我們這些非科班出生的。并且對理論研究不是那么深入的。實踐永遠是最好的最有效率的學習途徑。
?
于是有了第一次,還蠻簡單快捷方便的,從下載到安裝然后試用,大概不到30分鐘吧,如筆記所記錄:
? mycat - 解開它神奇的面紗--:http://blog.csdn.net/mchdba/article/details/51155340? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
?
之后立即做了第一個練習,mycat路由轉發原理深度解析。對于此的理解是,mycat接到應用端過來的sql。它會去依據sql中 from后面的表名字,去配置schema.xml里面讀取當中的全部datanode資源,然后一個個去路由去嘗試請求,詳情見我的blog整理:
? Mycat路由轉發原理深度解析:http://blog.csdn.net/mchdba/article/details/50616527? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
?
疑惑:假設做過數據庫的緩存或者對mysql的limit有印象的話。應該記得有這種場景,當limit 找到記錄后,就exit不會繼續遍歷以下未遍歷的數據記錄了。
不知道mycat能否夠做到這一點?貌似看debug日志是遍歷了全部的datenode節點了。
?
PS:做這2個我還是得心應手。由于有linux基礎,有mysql基礎,所以算是比較順利,好的開頭是成功的一半。更加堅信自己的信心和選擇了。
?
3,無奈是分離。victor大神
接下來開始接觸mycat比較show time的部分了,讀寫分離和主從切換,對于這2個場景。我接觸的時間蠻久了,可是實現的方式方法多種多樣,曾經讀寫分離用原始的刀耕火種,開發者在ibatis/mybatis里面寫死了寫庫連接和讀庫連接。之后keepalived+lvs,再之后用了f5的vip負載均衡配置。f5性能固然比較好,可是費用費用也不少的,所以對于互聯網已經中小型公司來說。這筆支出可不實惠啊。
?
而mycat通過配置readHost和writeHost來實現讀寫分離。里面有一些配置,比方:
balance為1:讓全部的readHost及備用的writeHost參與select的負載均衡。
?
switchType為2:基于MySQL主從同步的狀態決定是否切換。
?
heartbeat:主從切換的心跳語句必須為show slave status
?
在這里遇到配置的時候,遇到一些問題。在請教了victor大神之后。他給了我他的實現思路和方法,我參考之后,順利攻克了,把自己這部分的學習整理成了筆記,例如以下:
? mycat讀寫分離與主從切換:http://blog.csdn.net/mchdba/article/details/50616534 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? |
?
PS:想要victor大神的聯系方式嗎,在以下留言評論區。留下你的email地址并標注victor,我發你email告訴你的。
?
blog源地址:http://blog.csdn.net/mchdba/article/details/51162243,謝絕轉載。
4,庖丁血牛之mycat的黑匣子
?
對于mycat來說,打開debug這個帕朵拉魔盒,一切一切真相都暴露在大眾面前,在這里你能夠看到select的整個舞蹈軌跡。也能夠看到全部的字符集的變換。千人千面萬般操作盡在mycat.log。所以學會分析mycat.log日志,全部的問題都不再是問題,對于此我深有體會,例如以下的整理:
? Mycat黑匣子:http://blog.csdn.net/mchdba/article/details/51160495? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? |
?
?
5,分紛紛,生活的主旋律
分析了mycat的黑匣子后。對于mycat背后的邏輯以及有了一定的深刻理解了,如今要進階了,做更加難的事情了,這是分布式集群的重大特征。在業務量爆炸式增長的場景中。就須要提前考慮依據業務進行分片。在分片的學習中,也得到了victer大神和山狼的的指點,遺憾的是后來山狼由于工作忙碌。交流的越來越少了,而victor大神一直常常交流中,對于分片的嘗試。整理在以下:
? Mycat高可用分片er分片的2種場景:http://blog.csdn.net/mchdba/article/details/50655304? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Mycat連續分片-自己定義數字分片:http://blog.csdn.net/mchdba/article/details/50656337 Mycat連續分片-按日期分片:http://blog.csdn.net/mchdba/article/details/50656478 Mycat離散分片-枚舉:http://blog.csdn.net/mchdba/article/details/50656478 Mycat離散分片-程序指定的分區分片:http://blog.csdn.net/mchdba/article/details/50656500 ? |
?
在分片的場景中。另一種業務類型,就是一個分片故障了,怎樣遷移到新的分片,這個思路實現例如以下:
? Mycat分片中高速遷移思路:http://blog.csdn.net/mchdba/article/details/50939614? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Mycat分片中平滑遷移實施過程:http://blog.csdn.net/mchdba/article/details/50991649 ? |
?
6,瑕不掩瑜。mycat的斑點
Mycat有諸多長處,可是也有它不足的地方,比方分頁、跨事務、存儲過程、對db2、mongodb的支持等等,這些都須要了解熟悉。以免在使用的時候給別人挖坑,對這些方面,我們須要了解到實現的細節,然后再用案例去驗證,分析問題癥結所在,假設有java代碼coding能力,甚至能夠改動完好這些不足。對此有整理例如以下:
? Mycat分頁慢解惑、跨事務解析、注解調用存儲過程:http://blog.csdn.net/mchdba/article/details/50719120? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
?
?
7,健壯持久,多多益善
在互聯網分布式應用中,最重要的就是高可用了,高可用能保證應用的持續可用性,這樣能7*24,而mycat也有相似的集群架構,這是了解mycat深入mycat必須的歷程:
? Mycat集群實現:http://blog.csdn.net/mchdba/article/details/50867885? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
為了mycat應用部署的健壯持續,我們須要多mycat進行全方位的監控,有了這些監控數據。我們能夠了解到mycat執行的信息,對于優化mycat非常實用,關于這個我有整理例如以下:
? Mycat性能採集:http://blog.csdn.net/mchdba/article/details/50727099? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
了解到這里,我們就知道,在部署分布式集群架構之前,肯定須要進行各種壓力測試,來了解mycat的閥值以及它能達到的性能極限。能支撐多少高并發、tps、qps等等。那么這里就有一個自帶的工具能夠達到我們的效果:
? 監控mycat壓力測試的性能曲線:http://blog.csdn.net/mchdba/article/details/51050008? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? |
?
PS:事實上走到這里。行程都是蠻輕松的,不太勞苦,有點小小得意了,僅僅是常言道人無遠慮必有近憂,接下來就碰到問題了。
?
8。衣帶漸寬終不悔,為伊消得人憔悴
第一道坎,連接不上oracle數據源:
在載入oracle數據源的時候,須要把oracle的jar包放到mycat安裝文件夾下,通常是用這個ojdbc14.jar。放到/usr/mysql/mycat/lib文件夾以下。然后又一次載入下mycat生效。
?
第二道坎,中文亂碼:
在熟悉這個里面。我遇到坎了。是最富盛名的中文亂碼問題。oracle里面字符集是gbk,mysql里面是utf8,而mycat也是utf8。對于這種差異,怎樣操作。我搜索了非常久,沒有找到合適的方案,忙到半夜11點時候,咨詢leader的時候,遇到了leader的一句神回復“設置成utg”,然后我設置在了mycat的配置文件server.xml里面:
[root@oracle_standby ~]# vim /usr/local/mycat/conf/server.xml ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> ??????? <system> ???? ???<property name="charset">utg</property> …… |
結果我繼續調試了,發現還是亂碼。然后認為leader指點的應該沒有錯。可能是別的問題導致的,繼續調試重組mycat各種情況調試,1個半小時過去后。還是亂碼,然后引發了牛人靜哥出來了。她說是字符集設置問題。并且我的設置utg是不正確的。然后我頓然醒悟,最終意識到leader的神回復utg是錯誤的,經驗總結不能100%相信權威啊,由于萬一不小心會被他帶進坑里,結果我不得已回頭又一次整理思路。而那時已經1:00了,窗外夜沉如水,我去沖了個涼水澡。回來繼續研究。
?
泠靜下來后,整理思路。再奮戰了1個小時后,搞定了。思路整理例如以下:
Mycat對于數據庫而言就是client,一般來講client字符編碼與數據庫服務端一致就不會有什么問題,或者是嚴格超集,保證插入到數據庫不因轉碼而丟失。client、系統終端、數據庫三者字符庥得協調,否則不一致的話,會有字符集轉換的問題,有時候。顯示正確的,但不一定在數據庫就保存正確,或者保存到數據庫的數據編碼正確,沒準顯示為亂碼。
這就意味著,在oracle里面是gbk或者latin1啥都沒有關系,僅僅要做好以下3點:
(1)。在遷移到mysql里面。在mycat平臺上從oracle導出時候字符集設置為utf8
(2),在mycat平臺上導入到mysql字符集也要設置為utf8
(3), 然后在mycat平臺上查看數據也要設置字符集為utf8
做好了以上3點,三而合一,這樣就能正常顯示中文了。
?
Mycat平臺上實現oracle遷移到mysql:http://blog.csdn.net/mchdba/article/details/50995059? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? |
?
第二天鬧鐘換我起床,睡眼朦朧,鏡中熊貓眼。^_^。
?
?
9。奇女子—靜哥
看到她的名字“靜哥”,我不由得自主想起了一首流傳甚久的歌曲“我不是黃蓉我不懂武功我僅僅要靜哥哥完美的愛情……”,這首歌曲是不是非常平民化非常雨非常有喜感啊,反正我認為蠻接地氣的哈,歌曲地址是:http://bd.kuwo.cn/yinyue/90334?
from=baidu。由于作為金庸迷,對這個太敏感了,所以對她印象非常深刻,并且她mycat技術非常好口才也好,活脫脫一個現代版小黃蓉啊,并且據leader發的照片來看,確實是標準的江南美女。并且難得的是她剛工作不久還是單身。
?
SO說道在這里,大家都懂了吧。有想認識她學習mycat技術或者準備拓展mycat業務的,在文后評論區留下你的email地址并標注靜哥。我會給你發email的告訴聯系方式的。
?
?
10。瑞士軍刀、親親山莊、中國開源第一門派
到此位置,mycat的重要功能點基本完畢了,然后就是師傅臨進門修行在個人了,哦對了,還有Mycat最后一個重要點,mycat-eye,這個是蠻實用的,not only formyat,當然眼下還是一個半成品。夢想是成為mysql伴侶,僅僅要用了mysql,就離不開mycat-eye,當然夢想是美好。現實是須要我們大家一起去實踐去完好它,雖然如此。mycat-eye還是有它獨特的閃光點:
? Mycat瑞士軍刀:http://blog.csdn.net/mchdba/article/details/51059547? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
?
最后,介紹下,mycat的帶路人。leader-us。看名字。就知道他是mycat的發起人,架構實力非常深厚,口才也非常好,眼下給我感覺是技術領域中營銷實力最強的、映像領域中技術實力最強的。
他能看到mycat的市場并且開始運作成立mycat高端服務公司,是非常有魄力的。
?
所以他有成為相似馬云那樣的企業家的潛質的,他的夢想是成立親親山莊,做高端技術服務和支持,成立咨詢公司,并且做到中國的apache,成為國內開源界的No1,當然了個人實力有限,所以須要大家一起努力。眼下開啟眾籌活動,起步是一人5W。大概估計征集70幾個人。啟動資金有300W到400W左右,他就能夠全職參與并運營親親山莊了。
?
親親山莊的選址是廣州到珠海之間的海島上,風景宜人,適合居住生活。
?
11。尾聲。左兄與任正非、leader-us與馬云
新成立的公司里面。有個左兄,非常傳奇,大一在大學入伍,然后復員專業。來上海學IT。年紀輕輕,睡在地鐵站,苦心專研數據庫、系統、中間件,如今已經成為了業界大牛,上海地區mycat標桿人物,和他接觸過,膽大心細臉皮厚,并且對朋友和身邊人仗義。深深懂得利益均沾的道理并且也言行一致。認為他有任年輕時候的影子。未來成就無限。
?
然后就是leader-us。他有馬云的口才。還有王堅的技術功底,能夠說能說服非常多人,并且這次眾籌選擇的對象也非常準確,選擇的是在北上廣深一線城市稅后1.5W的從業人員和南京武漢重慶福州二線城市稅后1W的從業人群。對市場目標定位準確,所以leader-us成功的概率非常大,這也是我和左兄還有非常多朋友決定增加這個創業團隊的主要原因吧。
?
眼下眾籌已經結束,資金已經到位,已經開始開展mycat高端技術支持服務。大家有須要的,能夠在以下評論區留下email地址,我會第一時間聯系回復你的,謝謝。