MyCat使用Mysql的通信協議模擬成一個MySQl服務器,並創建了完整的Schema(數據庫)、Table(數據表)、User(用戶)的邏輯模型,並將這套邏輯模型映射到後端的存儲節點DataNode上的真實的物理庫中,這樣一來全部能使用MySQL的客戶端及編程語言都能將Mycat當成MYSQLServer使用,沒必要開發新的客戶端。html
Mycat的原理:當Mycat收到一個客戶端發送的SQL請求,會先對SQL進行語法分析和檢查,分析的結果用SQL路由,SQL路由策略支持傳統的基於表格的分片字段進行分片,也支持獨有的基於數據庫E-R關係的分別片策略,對於路由到多個數據節點(DataNode)的SQL,則會對收到的數據集進行」歸併「,而後輸出到客戶端。mysql
DataNode是MyCat的邏輯數據節點,映射到後端的某一個物理數據庫的一個Datebase,爲了作到系統高可用,每一個DataNode能夠配置多個引用地址(DataSource),當主DataSource被檢測爲不可用時,系統會自動切換到下一個可用的DataSource上,這裏的DataSoure便可認爲是Mysql的主流服務器的地址。git
1、下載mycat安裝包github
https://github.com/MyCATApache/Mycat-download/tree/master/1.6-RELEASEsql
2、 配置環境變量(Mycat安裝包解壓在任何路勁便可,可是要避免中文路徑,由於咱們要配置環境變量)數據庫
3、修改配置文件(須要修改的配置文件都在conf文件夾中)編程
(1)修改wrapper.conf 後端
配置jdk服務器
(2)修改server.xml(定義用戶以及系統相關變量,如端口等,是mycat服務器參數調整和用戶受權的配置文件)app
配置mycat登陸的用戶名和密碼
(3)修改schema.xml (定義邏輯庫,表、分片節點等內容)
配置的同一個mysql的一個全局表T_RANK,一個分庫表T_USER_LABEL,分庫規則是sharding-by-murmur(在rule.xml中定義)
配置的不一樣mysql的一個分庫表T_USER_LABEL_TEST,分庫規則是sharding-by-murmur(在rule.xml中定義)
配置了4個數據庫user0,user1,user3,user4,2個dataHost127.0.0.1,192.168.18.223
(4)修改rule.xml
在上面schema.xml文件中定義了一個分庫表T_USER_LABEL,T_USER_LABEL_TEST,分庫規則是sharding-by-murmur,因此要修改對應分庫字段, 同時上面定義了2個分庫,因此也要修改規則對於的方法
注:簡單介紹一下Mycat分庫規則
MYCAT經常使用的分片規則以下,另外還有一些其餘分片方式這裏不所有列舉:
(1)分片枚舉: sharding-by-intfile
(2)主鍵範圍約定: auto-sharding-long 此分片適用於,提早規劃好分片字段某個範圍屬於哪一個分片
(3)一致性hash: sharding-by-murmur
(4)字符串hash解析: sharding-by-stringhash
(5)按日期(天)分片:sharding-by-date
(6)按單月小時拆分: sharding-by-hour
(7)天然月分片: sharding-by-month
(8)取模: mod-long 此規則爲對分片字段求摸運算
(9)取模範圍約束: sharding-by-pattern 此種規則是取模運算與範圍約束的結合,主要爲了後續數據遷移作準備,便可以自主決定取模後數據的節點分佈
四、啓動mycat
(1)在原數據庫中新建4個數據庫user0,user1,user3,user4
(2)啓動和中止服務
進入cmd.切換到./mycat/bin/
注:安裝mycat服務 :mycat install 啓動mycat服務 :mycat start 中止mycat服務 :mycat stop
注意:當修改配置文件後,須要重啓mycat服務
(3)鏈接mycat mysql -h[IP] - u[userName] -p[password] -P8066
(4) Navicat for mysql 鏈接mycat
a、填寫鏈接信息
b、查看mycat結構
c、mysql127.0.0一、192.168.18.223結構
(5) 建立表而且添加數據、看同步數據源表數據的分配,select查數據的條數