mycat初使用體驗與分庫分表

2021-07-22 01:55:54 字數 1548 閱讀 6253

引言:mycat截至到2023年4月,保守估計已經有超過60個專案在使用,主要應用在電信領域、網際網路專案,大部分是交易和管理系統,少量是資訊系統。比較大的系統中,資料規模單表單月30億。

在以前的專案中有幸也使用了一些分庫分表的外掛程式,今天就無事想把這兩種框架搭建起來比較一下效能和適用場景!

mycat號稱分庫分表,但看實際配置檔案

通過配置可以看到對於同一張表確實進行了分庫,但是分表卻沒有!

雖然1.6對外宣稱支援了分表,看官方文件說明:

可是既然只支援乙個datanode那就不能進行分庫!

也就是說如果對資料庫進行了分庫就不可以進行分表,給開發者乙個二選一的抉擇!

筆者負責開發的模組在業務上,是如此進行拆分的:

1:按照某個字段選出要進行插入或者更改的資料所在的資料庫。

2:在按照這個字段選出要進行插入或者更改的資料所在的資料庫表。

經過以上兩個步驟就可以確定當前資料所在的庫和表。

但是mycat只可以進行二選一,進行分庫就不可以進行分表,顯然不符合筆者最初對應用程式的架構!

附上筆者資料庫架構圖:

總結:mycat雖然實現了分庫但是並沒有實現分表,並不符合筆者的要求。

解決這個問題沒有直接的辦法,那就找乙個間接的方法解決這個問題吧!

筆者解決方法是在每個單獨的資料庫中建立同名的檢視,該檢視對每個庫中的分表進行歸併,形成乙個整體的虛表,然後交由mycat負責整體展示!

這樣筆者的目的就可以實現了,就是由應用程式自己做資料庫的路由將資料庫寫入各個資料庫中,然後通過mycat交給dba或者需要對資料進行展示或者集中處理和展示!

這樣既可以避免分庫分表帶來的資料分散彙總的痛苦,也可以通過分庫分表來實現資料庫的負載均衡,提高系統的吞吐!

畢竟對資料進行匯出進行查詢之時,已經沒有時間上的限制,雖然進行大資料量的查詢在業務上是不推薦的,但是如果可以控制好查詢條件,這樣對dba而言也可以使用一些高階的sql語句,可以減輕dba管理資料庫的難度!

附上最後的結果圖:

mycat確實對資料進行了歸併,看起來確實是一張表,但實際上這些資料位於三個不同的資料庫,每個庫10張表,共30張表!

因為工作的保密規定,不能透露公司使用的分庫分表外掛程式,請大家諒解!

感受;mycat在分庫分表的支援上並不徹底,選擇分庫就不能進行分表,選擇分表就不能分庫,希望後續可以改進!

Mycat分庫分表

schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...

mycat分庫分表

一 修改schema.xml select user 二 修改server.xml 0 0 10 011m 1k0 384m true 123456 testdb user testdb true 三 啟動關閉1 進入bin目錄,2 啟動輸入.mycat start。關閉命令 mycat stop ...

mycat分庫分表

mycat是資料庫分庫分表的中介軟體,mycat使用最多的兩個功能是 讀寫分離和分庫分表功能,支援全域性表和e r關係 這兩個比較實用 mycat相當於是乙個 可以將多個實際資料庫組合成乙個完整的虛擬資料庫 我們可以直接訪問mycat的埠,其使用的是mysql原生的協議連線資料庫進行通訊 mycat...