首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MyCat 實現 MySQL 主從與讀寫分離:核心配置解析與實戰範例

     編輯:MySQL 綜合教學

MyCat 實現 MySQL 主從與讀寫分離:核心配置解析與實戰範例

MyCat 作為開源資料庫中間件,能透明化分片、讀寫分離、高可用切換。本文聚焦「不託管 MySQL 主從、僅作路由層」的輕量級部署模式,解析 schema.xml 核心配置邏輯,提供可直接落地的 XML 片段與參數詳解。

一、架構定位與資料流

graph LR
    App[應用層] --> MyCat[MyCat Proxy]
    MyCat -->|寫請求| Master[(Master DB)]
    MyCat -->|讀請求| Slave1[(Slave 1)]
    MyCat -->|讀請求| Slave2[(Slave 2)]
    Master -.->|異步複製| Slave1
    Master -.->|異步複製| Slave2

MyCat 不干涉主從同步機制,僅根據 SQL 語義(SELECT vs DML)路由至對應後端。

二、核心配置片段解析

<dataNode name="dn1" dataHost="localhost1" database="db1"/>
<dataNode name="dn2" dataHost="localhost1" database="db2"/>
<dataNode name="dn3" dataHost="localhost1" database="db3"/>

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
  writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
  <heartbeat>select user()</heartbeat>
  <writeHost host="hostM" url="10.1.176.158:3306" user="root" password="123456">
  </writeHost>
</dataHost>

三、關鍵屬性深度解讀

屬性所屬節點含義推薦值/說明
namedataNode邏輯分片名稱全域唯一,如 dn1, dn_shard_01
dataHostdataNode關聯的 dataHost 名稱對應 dataHost@name
databasedataNode實體資料庫名需在後端 MySQL 實際存在
maxCon/minCondataHost連線池上下限視業務併發調整,預設 1000/10
balancedataHost讀負載均衡策略0: 不分離(全走 writeHost)、1: 全部讀節點、2: write+read、3: 所有節點
writeTypedataHost寫入路由模式0: 全部寫 writeHost、1: 隨機、2: 輪詢
switchTypedataHost高可用切換模式1: 自動切換、-1: 不切換、2: 基於 MyCat HA 決策
slaveThresholddataHost從庫同步延遲閾值(秒)超過閾值暫停路由讀請求,防髒讀
heartbeatdataHost心跳檢測 SQL簡輕量查詢,如 select user()

四、進階擴展:多寫入節點與讀寫分離

若需「一主多從 + 讀寫分離」,在 <writeHost> 內嵌套 <readHost>:

<writeHost host="hostM" url="10.1.176.158:3306" user="root" password="123456">
  <readHost host="hostS1" url="10.1.176.159:3306" user="root" password="123456"/>
  <readHost host="hostS2" url="10.1.176.160:3306" user="root" password="123456"/>
</writeHost>

並將 balance="1"(所有 SELECT 走 readHost)或 balance="2"(SELECT 隨機分發至 writeHost + readHost)。

五、生產環境落地清單

  1. 密碼加密:使用 MyCat encrypt 工具加密配置檔明文密碼
  2. 連線池調優:壓測驗證 maxCon、minCon、idleTimeout
  3. 心跳頻率:heartbeat 間隔建議 10-30 秒,平衡檢測及時性與負載
  4. 監控接入:整合 Prometheus + Grafana 監控 MyCat 連線數、QPS、錯誤率、分片路由分佈
  5. 灰度發布:利用 schema.xml 熱加載特性,配合流量染色驗證新分片規則

MyCat 配置看似繁雜,實則邏輯清晰:dataNode 定義邏輯分片 → dataHost 封裝物理叢集 → balance/writeType/switchType 控制路由策略。掌握這三層關係,即可靈活應對從單機到分庫分表的架構演進。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved