天天看點

分布式資料庫中間件Mycat

Mycat:分布式資料庫中間件。對資料庫使用者而言,是資料庫代理。Mycat将使用者給到邏輯庫的SQL語句路由到實際庫,通路結果被Mycat處理後傳回給使用者(如:結果聚合)。Mycat可以屏蔽分庫分表的影響,像操作整表整庫一樣操作分散的庫和表。

http://www.mycat.io/官網下載下傳,解壓後在cmd中cd到mycat的bin目錄,

安裝:mycat install

啟動:mycat start

停止:mycat stop

重新開機:mycat restart

Mycat的預設端口是:8066。實際庫是Mysql時,Navicat連接配接Mycat時選擇Mysql,但端口填寫8066。JDBC的url為:    jdbc:mysql://Mycat的IP:Mycat的端口/Mycat邏輯庫名稱

關鍵配置檔案

server.xml:邏輯庫名稱、邏輯庫的使用者名、密碼、是否隻讀、全局序列号配置方式等。

schema.xml:配置邏輯庫(包含的邏輯表)、邏輯表(表名、主鍵、實際表分布的資料節點、分片規則名稱)。

資料節點(dataNode):實際庫資訊:實際庫所在主機、通路端口,實際庫的名稱、使用者名、密碼。

rule.xml:分片規則配置(規則對應的Java類,Java類對應的配置檔案)。常用包括枚舉、範圍、取模分片、時間分片等。

ER(Entity Relation)分片:父表和子表分片規則相同。子表有joinKey和父表的primaryId分辨記錄所屬分片。比如:訂單表是父表,分期支付資訊表是子表。訂單資訊根據訂單号分片存儲,分期支付資訊也根據訂單号分片存儲。訂單資訊和對應的分期支付資訊存儲在同一個分片中,使關聯查詢更加快捷。ER分片提升跨表聯查的效率。

全局序列号有本地檔案、資料庫方式等。本地檔案方式讀取速度快,但Mycat重新釋出後配置檔案的sequence會恢複到初始值,一般測試用。資料庫方式:建立存放序列号名稱、目前值、步長等資訊的MYCAT_SEQUENCE表及相應函數。

在邏輯庫操作邏輯表:

将SQL語句路由到邏輯表對應的實際表分布的資料節點。即将SQL語句路由到實際庫。

EXPLAIN 加在SQL語句前,可以顯示SQL語句執行對應的資料節點。

Mycat可以在主從機的基礎上讀寫分離。Mycat想跨庫聯查、資料定義、insert select、讀寫分離中在寫庫讀,必須加上注解。

Mycat有源碼包,利于調試。

Mycat高可用(叢集)可以借助Keepalived + HAProxy。

官網有PDF文檔,很詳細,适配Mycat1.6版本。http://www.mycat.org.cn/document/mycat-definitive-guide.pdf

官網的PDF沒有書簽。部落客提供一個書簽版:https://pan.baidu.com/s/1IAucICaT4hAggBn3rYJovw 密碼:14xe

部落客前面的内容隻是一個引子,更豐富的功能在PDF裡很詳細,看看目錄結構,知道有什麼能用,用的時候按照文檔操作細節即可。

繼續閱讀