Mycat简介:
1.1Mycat含义
简单的说,MyCAT就是:
一个彻底开源的,面向企业应用开发的“大数据库集群”
支持事务、ACID、可以替代Mysql的加强版数据库
一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
1.2 Mycat的关键特性
支持 SQL 92标准 支持Mysql集群,可以作为Proxy使用 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群 自动故障切换,高可用性 支持读写分离,支持Mysql双主多从,以及一主多从的模式 支持全局表,数据自动分片到多个节点,用于高效表关联查询 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询 多平台支持,部署和实施简单
1.3Mycat架构
如图所示:MyCAT使用Mysql的通讯协议模拟成了一个Mysql服务器,并建立了完整的Schema(数据库)、Table (数据表)、User(用户)的逻辑模型,
并将这套逻辑模型映射到后端的存储节点DataNode(MySQL Instance)上的真实物理库中,这样一来,
所有能使用Mysql的客户端以及编程语言都能将MyCAT当成是Mysql Server来使用,不必开发新的客户端协议。
1.4 Mycat 解决的 问题
性能问题 数据库连接过多 E-R分片难处理 可用性问题 成本和伸缩性问题
1.5Mycat 对多数据的支持
1.6 分片策略
MyCAT支持水平分片与垂直分片:
水平分片:一个表格的数据分割到多个节点上,按照行分隔。
垂直分片:一个数据库中多个表格A,B,C;A存储到节点1上,B存储到节点2上,C存储到节点3上。
这是重点——————————————————————————————
mycat通过定义表的分片规则来实现分片,每一个表格可以捆绑一个分片规则,每个分片规则
指定一个分片字段并绑定一个函数,来实现动态分片算法。
schema:逻辑库,与mysql中的Database(数据库)对应,一个逻辑库中定义了所包含的table。
Table表:就是物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明所存储的逻辑数据节点。
DataNode:在此可以指定表的分片规则
DataNode:Mycat的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上。
DataSource:定义某个物理库的访问地址,用于捆绑到Datanode 上
Mycat安装
2.1 Mycat 下载
Mycat下载可以到官网下载也可到GitHub下载
官方网站:http://www.mycat.org.cn/
github地址https://github.com/MyCATApache
2.2Mycat安装
Mycat安装,需要安装jdk,也要安装mysql
2.2.1上传并解压
把MyCat的压缩包上传到linux服务器,并且解压
[root@localhost local]# tar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
解压到了/usr/loca
2.2.2 启动
/usr/local/mycat/bin/mycat start 启动 /usr/local/mycat/bin/mycat stop 停止 /usr/local/mycat/bin/mycat restart 重启
2.2.3连接
可以使用MySQL自带的客户端进行连接,也可以使用可视化软件进行连接 mycat的默认的账号和密码都是user 客户端连接 mysql -uuser -puser -P8066 -h192.168.82.110 (注意:端口号前的P为大写的) 注意:可以使用mysql的客户端直接连接mycat服务。默认服务端口为8066
别忘了去防火墙那里开一下的端口号
firewall-cmd --permanent --add-port=8066/tcp
firewall-cmd --reload 链接不上,可以执行:vi /etc/my.cfg 在mysqld节点下添加: skip-name-resolve
2.2.4成功的界面