Mycat是什么
Mycat是一款基于阿里開源產(chǎn)品Cobar而研發(fā)的開源數(shù)據(jù)庫分庫分表中間件(基于Java語言開發(fā))姑隅。官網(wǎng)所言:Mycat國內(nèi)最活躍的织狐、性能最好的開源數(shù)據(jù)庫中間件谢翎!
- 一個徹底開源的唆铐,面向企業(yè)應(yīng)用開發(fā)的大數(shù)據(jù)庫集群
- 支持事務(wù)淮菠、ACID遍愿、可以替代MySQL的加強版數(shù)據(jù)庫
- 一個可以視為MySQL集群的企業(yè)級數(shù)據(jù)庫存淫,用來替代昂貴的Oracle集群
- 一個融合內(nèi)存緩存技術(shù)、NoSQL技術(shù)沼填、HDFS大數(shù)據(jù)的新型SQL Server
- 結(jié)合傳統(tǒng)數(shù)據(jù)庫和新型分布式數(shù)據(jù)倉庫的新一代企業(yè)級數(shù)據(jù)庫產(chǎn)品
- 一個新穎的數(shù)據(jù)庫中間件產(chǎn)品
Mycat關(guān)鍵特性
- 支持SQL92標準
- 支持MySQL桅咆、Oracle、DB2坞笙、SQL Server岩饼、PostgreSQL等DB的常見SQL語法
- 遵守Mysql原生協(xié)議,跨語言薛夜,跨平臺籍茧,跨數(shù)據(jù)庫的通用中間件代理
- 基于心跳的自動故障切換,支持讀寫分離梯澜,支持MySQL主從寞冯,以及galera cluster集群
- 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
- 基于Nio實現(xiàn)晚伙,有效管理線程吮龄,解決高并發(fā)問題
- 支持數(shù)據(jù)的多片自動路由與聚合,支持sum,count,max等常用的聚合函數(shù),支持跨庫分頁
- 支持單庫內(nèi)部任意join咆疗,支持跨庫2表join漓帚,甚至基于caltlet的多表join
- 支持通過全局表,ER關(guān)系的分片策略民傻,實現(xiàn)了高效的多表join查詢
- 支持多租戶方案
- 支持分布式事務(wù)(弱xa)
- 支持XA分布式事務(wù)(1.6.5)
- 支持全局序列號胰默,解決分布式下的主鍵生成問題
- 分片規(guī)則豐富场斑,插件化開發(fā),易于擴展
- 強大的web牵署,命令行監(jiān)控
- 支持前端作為MySQL通用代理漏隐,后端JDBC方式支持MySQL、PostgreSQL奴迅、Oracle青责、DB2、SQLServer取具、MongoDB脖隶、巨杉
- 支持密碼加密
- 支持服務(wù)降級
- 支持IP白名單
- 支持SQL黑名單、sql注入攻擊攔截
- 支持prepare預(yù)編譯指令(1.6)
- 支持非堆內(nèi)存(Direct Memory)聚合計算(1.6)
- 支持PostgreSQL的native協(xié)議(1.6)
- 支持mysql和oracle存儲過程暇检,out參數(shù)产阱、多結(jié)果集返回(1.6)
- 支持zookeeper協(xié)調(diào)主從切換、zk序列块仆、配置zk化(1.6)
- 支持庫內(nèi)分表(1.6)
- 集群基于ZooKeeper管理构蹬,在線升級,擴容悔据,智能優(yōu)化庄敛,大數(shù)據(jù)處理(2.0開發(fā)版)
安裝與使用
下載(目前最新發(fā)行版是1.6.5):http://dl.mycat.io/
安裝:解壓即可
配置:Mycat是基于Java開發(fā)的,確保安裝好了Java環(huán)境科汗,可命令行輸入:java -version 進行測試藻烤。Linux下還需配置Mycat的解壓目錄:vim /etc/profile,配置完成后使用:source /etc/profile:
export JAVA_HOME=xxx
export MYCAT_HOME=xxx
-
運行(Linux):
- ./mycat start 啟動
- ./mycat stop 停止
- ./mycat console 前臺運行
- ./mycat install 添加到系統(tǒng)自動啟動(暫未實現(xiàn))
- ./mycat remove 取消隨系統(tǒng)自動啟動(暫未實現(xiàn))
- ./mycat restart 重啟服務(wù)
- ./mycat pause 暫停
- ./mycat status 查看啟動狀態(tài)
運行(Windows):雙擊bin/tartup_nowrap.bat头滔,如果出現(xiàn)閃退怖亭,可在cmd命令行運行,并查看出錯原因
內(nèi)存配置:啟動前坤检,一般需要修改JVM配置參數(shù)依许,打開conf/wrapper.conf文件,可根據(jù)本機配置情況修改為512M或其它值
# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G
- 連接測試:
- 測試mycat與測試mysql完全一致缀蹄,mysql怎么連接峭跳,mycat就怎么連接
- 命令行:mysql -uroot -proot -P8066 -h127.0.0.1(其中,user和password可在conf/server.xml配置查找缺前,8066是默認的服務(wù)端口蛀醉,也可以在conf/server.xml中配置修改)
- 客戶端:1.3和1.4版本目前部分工具無法連接,會提示database not selected衅码,建議使用高版本的Mycat拯刁,1.5版本已經(jīng)修復(fù)了部分客戶端工具的連接
常見分庫分表產(chǎn)品對比
分庫分表產(chǎn)品 | MyCat | Sharding-JDBC | Cobar | Cobar-client | TDDL |
---|---|---|---|---|---|
分庫 | 有 | 有 | 有 | 有 | 未開源 |
分表 | 有 | 有 | 無 | 無 | 未開源 |
中間層 | 是 | 否 | 是 | 否 | 否 |
ORM支持 | 任意 | 任意 | 任意 | 僅MyBatis | 任意 |
數(shù)據(jù)庫支持 | 任意 | 任意 | 僅MySQL | 任意 | 任意 |
社區(qū)情況 | 活躍 | 活躍 | 停更 | 未知 | 未知 |
相關(guān)鏈接
Mycat官網(wǎng)
Mycat從零開始
Mycat權(quán)威指南
GitHub:Mycat-Server
Wiki:Mycat-Server
Issues:Mycat-Server
mysql中間件研究(Atlas,Cobar逝段,TDDL)
mysql中間件研究(Atlas垛玻,Cobar割捅,TDDL,Mycat帚桩,Heisenberg亿驾,Oceanus,Vitess账嚎,OneProxy)