Mycat

Mycat是什么

  它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server。前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储到后端MySQL服务器或者其他数据库。

Mycat

Mycat架构

Mycat

Mycat应用场景

  • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换。
  • 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片。
  • 多租户应用,每一个应用对应一个库,应用程序只连接Mycat,从而不改造程序本身,实现多租户化。
  • 报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
  • 替代Hbase,分析大数据。
  • 作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择。

Mycat解决的问题

  • 性能问题
  • 数据库连接过多
  • E-R 分片难处理
  • 可用性问题
  • 成本和伸缩性问题

Mycat

Mycat读写分离

  数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常配置1-3个读节点。

Mycat

  Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。

MySQL主从复制

Mycat

主从配置需要注意的地方:

  • 主DB server和从DB server数据库的版本一致。
  • 主DB server和从DB server数据库数据一致[ 这里可以把主的备份在从上还原,也可以直接将主的数据目录拷贝到从的数据目录]

    参考资料:http://mycat.io/