1. 程式人生 > >MyCAT學習總結

MyCAT學習總結

企業級 自動切換 數據倉庫 中間 mysq 全局 數據庫 隔離 percona

MyCAT介紹

簡單的說,MyCAT就是:

?一個徹底開源的,面向企業應用開發的“大數據庫集群

?支持事務ACID(指數據庫事務正確執行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability))、可以替代Mysql的加強版數據庫

?一個可以視為“Mysql”集群的企業級數據庫,用來替代昂貴的Oracle集群

?一個融合內存緩存技術、Nosql技術、HDFS大數據的新型SQL Server

?結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品

?一個新穎的數據庫中間件產品

MyCAT的目標是:低成本的將現有的單機數據庫和應用平滑遷移到“雲”端,解決數據存儲和業務規模迅速增長情況下的數據瓶頸問題。

MyCAT的關鍵特性

?支持 SQL 92標準

?支持Mysql集群,可以作為Proxy使用

?支持JDBC連接ORACLE、DB2、SQL Server,將其模擬為MySQL Server使用

?支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性數據分片集群

?自動故障切換,高可用性

?支持讀寫分離,支持Mysql雙主多從,以及一主多從的模式

?支持全局表,數據自動分片到多個節點,用於高效表關聯查詢

?支持獨有的基於E-R 關系的分片策略,實現了高效的表關聯查詢

?多平臺支持,部署和實施簡單

MyCAT架構

技術分享圖片

Mycat解決的問題

l 性能問題

l 數據庫連接過多

l E-R分片難處理

l 可用性問題

l 成本和伸縮性問題

技術分享圖片

分片策略

MyCAT支持水平分片與垂直分片:

?水平分片:一個表格的數據分割到多個節點上,按照行分隔。

?垂直分片:一個數據庫中多個表格A,B,C,A存儲到節點1上,B存儲到節點2上,C存儲到節點3上。

技術分享圖片

MyCAT通過定義表的分片規則來實現分片,每個表格可以捆綁一個分片規則,每個分片規則指定一個分片字段並綁定一個函數,來實現動態分片算法。

1、Schema:邏輯庫,與MySQL中的Database(數據庫)對應,一個邏輯庫中定義了所包括的Table。

2、Table:表,即物理數據庫中存儲的某一張表,與傳統數據庫不同,這裏的表格需要聲明其所存儲的邏輯數據節點DataNode。在此可以指定表的分片規則。

3、DataNode:MyCAT的邏輯數據節點,是存放table的具體物理節點,也稱之為分片節點,通過DataSource來關聯到後端某個具體數據庫上

4、DataSource:定義某個物理庫的訪問地址,用於捆綁到Datanode上

Mycat讀寫分離

數據庫讀寫分離對於大型系統或者訪問量很高的互聯網應用來說,是必不可少的一個重要功能。對於MySQL來說,標準的讀寫分離是主從模式,一個寫節點Master後面跟著多個讀節點,讀節點的數量取決於系統的壓力,通常是1-3個讀節點的配置

技術分享圖片

Mycat讀寫分離和自動切換機制,需要mysql的主從復制機制配合。

Mysql的主從復制

技術分享圖片

主從配置需要註意的地方

1、主DB server和從DB server數據庫的版本一致

2、主DB server和從DB server數據庫數據一致[ 這裏就會可以把主的備份在從上還原,也可以直接將主的數據目錄拷貝到從的相應數據目錄]

3、主DB server開啟二進制日誌,主DB server和從DB server的server_id都必須唯一

MyCAT學習總結