java之MyCAT入門及應用總結

MyCAT的主要作用

1分佈式數據庫系統中間層(實現讀寫分離,更好的控制數據庫的多個連接池連接問題,屏蔽客戶端數據庫的變更)
2同時實現關係型和非關係型數據庫的連接
3支持讀負載均衡
4Mycat支持後端MySQL高可用(通過指定從節點,並不支持從其他從節點對新的主節點進行主從同步)
5實現數據庫的垂直拆分和水平拆分

MyCAT的主要應用場景

1、需要進行讀寫分離的場景( 當一臺數據庫進行讀寫混合操作時,數據庫性能大幅下降,並且讀負載明顯高於寫負載時,mycat支持多種客戶端的mysql集羣方案進行讀寫分離如一主一從,一主多從,主主複製,PXC集羣)
2、需要進行分庫分表的場景(最大支持1千億級的單表分片)
3、多租戶場景(多用戶環境使用不同的系統組件,同時保證數據之間的隔離性)
4、數據統計系統(基於MyCAT的分表能力,處理大規模報表和統計,可以併發的對後端數據庫中的數據進行彙總和合並)
5、HBASE的一種替代方案(實際是通過mycat連接MySQL的分佈式模擬)
6、需要使用同樣的方式查詢多種數據庫的場景

MyCAT的優勢

1、基於阿里的 cobar系統開發
2、開發社區活躍
3、完全開源可以自定義開發
4、支持多種關係型數據庫和非關係型數據庫
5、使用java開發,可以部署在多種系統上
6、具有在多種行業和項目中的成功案例

MyCAT的概念

1、MyCAT中的數據庫是邏輯庫而非物理庫,實際數據存儲在物理庫中
2、MyCAT中的數據庫通過前端應用看到的表實際就是邏輯表,一個邏輯表可能對應物理庫中的多個表

MyCAT的關鍵特性

1、支持SQL92標準
2、支持多種MySQL集羣
3、支持JDBC連接數據庫
4、支持NoSQL數據庫
5、支持自動故障切換,高可用
6、支持讀寫分離
7、支持全局表
8、支持獨有的基於ER關係的分片策略
9、支持一致性HASH分片
10、多平臺支持,部署簡單方便
11、支持全局序列號

MyCAT安裝

注:對於在Linux系統下運行的軟件,最好爲每個軟件建立獨立的系統賬號,這樣既安全有可以對賬號下資源進行相應的限制。
MyCAT安裝流程簡圖

MyCAT啓動

Linux下腳本啓動:
$MYCAT_HOME/bin/startup_noswarp.sh
當內存不足時可以調整JAVA_OPTS=”-server -Xms1G -Xmx2G -XX:MaxPerSize=64M -XX:+AggressiveOpts -XX:MaxDirectMemorySize=2G”

MyCAT的關鍵配置文件

1、schema.xml用於配置文件邏輯庫表及數據節點

<schema><table></table></schema>定義邏輯庫表注:當前只進行讀寫分離操作而不需要分庫分表操作時可以只配置<schema></schema>
<dataNode></dataNode>定義數據節點
<dataHost></dataHost>定義數據節點的物理數據源

2、rule.xml用於配置表的分片規則

<tableRule name="" ></tableRule>定義表使用的分片規則
<function name="" ></function>定義分片算法

3、server.xml用於配置服務器權限

<system><property name=""></property></system>用於定義系統配置
<user></user>用於定義連接MyCAT的用戶

MyCAT實現讀寫分離實操

MyCAT實現讀寫分離慕課網視頻
schema.xml

<mycat:shema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="node1" database="user_db"/>
<dataHost name="node1" maxCon="10000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="10.102.13.3" url="10.102.13.3:3306" user="im_user" password="123456">
<readHost host="10.102.13.4" url="10.102.13.4:3306" user="im_user" password="123456"/>
</writeHost>
<writeHost host="10.102.13.4" url="10.102.13.4:3306" user="im_user" password="123456">
</dataHost>
</mycat:shema>

注:①這裏沒進行分片分表操作因此只配置了②heartbeat配置心跳監測方式

server.xml

<system>
<property name="serverPort">3306</property>
<property name="managerPort">9066</property>
</system>
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">USERDB</property>
</user>
<user>
<property name="password">123456</property>
<property name="schemas">USERDB</property>
<property name="readOnly">true</property>
</user>

管理MyCAT

使用MySQL客戶端管理MyCAT

管理端口9066
連接端口命令:
mysql -uroot -p123456 -h127.0.0.1 -P9066
查看管理端口支持的管理命令:
show @@help;
重新加載配置文件命令:
reload @@config
查看schema.xml中配置的數據節點命令:
show @@datanode;
查看配置的物理數據源命令:
show @@datasource;
查看數據庫連接狀況命令:
show @@backend;

文章總結自慕課網MyCAT入門及應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章