MyCat 1.6.7.5 介绍与选型指南
MyCat 1.6.7.5 介绍与选型指南:基于官方公开资料溯源(查询日期 2026-10-19,未做本地安装实测),梳理 MySQL 分布式中间件 MyCat 的代理架构、分库分表与读写分离能力、快速上手与限制,并如实标注社区现状——1.x 最新 release 停在 2020-11、Mycat2 停在 2022-06、活跃度低迷;给出与 Apache ShardingSphere、ProxySQL、Vitess 的量化选型对比。
MyCat 1.6.7.5 介绍与选型指南
一、信息基准
1.1 查询说明
- 查询日期:2026-10-19。
- 信息获取方式:纯官方资料溯源(GitHub 官方仓库 MyCATApache/Mycat-Server 与 MyCATApache/Mycat2 的 Release 页、官方 README、官网 mycatone.top、官方《Mycat1.6 权威指南》),本文不做本地安装与运行实测。
- 版本结论:MyCat 存在两条代码线——Mycat-Server(1.x 线)最新 release 为 1.6.76-release-2020-11-2(2020-11-02 发布),Mycat2 最新 release 为 v1.22-2022-6-25(2022-06-25 发布)。本文以与站内既有实操文档一致、社区仍广泛使用的 1.6 系列稳定版 1.6.7.5(1.6.7.5-release-20200422133810)为介绍基准,并如实说明两条线的社区活跃度现状(这是选型的关键事实)。
1.2 版本依据
| 项目 | 实查结果(2026-10-19) | 来源 |
|---|---|---|
| 1.x 最新 release | 1.6.76-release-2020-11-2(2020-11-02) | github.com/MyCATApache/Mycat-Server/releases |
| 本文基准版本 | 1.6.7.5(1.6.7.5-release-20200422133810,2020-04) | Mycat-Server 发行物命名与站内既有文档 |
| Mycat2 最新 release | v1.22-2022-6-25(2022-06-25) | github.com/MyCATApache/Mycat2/releases |
| Mycat2 最近代码提交 | 2023-08-15 | GitHub 仓库 pushed_at 实查 |
| Mycat-Server 最近代码提交 | 2026-05-18(有零星提交,但自 2020-11 后无新 release) | GitHub 仓库 pushed_at 实查 |
| GitHub stars | Mycat-Server 9501;Mycat2 1734 | GitHub 仓库页实查 |
| 开源许可 | Mycat-Server 为 GPL-2.0;Mycat2 为 GPL-3.0 | 两仓库 LICENSE 实查 |
| 代码仓库 | MyCATApache/Mycat-Server、MyCATApache/Mycat2 | github.com |
1.3 官方来源清单
| 来源 | 地址 |
|---|---|
| 官方站点(1.x 线) | http://mycatone.top/ |
| Mycat-Server 仓库 | https://github.com/MyCATApache/Mycat-Server |
| Mycat2 仓库 | https://github.com/MyCATApache/Mycat2 |
| Mycat1.6 权威指南(官方文档) | 官方 README 提供的语雀分享与 PDF(mycat.org.cn/document/mycat-definitive-guide.pdf) |
| Gitee 官方镜像 | https://gitee.com/MycatOne/Mycat-Server |
二、软件概述
本文介绍的是 MyCat 1.6 系列稳定版 1.6.7.5(1.6.7.5-release-20200422133810),并同步说明 Mycat2 的现状。
MyCat 是一款开源的 MySQL 分布式中间件(分库分表代理):它以 Java NIO 实现了 MySQL 协议代理,对前端应用模拟成一台 MySQL Server,对后端则管理一批真实的 MySQL 实例(分片节点)。数据永远存放在后端 MySQL 中,MyCat 本身不存储数据,只承担 SQL 路由、结果聚合与读写分离——这是理解 MyCat 一切行为的前提(官方《Mycat1.6 权威指南》口径)。
社区活跃度(选型关键事实,如实说明):GitHub 实查显示,Mycat-Server 的最新 release 停留在 2020-11 的 1.6.76,Mycat2 的最新 release 停留在 2022-06 的 v1.22,且 Mycat2 代码仓库最近一次 push 为 2023-08-15——两条代码线均已多年没有新版本发布,社区活跃度低迷。项目未发布停止维护的官方公告,但「无新版本、无活跃迭代」的事实应在选型时作为首要约束对待。
三、核心架构
3.1 代理形态与端口
MyCat 以独立进程部署在后端 MySQL 与应用之间:数据端口 8066 接收业务连接(MySQL 协议),管理端口 9066 提供运维命令(show @@、reload @@ 等)。应用无需改造驱动,像连普通 MySQL 一样连接 MyCat。
3.2 逻辑库表与分片节点
官方 schema.xml 定义了四层核心抽象:
| 对象 | 说明 |
|---|---|
| schema | 逻辑库,对前端暴露的「虚拟 MySQL 库」 |
| table | 逻辑表,可声明分片规则(rule)与分片键 |
| dataNode | 逻辑分片 = 具体 MySQL 库的映射单元 |
| dataHost | 数据主机组,承载读写分离与心跳切换 |
3.3 请求处理链路
前端 SQL 进入后,MyCat 完成 SQL 解析 → 按分片规则路由计算 → 改写并分发到对应 dataNode → 汇总各分片结果(含聚合/排序)→ 返回客户端。跨分片的复杂 JOIN、聚合能力有限,需要结合业务设计分片键(官方权威指南口径)。
3.4 Mycat2 的差异
Mycat2 官方定位为「基于 Sharding SQL 与 Calcite 的 MySQL Proxy」:引入基于 Calcite 的查询优化、支持注解式建表自动映射物理表等新机制。但如前所述,该线自 2022-06 后无新 release、2023-08 后无代码提交。
四、功能特性
4.1 分库分表
rule.xml 内置多种分片算法(取模、范围、按日期分片等),通过 tableRule 将分片键映射到分片函数,实现水平拆分(官方配置文档)。
4.2 读写分离
dataHost 层通过 balance、writeType、readHost 配置实现写走主库、读走从库,并配合心跳完成故障切换(官方 schema.xml 文档)。
4.3 全局序列
为分片表的主键提供全局唯一 ID:本地文件、数据库段、时间戳等多种实现方式(官方 sequence 相关配置文档)。
4.4 管理命令
9066 管理端口提供 show @@datasource、show @@datanode、reload @@config、rollback @@config 等运维命令(官方权威指南;站内已有《MyCat 常用 CLI 命令与工具详解》详解篇)。
4.5 高可用
支持 dataHost 内 writeHost/readHost 主从切换(switchType 与心跳检测),亦可与 Keepalived 等外部手段组合(官方配置文档)。
五、快速上手
以下步骤转述自官方 README 与《Mycat1.6 权威指南》,本文不做本地实测。
5.1 获取
从 Mycat-Server 的 GitHub Releases 页获取 1.6.7.5 发行包(Mycat-server-1.6.7.5-release-20200422133810-*-linux.tar.gz),运行环境需 Java 运行时(官方文档示例基于 JDK 1.8)。
5.2 启动
解压后进入 mycat 目录,使用官方启动脚本:
./bin/mycat start # 后台启动,另提供 console / stop / restart / status
启动后监听数据端口 8066 与管理端口 9066(server.xml 可配置)。
5.3 连接与验证
使用 server.xml 中定义的账号通过 MySQL 客户端连接 8066 端口:
mysql -h127.0.0.1 -P8066 -u<server.xml中定义的用户> -p
连接后执行 show databases; 可见 schema.xml 声明的逻辑库,即代表代理已就绪;随后按 schema.xml/rule.xml 定义的逻辑表进行 DML。完整配置示例见官方权威指南与站内《MyCat 1.6.7.5 配置参数详解》。
六、适用场景与限制
6.1 适用场景
- 存量 MyCat 集群的维护与扩容(多数存量部署集中在 1.6.7.x)。
- 以 MySQL 为后端的分库分表历史项目,且团队已具备 MyCat 运维经验。
- 只需要代理层读写分离、简单分片的中等规模场景。
6.2 限制与注意事项
- 版本停更是硬约束:1.x 最新 release 2020-11、Mycat2 最新 release 2022-06(GitHub 实查),新漏洞修复、新版 MySQL/JDK 兼容性均无官方维护承诺,新项目不建议选型。
- 跨分片复杂 SQL 支持有限,需按分片键设计业务。
- 依赖独立 JVM 进程,代理层自身的高可用需额外建设。
- GPL 系许可(1.x 为 GPL-2.0、Mycat2 为 GPL-3.0)对集成分发的传染性需法务评估。
七、同类选型对比
7.1 候选概览
| 工具 | 定位 | 开源许可 |
|---|---|---|
| MyCat 1.x / Mycat2 | MySQL 协议代理型分库分表中间件 | GPL-2.0 / GPL-3.0 |
| Apache ShardingSphere | 分库分表生态:JDBC + Proxy 双形态 | Apache-2.0 |
| ProxySQL | 高性能 MySQL/PostgreSQL 代理 | GPL-3.0 |
| Vitess | 面向水平扩展的 MySQL 数据库聚类系统 | Apache-2.0 |
7.2 量化对比(2026-10-19 实查)
| 维度 | MyCat 1.x | Mycat2 | ShardingSphere | ProxySQL | Vitess |
|---|---|---|---|---|---|
| 开源许可 | GPL-2.0 | GPL-3.0 | Apache-2.0 | GPL-3.0 | Apache-2.0 |
| GitHub stars | 9501 | 1734 | 20810 | 6939 | 21387 |
| 最近发版 | 1.6.76(2020-11-02) | v1.22(2022-06-25) | 5.5.3(2026-02-28) | v3.0.11(2026-08-27) | v24.0.5(2026-10-13) |
| 版本节奏 | 自 2020-11 无新 release(仓库仍有零星提交) | 自 2022-06 无新 release、2023-08 后无 push | ASF 顶级项目,持续发版 | 2.x/3.x 双线维护 | 月度补丁 + 半年 minor |
| 技术栈 | Java(MySQL 协议代理) | Java + Calcite | Java | C++ | Go |
| 形态侧重 | 代理层分片 + 读写分离 | 新一代分片代理(已停滞) | JDBC/Proxy 双形态,SQL 兼容性工程完善 | 代理层读写分离、查询路由、连接池 | 云原生分片,VReplication 与 K8s 生态 |
(stars、发版时间与许可取自各项目 GitHub Releases/仓库页实查;Kafka 式说明不适用,本文对比对象版本均以官方 Release 页为准。)
7.3 选型建议
如实基于社区数据给结论:新项目不要选 MyCat——两条代码线多年无新版本是量化事实,新硬件/新 JDK/新 MySQL 的兼容风险只能自行承担。存量 MyCat 用户建议评估向 ShardingSphere 迁移(生态活跃、ASF 治理、JDBC 形态可与应用共同演进);若痛点只是读写分离与连接聚合而不做分库分表,ProxySQL 更轻量;若面向超大规模、多租户与 Kubernetes 交付,Vitess(CNCF 项目)是当前最活跃的选择。三者的站内详解见《Apache ShardingSphere 5.5.3 介绍与选型指南》《ProxySQL 2.7.3 配置参数详解》与《Vitess 24.0 配置参数详解》。
八、参考链接
- 官方站点:http://mycatone.top/
- Mycat-Server 仓库:https://github.com/MyCATApache/Mycat-Server
- Mycat-Server Releases:https://github.com/MyCATApache/Mycat-Server/releases
- Mycat2 仓库:https://github.com/MyCATApache/Mycat2
- Mycat2 Releases:https://github.com/MyCATApache/Mycat2/releases
- Mycat1.6 权威指南(官方 README 提供入口):http://mycat.org.cn/document/mycat-definitive-guide.pdf
- 站内相关文档:《Apache ShardingSphere 5.5.3 介绍与选型指南》、《ProxySQL 2.7.3 配置参数详解》、《Vitess 24.0 配置参数详解》