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啓動
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入門及應用