信用網(wǎng)站建設(shè)內(nèi)容專業(yè)seo網(wǎng)站
1、MyCat概述?
? ? 從定義和分類來(lái)看,它是一個(gè)開源的分布式數(shù)據(jù)庫(kù)系統(tǒng),是一個(gè)實(shí)現(xiàn)了MySQL協(xié)議的Server,前端用戶可以把它看做是一個(gè)數(shù)據(jù)庫(kù)代理,用MySQL客戶端工具和命令行訪問,而其后端可以用MySQL原生(Native)協(xié)議與多個(gè)MySQL服務(wù)器通信,也可以用JDBC協(xié)議與大多數(shù)主流數(shù)據(jù)庫(kù)服務(wù)器通信,其核心功能是讀寫分離、數(shù)據(jù)分片(垂直拆分分庫(kù)、水平拆分分表、垂直拆分+水平拆分)和多數(shù)據(jù)源整合。?
? ? Mycat發(fā)展到目前版本,已經(jīng)不在是一個(gè)單純的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流數(shù)據(jù)庫(kù),也支持MongoDB、NOSQL方式等存儲(chǔ),未來(lái)還會(huì)支持更多類型的存儲(chǔ)。而在最終用戶看來(lái),無(wú)論是那種存儲(chǔ)方式,在Mycat里,都是一個(gè)傳統(tǒng)的數(shù)據(jù)庫(kù)表,支持標(biāo)準(zhǔn)的SQL語(yǔ)句進(jìn)行數(shù)據(jù)的操作,這樣一來(lái),對(duì)前端業(yè)務(wù)系統(tǒng)來(lái)說(shuō),可以大幅度降低開發(fā)難度,提升開發(fā)速度,在測(cè)試階段,可以將一表定義為任何一種Mycat支持的存儲(chǔ)方式,比如MySQL的MyASM表、內(nèi)存表、或者M(jìn)ongoDB、LeveIDB以及號(hào)稱是世界上最快的內(nèi)存數(shù)據(jù)庫(kù)MemSQL上。
2、用途&環(huán)境介紹?
- 單純的讀寫分離,此時(shí)配置最為簡(jiǎn)單,支持讀寫分離,主從切換。
- 分表分庫(kù),對(duì)于超過1000萬(wàn)的表進(jìn)行分片,最大支持1000億的單表分片。
- 多租戶應(yīng)用,每個(gè)應(yīng)用一個(gè)庫(kù),但應(yīng)用程序只連接Mycat,從而不改造程序本身,實(shí)現(xiàn)多租戶化。
- 報(bào)表系統(tǒng),借助于Mycat的分表能力,處理大規(guī)模報(bào)表的統(tǒng)計(jì)。
- 代替Hbase,分析大數(shù)據(jù)。
- 詢的記錄需要在3秒內(nèi)查詢出來(lái)結(jié)果, 除了基于主鍵的查詢,還可能存在范圍查詢或其他屬性查詢,此時(shí)Mycat可能是最簡(jiǎn)單有效的選擇。
- 該實(shí)現(xiàn)需要先完成MySQL的主從復(fù)制的相關(guān)復(fù)制結(jié)構(gòu)操作。才能進(jìn)行下一步操作。主從復(fù)制的相關(guān)內(nèi)容,參考《【MySQL專題】02、性能優(yōu)化之主從復(fù)制》。
PS:本地服務(wù)器采用的主從復(fù)制結(jié)構(gòu)模式為一主一從的復(fù)制結(jié)構(gòu)- Master:192.168.202.128
- Slave:192.168.202.129
- Mycat:192.168.202.130
- Master:192.168.202.128
3、安裝MyCat?
- JDK安裝&配置文檔:
參考:文檔Linux -Centos ?常見配置(靜態(tài)IP、YUM...?
鏈接:http://note.youdao.com/noteshare?id=f2d067e276add283a4db09e5536ff5c9&sub=WEB1e60f94040bd9e345cb536fbd846c9c9? - Mycat安裝
- 下載Mycat
- 解壓&環(huán)境變量
? ? 解壓mycat,根據(jù)自己部署規(guī)則,本人選擇將mycat部署在/usr/local/目錄下 ,所以我解壓mycat后,移動(dòng)mycat 到/usr/local/目錄下,由于為了方便我們?nèi)粘9芾韒ycat,對(duì)其進(jìn)行環(huán)境變量配置,分別需要執(zhí)行如下命令操作。(這里就不展示命令的執(zhí)行過程呢) - Mycat配置
? ? 在配置mycat之前,我們需要在mysql主復(fù)制節(jié)點(diǎn)mysql-master節(jié)點(diǎn)上,創(chuàng)建兩個(gè)mysql用戶,用于mysql數(shù)據(jù)的寫入和讀。(y由于mysql數(shù)據(jù)庫(kù)剛安裝,默認(rèn)mysql的root賬號(hào)密碼為空,所以這里登陸就不需要密碼登陸,若需要管理root賬號(hào),可以詳細(xì)去配置root賬號(hào)的安全權(quán)限問題,這里就不一一介紹呢),登陸成功后,執(zhí)行相應(yīng)的賬號(hào)的創(chuàng)建、授權(quán)等(注意:生產(chǎn)環(huán)境要盡量減少權(quán)限,注意安全問題)? ?
? ??接下來(lái),我們進(jìn)入主題,mycat的文件配置。首先介紹一下mycat的目錄結(jié)構(gòu)(如果缺失tree命令,可以通過yum install tree -y 進(jìn)行安裝,這里不詳細(xì)介紹,本文核心是介紹mycat部署):
conf目錄下存放的配置文件
? ?server.xml是Mycat服務(wù)器參數(shù)調(diào)整和用戶授權(quán)的配置文件?
? ?schema.xml是邏輯庫(kù)定義和表以及分片定義的配置文件,rule.xml是分片規(guī)則的配置文件,?分片規(guī)則的具體一些參數(shù)信息單獨(dú)存放為文件,也在這個(gè)目錄下,配置文件修改,需要重啟mycat或者通過9066端口reload。?
lib目錄下主要存放mycat依賴的一些jar文件。
logs:日志存放在logs/mycat.log中,每天一個(gè)文件
? 日志配置是在conf/log4.xml中,根據(jù)自己的需要可以調(diào)整輸出級(jí)別.?
? 注意:Linux下部署安裝MySQL,默認(rèn)不忽略表名大小寫,需要手動(dòng)到/etc/my.cnf 下配置 lower_case_table_names=1 使Linux環(huán)境下MySQL忽略表名大小寫,否則使用MyCAT的時(shí)候會(huì)提示找不到表的錯(cuò)誤!?
配置核心server.xml 和 schema.xml文件,配置詳情分別如下(本文檔介紹的是基礎(chǔ)版的mycat運(yùn)用,若需要更深程度的使用,可以深度研究 mycat相關(guān)知識(shí)或者持續(xù)關(guān)注文檔更新):?
關(guān)于schema.xml文件部分參數(shù)說(shuō)明,不同參數(shù)配置,代表mycat采取的機(jī)制策略不一樣:?
- 下載Mycat
4、啟動(dòng)MyCat?
由于我們配置了mycat的環(huán)境變量,所以可以直接使用mycat命令操作:
直接執(zhí)行mycat命令可以看出,mycat提供了 指定相關(guān)命令操作,服務(wù)器的啟動(dòng)、停止,重啟等具體命令操作,這里我們需要啟動(dòng)mycat,直接執(zhí)行mycat ?start 即可。?
5、驗(yàn)證?
通過剛創(chuàng)建兩個(gè)賬號(hào),在第三方工具連接mycat,若能成功,表示配置完成;?
6、思考?
-
Mycat 如何進(jìn)行高可用服務(wù)架構(gòu)搭建?
-
Mycat中間件宕機(jī)如何維護(hù)?
-
Mycat 中間件的另一特性--數(shù)據(jù)拆分如何實(shí)現(xiàn)?
-
Mycat 中間件如何多語(yǔ)言?
-
Mycat 中間件的運(yùn)行原理和實(shí)現(xiàn)原理?
7、參考資料
- http://mycat.io/
- https://www.csdn.net/article/2015-07-16/2825228
- 從零開始
- MyCAT簡(jiǎn)易入門 - iVictor - 博客園
- 使用Mycat 做簡(jiǎn)單的讀寫分離(一) - 大漠小狼的個(gè)人空間 - 51Testing軟件測(cè)試網(wǎng) 51Testing軟件測(cè)試網(wǎng)-軟件測(cè)試人的精神家園