从定义和分类来看,Mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。
Mycat背后是阿里曾经开源的知名产品——Cobar,Cobar是阿里巴巴研发的关系型数据的分布式处理系统。
Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户 。
Mycat几个典型的应用场景:
1. 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换
2. 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片
3. 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化
4. 报表系统,借助于Mycat的分表能力,处理大规模报表的统计
有疑问加站长微信联系(非本文作者)