1、MyCat概述
从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是读写分离、数据分片(垂直拆分分库、水平拆分分表、垂直拆分+水平拆分)和多数据源整合。
Mycat发展到目前版本,已经不在是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB、NOSQL方式等存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在Mycat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅度降低开发难度,提升开发速度,在测试阶段,可以将一表定义为任何一种Mycat支持的存储方式,比如MySQL的MyASM表、内存表、或者MongoDB、LeveIDB以及号称是世界上最快的内存数据库MemSQL上。
2、用途&环境介绍
- 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换。
- 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片。
- 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化。
- 报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
- 代替Hbase,分析大数据。
- 询的记录需要在3秒内查询出来结果, 除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择。
- 该实现需要先完成MySQL的主从复制的相关复制结构操作。才能进行下一步操作。主从复制的相关内容,参考《【MySQL专题】02、性能优化之主从复制》。
PS:本地服务器采用的主从复制结构模式为一主一从的复制结构
- Master:192.168.202.128
- Slave:192.168.202.129
- Mycat:192.168.202.130
3、安装MyCat
- JDK安装&配置文档:
参考:文档Linux -Centos 常见配置(静态IP、YUM...
链接:http://note.youdao.com/noteshare?id=f2d067e276add283a4db09e5536ff5c9&sub=WEB1e60f94040bd9e345cb536fbd846c9c9 - Mycat安装
- 下载Mycat
- 解压&环境变量
解压mycat,根据自己部署规则,本人选择将mycat部署在/usr/local/目录下 ,所以我解压mycat后,移动mycat 到/usr/local/目录下,由于为了方便我们日常管理mycat,对其进行环境变量配置,分别需要执行如下命令操作。(这里就不展示命令的执行过程呢) - Mycat配置
在配置mycat之前,我们需要在mysql主复制节点mysql-master节点上,创建两个mysql用户,用于mysql数据的写入和读。(y由于mysql数据库刚安装,默认mysql的root账号密码为空,所以这里登陆就不需要密码登陆,若需要管理root账号,可以详细去配置root账号的安全权限问题,这里就不一一介绍呢),登陆成功后,执行相应的账号的创建、授权等(注意:生产环境要尽量减少权限,注意安全问题)
接下来,我们进入主题,mycat的文件配置。首先介绍一下mycat的目录结构(如果缺失tree命令,可以通过yum install tree -y 进行安装,这里不详细介绍,本文核心是介绍mycat部署):
conf目录下存放的配置文件
server.xml是Mycat服务器参数调整和用户授权的配置文件
schema.xml是逻辑库定义和表以及分片定义的配置文件,rule.xml是分片规则的配置文件, 分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改,需要重启mycat或者通过9066端口reload。
lib目录下主要存放mycat依赖的一些jar文件。
logs:日志存放在logs/mycat.log中,每天一个文件
日志配置是在conf/log4.xml中,根据自己的需要可以调整输出级别.
注意:Linux下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误!
配置核心server.xml 和 schema.xml文件,配置详情分别如下(本文档介绍的是基础版的mycat运用,若需要更深程度的使用,可以深度研究 mycat相关知识或者持续关注文档更新):
关于schema.xml文件部分参数说明,不同参数配置,代表mycat采取的机制策略不一样:
4、启动MyCat
由于我们配置了mycat的环境变量,所以可以直接使用mycat命令操作:
直接执行mycat命令可以看出,mycat提供了 指定相关命令操作,服务器的启动、停止,重启等具体命令操作,这里我们需要启动mycat,直接执行mycat start 即可。
5、验证
通过刚创建两个账号,在第三方工具连接mycat,若能成功,表示配置完成;
6、思考
- Mycat 如何进行高可用服务架构搭建?
- Mycat中间件宕机如何维护?
- Mycat 中间件的另一特性--数据拆分如何实现?
- Mycat 中间件如何多语言?
- Mycat 中间件的运行原理和实现原理?