面試高頻題:「Mycat 和 MySQL 的區別?」一句话回答:MySQL 是對底層存儲文件的抽象;Mycat 是對 MySQL 叢集的抽象。
| 層次 | 對象 | 作用 | 類比 |
|---|---|---|---|
| 硬體 | CPU/內存/磁盤/網卡 | 物理資源 | — |
| 作業系統 | 硬體抽象 | 進程調度、內存管理、文件系統 | 管理硬體 |
| 數據庫 | 存儲文件抽象 | SQL 接口、事務、索引、鎖、緩存 | 管理數據文件 |
| 中間件 | 數據庫叢集抽象 | 分片路由、讀寫分離、多租戶、故障切換 | 管理多個數據庫 |
| 應用 | 業務邏輯 | 面向單一邏輯數據庫開發 | — |
核心判準: 當應用需要面對「多個 MySQL 實例」時,引入中間件將其抽象為「一個邏輯庫」,對應用透明。
單機 MySQL → 主從複製 → 讀寫分離 → 垂直拆庫 → 水平分表 → Mycat/ShardingSphere 等中間件 → 分布式數據庫
Mycat 解決的是「應用不感知」的分庫分表接入問題,是邁向分布式數據庫架構的關鍵基礎設施。
MySQL = 單節點數據庫服務器
Mycat = 數據庫叢集的統一入口與智能路由層
有分庫分表、讀寫分離、多實例管理需求時,才需要 Mycat。