MyCat 基本介绍
MyCat 是一个开源的分布式数据库中间件,它完整实现了 MySQL 协议,前端用户可以直接使用标准的 MySQL 客户端工具连接 MyCat,就像操作普通的 MySQL 数据库一样。
核心功能:
- 分库分表(水平拆分):支持按范围、哈希、时间等分片策略
- 读写分离:自动路由写操作到主库,读操作到从库
- 结果集合并:合并多个分片的结果集
- SQL 拦截与改写
- 数据库防火墙
- 心跳检测与故障转移
典型应用场景:
- 电商系统订单表分片存储
- 物联网海量设备数据存储
- 多租户 SaaS 应用
MyCat的角色定位
对DBA的定位
MyCat在DBA视角下是一个虚拟的MySQL Server实例:
- 无数据存储特性:Mycat本身不存储任何业务数据
- 数据可靠性保障:完全依赖底层MySQL数据库的事务机制
- 运维管理优势:简化大规模MySQL集群的运维复杂度
对开发人员的价值
- 连接兼容性:支持所有标准MySQL连接方式
- ORM框架支持:兼容主流ORM框架
- 最佳实践:对于分片表建议使用原生SQL以获得最佳性能
核心概念
逻辑库
逻辑库是对物理分片数据库集群的抽象表示。它为应用程序提供统一的虚拟数据库视图,隐藏底层复杂的物理分片结构。
逻辑表
逻辑表是面向应用程序的虚拟数据表,其表现形式与传统的单机数据库表完全一致。开发人员可以通过标准SQL语句对逻辑表进行CRUD操作。
分片表
分片表是指将原本存储在单一数据库中的大型数据表,按照特定规则分割成多个较小的部分。
典型实现方式:
- 水平分片:范围分片、哈希分片、时间分片
- 分片策略:按用户ID哈希、按时间范围等
非分片表
非分片表是指不需要进行数据切分的表,通常以完整的形式存储在单个数据库节点上。
适用场景:
- 数据量较小的表
- 低访问频率的表
- 需要全局一致性的表
性能指标
- 最高 10 万 QPS
- 单节点管理 100+ 物理分片
- 毫秒级故障检测与切换