MyCat教程【简单介绍】

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离。

一、MyCat简介


1. 什么是MyCat


 MyCat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离。

 MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。

 MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。

 MyCat 官网: http://www.mycat.io/


2. MyCat的结构


20191015103242838.png


3. 使用MyCat的好处


3.1 数据量级


 单一的 MySQL 其数据存储量级和操作量级有限.

 Mycat 可以管理若干 MySQL 数据库,同时实现数据的存储和操作.


3.2 开源性质


Mycat 是 java 编写的中间件. 开源,免费.

有非常多的人和组织对 Mycat 实行开发,维护,管理,更新.

Mycat 版本提升较快,可以跟随环境发展.如果有问题,可以快速解决.

Mycat 有开源网站和开源社区.且有官方发布的电子书籍.

Mycat 是阿里原应用 corba 转型而来的.

3.3 市场应用


 MyCat 在互联网应用中占比非常高.


二、MyCat中的概念介绍


1. 切分


 逻辑上的切分. 在物理层面,是使用多库[database],多表[table]实现的切分.


1.1 纵向切分/垂直切分


 就是把原本存储于一个库的数据存储到多个库上。

 由于对数据库的读写都是对同一个库进行操作,所以单库并不能解决大规模并发写入的问题。例如,我们会建立定义数据库 workDB、商品数据库 payDB、用户数据库 userDB、日志数据库 logDB 等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。


优点


减少增量数据写入时的锁对查询的影响。

由于单表数量下降,常见的查询操作由于减少了需要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘 IO,时延变短。

缺点:无法解决单表数据量太大的问题。


1.2横向切分/水平切分


 把原本存储于一个表的数据分块存储到多个表上。

 当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,进行划分,然后存储到多个结构相同的表,和不同的库上。例如,我们 userDB 中的 userTable 中数据量很大,那么可以把 userDB 切分为结构相同的多个 userDB:part0DB、part1DB 等,再将 userDB 上的 userTable,切分为很多userTable:userTable0、userTable1 等,然后将这些表按照一定的规则存储到多个 userDB 上。


优点


单表的并发能力提高了,磁盘 I/O 性能也提高了。

如果出现高并发的话,总表可以根据不同的查询,将并发压力分到不同的小表里面。

缺点:无法实现表连接查询。


2. 逻辑库-Schema


 Mycat 中定义的 database.是逻辑上存在的.但是物理上是不存在的.主要是针对纵向切分提供的概念.


3. 逻辑表-table


 Mycat 中定义的 table.是逻辑上存在,物理上是不存在的.主要是针对横向切分提供的概念.


4. 默认端口

应用 端口
MySQL 3306
Mycat 8066
tomcat 8080
Oracle 1521
nginx 80
http 80
redis 6379


5. 数据主机 - dataHost


 物理 MySQL 存放的主机地址.可以使用主机名,IP,域名定义.


6. 数据节点 - dataNode


 配置物理的 database. 数据保存的物理节点.就是 database.


7. 分片规则


 当控制数据的时候,如何访问物理 database 和 table.就是访问 dataHost 和 dataNode 的算法. 在 Mycat 处理具体的数据 CRUD 的时候,如何访问 dataHost 和 dataNode 的算法.如:哈希算法,crc32 算法等.


相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
移动开发 安全
uniapp打包成H5遇到的坑,本地访问页面空白
uniapp打包成H5遇到的坑,本地访问页面空白
1875 0
|
移动开发 API
Uniapp解决app和H5跨域问题
Uniapp解决app和H5跨域问题
2989 0
Uniapp解决app和H5跨域问题
|
12天前
|
存储 JSON 安全
接口安全:签名、加密、防重放架构方案
本文详解接口安全三大核心防线:签名(防篡改/伪造)、加密(防窃听/泄露)、防重放(防复用攻击)。厘清三者边界与协同逻辑,提供生产级规范、主流算法选型及完整Java代码实现,助开发者构建真正安全的全链路接口防护体系。
408 2
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
1160 3
Mysql高可用架构方案
|
Java
Java“NullPointerException”解决
Java中的“NullPointerException”是常见的运行时异常,发生在尝试使用null对象实例的方法或字段时。解决方法包括:1. 检查变量是否被正确初始化;2. 使用Optional类避免null值;3. 增加空指针检查逻辑。
2593 2
|
12月前
|
消息中间件 存储 Kafka
RocketMQ实战—4.消息零丢失的方案
本文分析了用户支付完成后未收到红包的问题,深入探讨了RocketMQ事务消息机制的实现原理及其在确保消息零丢失中的作用。首先,通过全链路分析发现消息可能在推送、存储或消费环节丢失。接着,介绍了RocketMQ事务消息机制如何通过half消息、本地事务执行及回调确认来保证消息发送成功,并详细解析了其底层原理,如half消息对消费者不可见、rollback与commit操作等。同时,对比了同步重试方案,指出其在复杂场景下的局限性。
RocketMQ实战—4.消息零丢失的方案
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
453 7
|
消息中间件 存储 负载均衡
|
canal 消息中间件 监控
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
2384 0
[从零单排canal 02] canal 集群版+admin控制台 最新搭建姿势(基于1.1.4版本)
|
消息中间件 Java API
MQ产品使用合集之RocketMQ dledger集群模式的dledgerpeers端口是集群之间通讯吗
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
360 0

热门文章

最新文章