Mycat背景與由來
Mycat的前身是阿里巴巴大名鼎鼎的Cobar,Cobar在開源了一段時間后,就沒有再維護了,阿里巴巴放棄了該項目,再加上Cobar在使用過程中也發現存在一些問題。
2013年國內一批開源軟件愛好者對Cobar這個項目進行了改進,并命名為Mycat,這就是MyCat的誕生。
MyCat是完全免費開源的,不屬于任何商業公司。
Mycat于2014年首次在上海的《中華架構師》大會上對外宣講,隨后越來越多的項目采用了Mycat。
截至2015年11月,超過300個項目采用Mycat,涵蓋銀行、電信、電子商務、物流、移動應用、O2O的眾多領域和公司。
Mycat官網:http://www.mycat.io/
Mycat是一個開源數據庫中間件,是一個實現了MySQL協議的的數據庫中間件服務器,我們可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問Mycat,而Mycat再使用用MySQL原生(Native)協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,包括SQL Server、Oracle、DB2、PostgreSQL等主流數據庫,也支持MongoDB這種新型NoSQL方式的存儲,未來還會支持更多類型的存儲;
一般地,Mycat主要用于代理MySQL數據庫,雖然它也支持去訪問其他類型的數據庫;
Mycat的默認端口是8066,一般地,我們可以使用常見的對象映射框架比如MyBatis操作Mycat。
通過Mycat可以自動實現寫數據時操作主數據庫,讀數據時操作從數據庫,這樣能有效地減輕數據庫壓力,也能減輕IO壓力。
實現讀寫分離,當主出現故障后,Mycat自動切換到另一個主上,進而提供高可用的數據庫服務,當然我需要部署多主多從的模式
如果有了Mycat,客戶端直接連接Mycat,可以實現讀寫分離,如果主出現問題,會自動切換到從服務器上
分庫分表指的是對數據庫數據的拆分,分為兩種:水平拆分和垂直拆分。
● 水平切分(橫向切分)
根據表中數據的邏輯關系,將同一個表中的數據按照某種條件拆分到多臺數據庫服務器上面。
● 垂直切分(縱向切分)
按照不同的表來切分到不同的數據庫服務器之上。
● 性能有瓶頸了,可以讀寫分離
● 數據庫容量有瓶頸了,可以分庫分表
1、下載
http://dl.mycat.io/1.6-RELEASE/
我們將08-MyCat\tools目錄下下載好的Mycat直接上傳到Linux上。
2、解壓
tar –zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz –C /usr/local
3、Java語言開發的,直接解壓即可使用
Tomcat
ZooKeeper
ActiveMQ
Mycat
1、 Mycat啟動
切換到mycat的bin路徑下,執行
./mycat start
2、Mycat關閉
切換到mycat的bin路徑下,執行
./mycat stop
3、Mycat命令行(先了解,后面會用到)
登錄mycat命令行,使用mysql的命令行工具來操作的:
./mysql -umycat -p -P8066 -h127.0.0.1
mycat默認數據訪問端口是8066
4、MyCat配置文件
● server.xml
主要用于配置mycat需要的服務器信息
常用配置:
配置序列生成方式
配置mycat邏輯數據庫
配置mycat的訪問賬戶和密碼
● schema.xml
用于配置的邏輯數據庫的映射、表、分片規則、數據結點及真實的數據庫信息;
常用配置:
配置邏輯庫映射
配置垂直切分的表
配置真實的數據庫
配置讀寫結點