MyCat 資料庫集群中介軟體

2021-08-28 08:46:58 字數 2472 閱讀 8568

中文網:

權威指南:document/mycat-definitive-guide.pdf

主要功能:分庫分表(橫切,縱切),主從複製讀寫分離,弱xa事務,資料庫集群監控

1 安裝配置

在win環境下測試,在\mycat\conf下存放著配置檔案,雙擊\mycat\bin\startup_nowrap.bat啟動mycat,需要安裝jdk。

\mycat\conf\server.xml 配置伺服器/使用者登入資訊

\mycat\conf\schema.xml 配置虛擬庫/表/真實庫節點資訊

\mycat\conf\rule.xml 配置資料分配規則演算法

2 啟動方式

1 \mycat\bin\startup_nowrap.bat雙擊執行,啟動mycat

2 \mycat\bin\目錄下 shift+右鍵選擇powershell,輸入.\startup_nowrap.bat 啟動。(推薦,此方式可以看到啟動時檢測異常)

2 鏈結mycat,可通過任意sql ide根據上篇配置的登入資訊,鏈結mycat資料庫集群 

mycat中介軟體的優點就是資料庫集群和應用解耦。無論是ide還是開發的應用程式,其鏈結與操作方式與鏈結操作乙個資料庫相同,所有對集群的控制都由mycat完成。

3 mycat支援多資料庫的垮庫兩表join,多餘兩個表時會出錯。支援不垮庫任意表join

3.1 sharejoin

支援垮庫兩表join

select前加入/*!mycat:catlet=demo.catlets.sharejoin */ 

但要保證資料insert時的分配規則和資料庫分片資訊,與當前配置一致。這樣在select join時,mycat才能正確的逆推找出需  要資料所對應的真實資料庫分片。

一句select中不能多於兩個表垮庫join

在mycat配置時應盡量避免同組相關資料垮庫(見3.3)

3.2 全域性表global --- 每個庫分片中都有此表完整資料,避免垮庫join

若某乙個表是乙個標準表,則將其設定為global。這樣在查詢join時避免對此表的垮庫關聯

3.3 er-join

通過父子表的概念,將同組相關資料分配到同一分片上,避免垮庫join。

乙個父表可以有多個子表,各個子表可以有各自的子表。

經測試:父子表模式解決同組資料的分片一致性問題,提高了查詢效率。並且可以實現符合父子表關聯關係的多表join查詢

例1:訂單彙總,訂單明細,就可以通過父子表配置,將同一訂單的資料分配到相同資料庫分片上,避免垮庫關聯     

例2:符合父子表關聯關係的多表join查詢

select a.id,a.name,b.id,b.name,c.id,c.name,d.id,d.name from mycat_test1 a

join mycat_test1_copy b on a.xgid=b.id

join mycat_test1_copy1 d on a.xgid=d.id

join mycat_test1_copy_copy c on c.id=b.xgid

order by a.id

注意:

a 不要在查詢前加/*!mycat:catlet=demo.catlets.sharejoin */,因為加上這個指令,執行的是sharejoin而不是執行erjoin

b 當不同分片的父表依賴於子表的同一行時,子表insert只會進入其中乙個分片,會造成erjoin時其他父表關聯不到其對應子表,返回的結果集少於應得結果集。這個時候就要轉換成sharejoin 查詢

例:父表id=1,id=2兩條都是xgid=3,但是父表兩條記錄通過mod-long演算法分配到不同資料庫中,但是子表id=3的資料行,只會insert進入其中乙個分片

c 一定要保證父表內容在子表之前存在

4 查詢/插入 要寫列名

5 主從複製讀寫分離

分頁

mycat分頁的大坑一定要注意:

在對應的分片上去查詢分頁資料的時候是從第一條記錄開始掃瞄,然後再取出對應的分頁資料,如

select * from customer order by id limit 1000100, 100;
這個sql語句被mycat轉化後

1 -> dn1

2 -> dn2

所以要在mycat的server.xm裡面開啟使用非堆記憶體。否則記憶體會爆掉

1
日誌

日誌開啟了debug級別。debug級別的時候tps下降明顯

資料庫集群布置 3 mycat中介軟體簡介

1.乙個徹底開源的,面向企業應用開發的大資料庫集群 2.支援事務 acid 可以替代mysql的加強版資料庫 3.乙個可以視為mysql集群的企業級資料庫,用來替代昂貴的oracle集群 4.乙個融合記憶體快取技術 nosql技術 hdfs大資料的新型sql server 5.結合傳統資料庫和新型分...

資料庫中介軟體 MyCat配置示例

資料庫中介軟體 mycat mycat連線協議和mysql一樣 mycat支援mysql oracle sqlserver等 安裝完mysql後啟動服務 service mysql start 登入 mysql u root 設定遠端登入 grant all privileges on to roo...

MyCat 取代Cobar資料庫中介軟體

什麼是mycat?簡單的說,mycat就是 乙個徹底開源的,面向企業應用開發的 大資料庫集群 支援事務 acid 可以替代mysql的加強版資料庫 乙個可以視為 mysql 集群的企業級資料庫,用來替代昂貴的oracle集群 乙個融合記憶體快取技術 nosql技術 hdfs大資料的新型sql ser...