Mycat最佳實(shí)踐_第1頁
Mycat最佳實(shí)踐_第2頁
Mycat最佳實(shí)踐_第3頁
Mycat最佳實(shí)踐_第4頁
Mycat最佳實(shí)踐_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MYCAT最佳實(shí)踐支持1000億大數(shù)據(jù)中國(guó)第一開源分布式數(shù)據(jù)庫中間件MYCAT的原理分表分庫Mysql2Mysql1分片原則與限制每個(gè)分片的記錄量為1000萬左右,分片數(shù)量是雙刃劍,不易過多分片字段不支持多個(gè)字段的組合原則上以最頻繁查詢的字段為分片字段,分片字段不能改變值,分片字段的選擇很大程度上影響系統(tǒng)性能非分片字段的查詢語句,會(huì)并發(fā)發(fā)送到每個(gè)分片上去,導(dǎo)致資源消耗更多非范圍分片,擴(kuò)容難度大,一致性Hash也只是做出了一定的改善分片導(dǎo)致某些SQL語句的執(zhí)行結(jié)果不符合預(yù)期,可以視為不支持分片產(chǎn)生了跨分片排序和分組統(tǒng)計(jì)等問題分片產(chǎn)生了表關(guān)聯(lián)問題分片產(chǎn)生了分布式事務(wù)問題MYCAT目前不能支持的SQ

2、LInsert into values( xxxx)Insert into b select * from aSelect * from a where partionCol like “xxxx”Select * from b where pationCol 4 and pationC between Lock table a Select * from a for update - /*!mycat: sql = update a */ 任意的分片表的Join語句Select a from A order by bselect count(*) from A group by bSelec

3、t distinct a.* from a 存儲(chǔ)過程中有輸出參數(shù)的,目前不支持MYCAT注解方式解決特殊分片SQL路由問題對(duì)于一個(gè)特殊的復(fù)雜SQL,Mycat的語法解析器如果解析失敗,無法通過,則可以通過注解方式“偷梁換柱”,從而基本解決這一問題Select * from a for update /*!mycat: sql = update a */ Select * from a for update 跨分片JOIN的幾種策略關(guān)聯(lián)字段采用相同的分片規(guī)則ER關(guān)系分片全局表編程方案: Catlet或自行處理任意兩個(gè)分片表JION目前業(yè)界并沒有很好的通用性解決方案,所以要盡可能避免大量在線的JO

4、IN SQL,而是采用后臺(tái)預(yù)先定期計(jì)算并存儲(chǔ)結(jié)果的方式Catlet是Java編寫的一段程序,類似數(shù)據(jù)庫中的存儲(chǔ)過程,可以實(shí)現(xiàn)任意復(fù)雜SQL的Join、Group、Order等功能MYCAT ER分片DN1DN2MycatCustomer1Customer100Customer1Customer100Custermer1 - Order1Cutermer100 - Order4Custermer1 - Order2Custermer100 - Order 3Order1Order2Order3Order4存在關(guān)聯(lián)關(guān)系的父子表在數(shù)據(jù)插入的過程中,子表會(huì)被Mycat路由到其相關(guān)父表記錄的節(jié)點(diǎn)上,從而

5、父子表的Join查詢可以下推到各個(gè)數(shù)據(jù)庫節(jié)點(diǎn)上完成,這是最高效的跨節(jié)點(diǎn)Join處理技術(shù),也是Mycat首創(chuàng)MYCAT全局表ordershost1ordershost2ordershost3ordershost4insert into orders (xxx)Mycat每個(gè)節(jié)點(diǎn)同時(shí)并發(fā)插入和更新數(shù)據(jù),每個(gè)節(jié)點(diǎn)都可以讀取數(shù)據(jù),提升讀性能的同時(shí)解決跨 節(jié)點(diǎn)Join的效率全局表的建議和限制全局表記錄數(shù)在1000萬以內(nèi)更新頻率低常見如用戶、商戶、商品等建議把變動(dòng)頻率高的字段從全局表剝離全局表目前是采用弱XA事務(wù),存在局部失敗的可能性MYCAT分布式事務(wù)問題XA分布式事務(wù)產(chǎn)生的代價(jià)較大,互聯(lián)網(wǎng)領(lǐng)域多傾向于

