真實案例:用MyCat實現資料庫讀寫分離與分庫分表
- 2019 年 10 月 6 日
- 筆記
1.0版,普通企業應用基本都是單實例或單庫的模式,採用單機實現資料庫的訪問。再向上,2.0版,隨著業務的規模擴展,企業會採用雙機資料庫,如熱備、讀寫分離的方式來提高性能或可靠性。最後,3.0版,單機實現所有數據的寫會遇到最終的瓶頸,因此分庫、分表是最終的資料庫的高可用的解決方案。今天我們來講講用MyCat中間件實現MySql資料庫的分庫分表的實現。
MyCat實際是基於阿里巴巴的CoBar進行開源化的中間件。以下是系統架構。

應用程式(PHP、JAVA等)在需要連接MySql資料庫時,實際連接的是MyCat中間件,由MyCat的連接資源池再次向真實的物理伺服器Mysql1、Mysql2、Mysql3發起連接訪問請求。通過MyCat能實現讀寫分離、分庫分表的配置。接下來我們來看一下如何配置MyCat。
一、下載MyCat中間件。

二、解壓縮MyCat中間件。

三、進入MyCat的配置文件。

MyCat的配置文件均位於mycat/conf目錄下。其中最重要的是以下三個配置文件。server.xml文件是MyCat自身的配置文件;而schema.xml則對應真實的物理資料庫伺服器的規則;rule.xml是分庫分表的規則配置。

四、查看server.xml中的配置。

以下配置,代表應用程式可以通過root、password訪問TESTDB這個資料庫。
五、查看schema.xml中的配置。

schema.xml中的資料庫名與剛才server.xml中的資料庫名相對應。

schema.xml中的dataNode代表通過三台伺服器實現分片。

schema.xml中的dataHost代表真實的物理伺服器的配置。在這裡可以配置物理伺服器的IP、資料庫的帳號、密碼。
六、MyCat只是一個資料庫的集群調度工具,對於讀寫分離中的數據複製必須通過資料庫自身實現;而對於分表後的聯表查詢目前只支援兩個表的聯表查詢;MyCat支援MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流資料庫。
總體來看,MyCat已經是一個不錯的資料庫中間件,推薦使用。