前言,首先,本系列文章并非入门级文章,作为一个学习尚硅谷Mycat教程(mycat分布式架构精讲)教程过程中的学习记录,扩展与总结,各位食用前应该有一定基础,至少应该明白为什么要分库 ,为什么要分表 ,同时因博主水平目前水平有限,有不妥之处望指出,欢迎讨论!
1. mycat 是什么
mycat 是数据库中间件
- 一个彻底开源的,面向企业应用开发的大数据库集群
- 支持事务、ACID、可以替代MySQL的加强版数据库
- 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
- 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
- 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
- 一个新颖的数据库中间件产品
2. 为什么用mycat
- 程序(java)与 数据库高耦合
- 高访问量对数据库的压力
- 读写数据库 数据不一致
主要痛点就是以上几点,当然不仅仅是这几个功能,有更多的:
- 支持分布式事务(弱xa)
- 分库分表
- 支持全局序列号,解决分布式下的主键生成问题
- 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页
- 强大的web,命令行监控
- …
详细查看官网 http://www.mycat.org.cn/
3. 同类型中间件对比
Cobar:
阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。
MyCAT:
社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。总体来说支持度比 较高,也会一直维护下去,
OneProxy:
数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件, 楼总舍去了一些功能点,专注在性能和稳定性上。 高并发下很稳定。
Vitess:
这个中间件是Youtube生产在使用的,但是架构很复杂。 与以往中间件不同,使用Vitess应用改动比较大要 使用他提供语言的API接口,我们可以借鉴他其中的一些设计思想。
Kingshard:
Kingshard是前360Atlas中间件开发团队的陈菲利用业务时间 用go语言开发的,目前参与开发的人员有3个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。
Atlas:
360团队基于 mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并发下会经常挂掉,如果大家要使用需要提前做好测试。
MaxScale与MySQL Route:
这两个中间件都算是官方的吧,MaxScale是mariadb (MySQL原作者维护的一个版本)研发的,目前版本不支持分库分表。
MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。
不适合国内环境
4. 基本原理
初学者可以理解为是一个拦截,拦截了发送SQL后,对语句分析,然后特定分析,如:分片分析,路由分析,读写分离分析,缓存分析等,然后发送给数据库,得到结果后适当处理,返回前台
5. 安装基础环境
可以使用 rpm , yarm , 下载编译完成压缩包解压使用,或者下载源码编译后使用
这里使用的是 http://dl.mycat.org.cn/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 解压后直接使用的 压缩包
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
其中 三个重要配置文件:
- schema.xml 定义逻辑库 表 分片节点等内容
- rule.xml 定义分片规则
- server.xml 定义用户以及系统相关变量,如端口等