6、抵制MySQL 直到5.7的某個(gè)版本,才修復(fù)了一直以來的XA缺陷,即binlog不寫prepare日志,導(dǎo)致主從數(shù)據(jù)可能不一致Mycat目前沿用了Cobar的弱XA事務(wù)模型Mycat 2.0計(jì)劃實(shí)現(xiàn)標(biāo)準(zhǔn)的事務(wù),供應(yīng)用自行決定使用當(dāng)一個(gè)普通事務(wù)內(nèi)的SQL被路由到多個(gè)節(jié)點(diǎn)上去執(zhí)行時(shí),就產(chǎn)生了分布式事務(wù)問題弱模型update sqlDN1DN2DN3commit任意錯(cuò)誤回滾標(biāo)志只能ollback在Update SQL執(zhí)行成功的情況下,隨后的Commit失敗的概率非常小因此此模型還是能滿足大多少應(yīng)用的要求MYCAT讀寫分離和自動(dòng)切換機(jī)制Mycat 支持基于MySQL主從復(fù)制狀態(tài)的高級(jí)讀寫分離控制機(jī)制,

7、比如 Slave_behind_master 100則開啟,而一旦檢測(cè)到主從同步出錯(cuò)或者延時(shí)超過發(fā)展,則自動(dòng)排除readHost,防止程序讀到很久的舊數(shù)據(jù)MYCAT的高可靠業(yè)務(wù)數(shù)據(jù)存儲(chǔ)方案MycatGalera clusterMysql Master/SlaveNoSQL多主同時(shí)寫入,高可靠性,適合系統(tǒng)中的關(guān)鍵表帳務(wù)表、訂單表等用戶表、字典表、常規(guī)數(shù)據(jù)日志類的數(shù)據(jù)主從故障切換,可能有數(shù)據(jù)丟失的問題存儲(chǔ)大量一次性非業(yè)務(wù)數(shù)據(jù)ClientOne SchemaMYCAT生產(chǎn)案例超過300個(gè)案例某電信領(lǐng)域海量交易數(shù)據(jù)實(shí)時(shí)查詢案例分析每天2億交易數(shù)據(jù),保持最近一個(gè)月內(nèi)的交易數(shù)據(jù)主要查詢條件為某天(某幾天)

8、某個(gè)交易手機(jī)號(hào)的交易記錄查詢時(shí)間要求3秒內(nèi)返回結(jié)果MYCAT方案采用交易時(shí)間字段進(jìn)行分片,分片規(guī)則為日期范圍分片,每小時(shí)一個(gè)分片,總共24*31=744個(gè)分片,保存了31天的記錄,744個(gè)分片均勻分布在4臺(tái)X86服務(wù)器上,月末手工清理(轉(zhuǎn)移歷史數(shù)據(jù)),手機(jī)號(hào)建立索引數(shù)據(jù)庫用InnoDBMYCAT方案系統(tǒng)實(shí)際的查詢響應(yīng)時(shí)間平均小于1秒研究了MySQL內(nèi)存表與InnoDB兩種引擎,結(jié)果表明,大多數(shù)情況下InnoDB是比較理想的選擇,內(nèi)存表對(duì)內(nèi)存的要求很高,而且不太合適查詢同時(shí)有大量的插入/更新操作的場(chǎng)景此方案具有很強(qiáng)的代表性,意味著當(dāng)前很多SQL緩存數(shù)據(jù)庫記錄的方案都可以用MyCAT簡(jiǎn)單可靠替換。

9、大內(nèi)存調(diào)優(yōu)關(guān)鍵wrapper.java.additional.3=-XX:MaxPermSize=64Mwrapper.java.additional.4=-XX:+AggressiveOptswrapper.java.additional.5=-XX:MaxDirectMemorySize=2Gwrapper.java.additional.6=-Dcom.sun.management.jmxremotewrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984wrapper.java.additional.8=-Dc

10、om.sun.management.jmxremote.authenticate=falsewrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=falsewrapper.java.additional.10=-Xmx4Gwrapper.java.additional.11=-Xms1G當(dāng)有超過8G可用內(nèi)存時(shí)候,建議大部分分配給XX:MaxDirectMemorySize,比如比如16G,而,而Xmx與與Xms則在則在4G左右左右MaxDirectMemorySize的大部分,比如的大部分,比如90%,分配給,分配給Mycat

11、的網(wǎng)絡(luò)堆內(nèi)存,為的網(wǎng)絡(luò)堆內(nèi)存,為system.xml中的以下兩個(gè)參數(shù):中的以下兩個(gè)參數(shù):processorBufferPool,單位字節(jié),建議設(shè)置為 MaxDirectMemorySize的的90%左右,比如左右,比rocessorBufferChunk,BufferPool里單元大小,默認(rèn)里單元大小,默認(rèn)4096字節(jié)字節(jié)于于是總共有是總共有processorBufferPool/ processorBufferChunk 個(gè)單元格個(gè)單元格 :即:/4096= 3774873 個(gè)單元格個(gè)單元格單元單元格越多,通常性能越好,可以在管理端口格越多,通常性能越好,可以在管

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論