Mycat
Mycat是什么
它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server。前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储到后端MySQL服务器或者其他数据库。
Mycat架构
Mycat应用场景
- 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换。
- 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片。
- 多租户应用,每一个应用对应一个库,应用程序只连接Mycat,从而不改造程序本身,实现多租户化。
- 报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
- 替代Hbase,分析大数据。
- 作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择。
Mycat解决的问题
- 性能问题
- 数据库连接过多
- E-R 分片难处理
- 可用性问题
- 成本和伸缩性问题
Mycat读写分离
数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常配置1-3个读节点。
Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。
MySQL主从复制
主从配置需要注意的地方:
- 主DB server和从DB server数据库的版本一致。
- 主DB server和从DB server数据库数据一致[ 这里可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的数据目录]
参考资料:http://mycat.io/