文章目录
- 1.Mycat核心概念
- 1.1.Mycat介绍
- 1.2.Mycat的应用场景
- 1.3.Mycat结构概念
- 1.4.Mycat的原理
- 1.5.Mycat管理
- 2.部署Mycat
1.Mycat核心概念
1.1.Mycat介绍
Mycat是开源的、活跃的、基于JAVA语言编写的MySQL数据库中间件,可以把它看做是一个代理程序,开发人员可以像使用MySQL一样来使用Mycat,连接上Mycat就可以操作管理的数据库,无需知道底层到底有哪些数据库,每一台数据库都做了怎样的配置。
Mycat是一个开源的分布式数据库系统,在企业环境中,只要涉及分布式的数据库架构,大多数都会采用Mycat去实现,Mycat的核心功能有读写分离、分库分表等等。
Mycat不光可以支持MySQL数据库,还可以支持Oracle、SQLServer、DB2等等主流的数据库,还支持MongoDB这类的NoSQL数据库,对于使用者来说,无论使用的是哪一种数据库,在Mycat中都是一个传统的数据库,支持标准的SQL语句,对于开发人员来说可以大大减少开发难度,通过一个Mycat软件就可以很方面的管理。
Mycat相当于分发者,一个MySQL可以管理后端多个MySQL服务器或者是MySQL集群,通常情况下为了保证高可用环境,一般会准备两个Mycat,通过负载均衡产品形成负载均衡集群,Mycat不仅可以实现读写分离还可以实现分库分表以及容灾备份等等,让整个架构具有很强的灵活性。
1.2.Mycat的应用场景
Mycat发展到现在,使用的场景非常丰富,典型的应用场景有以下几种:
- 读写分离,配置最简单,支持读写分离,主从切换,高可用架构集群。
- 分库分表,对于超过1000w的数据进行分片,最大支持1000亿数据的分库分表。
- 多租户应用,每个程序都通过mycat链接到不同的数据库。
1.3.Mycat结构概念
在Mycat的结构中,分为逻辑结构和物理结构,在逻辑结构中包含:
- Schema逻辑库:通过逻辑库去关联真实的数据库,相当于调用,但是数据不存在Mycat,只是逻辑层面。
- Table逻辑表:与逻辑库概念一致,关联的是真实的表。
- 分片规则:通过一些策略,决定数据的读写操作应该路由到哪一个数据库节点。
- DataNode分片节点:分片节点会关联具体的Mycat节点。
在物理结构中包含的就是具体的数据库实例节点。
1.4.Mycat的原理
Mycat相当于一个中间件,用户通过Mycat去管理后端的数据库节点,可以实现读写分离、分库分表、高可用等机制。
在Mycat中,每当执行一条SQL语句时,Mycat会对这条SQL语句进行SQL解析、分片分析、路由分析、读写分离分析等操作,最终经过一系列的分析决定当前SQL语句路由到哪一个数据节点,数据库数据执行完毕后,如果返回的结果,会将结果返回给Mycat,由于数据分散存储在每个数据库节点中,Mycat收到数据后会对数据进行合并、聚合处理、排序处理、分页处理等操作,最终返回给客户端。
1.5.Mycat管理
Mycat默认开通2个端口,可以在server.xml中进行修改。
-
8066 数据访问端口,即进行 DML 和 DDL 操作。
-
9066 数据库管理端口,即 mycat 服务管理控制功能,用于管理mycat的整个集群状态
2.部署Mycat
1.安装java环境
[root@mysql-1 ~]# yum -y install java
2.安装mycat
[root@mysql-1 ~]# tar xf Mycat-server-1.6.5-release-20180117003034-linux.tar.gz -C /data/
[root@mysql-1 ~]# ll /data/mycat/
总用量 12
drwxr-xr-x 2 root root 190 7月 11 22:14 bin
drwxrwxrwx 2 root root 6 3月 1 2016 catlet
drwxrwxrwx 4 root root 4096 7月 11 22:14 conf
drwxr-xr-x 2 root root 4096 7月 11 22:14 lib
drwxrwxrwx 2 root root 6 1月 17 2018 logs
-rwxrwxrwx 1 root root 219 1月 17 2018 version.txt
3.配置环境变量
[root@mysql-1 ~]# vim /etc/profile
export MYCAT_HOME=/data/mycat
export PATH=$MYCAT_HOME/bin:$PATH
[root@mysql-1 ~]# source /etc/profile