MyCat 基本介绍

MyCat 是一个开源的分布式数据库中间件,它完整实现了 MySQL 协议,前端用户可以直接使用标准的 MySQL 客户端工具连接 MyCat,就像操作普通的 MySQL 数据库一样。

核心功能

  1. 分库分表(水平拆分):支持按范围、哈希、时间等分片策略
  2. 读写分离:自动路由写操作到主库,读操作到从库
  3. 结果集合并:合并多个分片的结果集
  4. SQL 拦截与改写
  5. 数据库防火墙
  6. 心跳检测与故障转移

典型应用场景

  • 电商系统订单表分片存储
  • 物联网海量设备数据存储
  • 多租户 SaaS 应用

MyCat的角色定位

对DBA的定位

MyCat在DBA视角下是一个虚拟的MySQL Server实例:

  • 无数据存储特性:Mycat本身不存储任何业务数据
  • 数据可靠性保障:完全依赖底层MySQL数据库的事务机制
  • 运维管理优势:简化大规模MySQL集群的运维复杂度

对开发人员的价值

  • 连接兼容性:支持所有标准MySQL连接方式
  • ORM框架支持:兼容主流ORM框架
  • 最佳实践:对于分片表建议使用原生SQL以获得最佳性能

核心概念

逻辑库

逻辑库是对物理分片数据库集群的抽象表示。它为应用程序提供统一的虚拟数据库视图,隐藏底层复杂的物理分片结构。

逻辑表

逻辑表是面向应用程序的虚拟数据表,其表现形式与传统的单机数据库表完全一致。开发人员可以通过标准SQL语句对逻辑表进行CRUD操作。

分片表

分片表是指将原本存储在单一数据库中的大型数据表,按照特定规则分割成多个较小的部分。

典型实现方式

  • 水平分片:范围分片、哈希分片、时间分片
  • 分片策略:按用户ID哈希、按时间范围等

非分片表

非分片表是指不需要进行数据切分的表,通常以完整的形式存储在单个数据库节点上。

适用场景

  • 数据量较小的表
  • 低访问频率的表
  • 需要全局一致性的表

性能指标

  • 最高 10 万 QPS
  • 单节点管理 100+ 物理分片
  • 毫秒级故障检测与切换