中间件之Mycat
一、概念
- 介绍
Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在
Mycat不负责存储数据,只是逻辑上多数据进行分处理,实际存储数据的为后端数据库。
Mycat拦截了用户发送过来的SQL 语句,对SQL 语句做了一些特定的分析: 如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL 发往后端的真实数据库并将返回的结果做适当的处理,最终再返回给用户。
- 分片
简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个 数据库(主机) 上面,以达到分散单台设备负载的效果。 数据的 切分(Sharding) 根据其切分规则的类型,可以分为两种切分模式。
一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切分可以称之为数据的垂直(纵向)切分。
另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。

- 逻辑库(schema)
MyCat是一个数据库中间件,通常对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。
- 逻辑表(table)
既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。
- 分片节点(dataNode)
数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是 分片节点(dataNode)。
- 节点主机(dataHost)
数据切分后,每个 分片节点(dataNode) 不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个 分片节点(dataNode) 所在的机器就是 节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的 分片节点(dataNode)均衡的放在不同的 节点主机(dataHost)。
- 分片规则(rule)
前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。
二、配置文件
1.server.xml :作为MyCat中最重要的配置文件之一,涵盖了MyCat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置。
2.schema.xml :对应的物理数据库和数据库表的配置
3.rule.xml :分片(分库分表)规则
schema:标签用于定义Mycat实例中的逻辑库
table:标签定义了MyCat中的逻辑表,rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片 5000001-10000000 为第2片....
dataNode:标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost:标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
示例:

schema.xml





rule.xml

server.xml


中间件之Mycat的更多相关文章
- 分布式mysql中间件(mycat)
1. MyCAT概述 1.1 背景 随着传统的数据库技术日趋成熟.计算机网络技术的飞速发展和应用范围的扩充,数据库应用已经普遍建立于计算机网络之上.这时集中式数据库系统表现出它的不足: (1)集中 ...
- 数据库中间件之mycat安装部署(一)
在学习数据库中间件前,我们先抛出三个问题 1.数据库数据量不大,但并发读写操作很大,应该怎么办? 此时我们首先考虑使用缓存中间件来减轻读压力,如果不能满足则考虑数据库读写分离,此时就会引入新的问题,这 ...
- 数据库分库分表中间件:Mycat;分布式数据库;mysql的分布式事务
官网:http://mycat.io/,里面有电子书籍可以下载:http://www.mycat.io/document/mycat-definitive-guide.pdf 旧版本下载地址:http ...
- 数据库中间件之mycat读写分离
mycat核心概念 逻辑库 mycat中定义.管理的数据库 逻辑表 逻辑库中包含的需分库分表存储的表 datanode 数据节点(分片节点),逻辑表分片的存放节点 datahost 数据主机(节点主机 ...
- 03中间件mycat对pxc集群的分片处理
安装第二个pxc集群 作为mycat的第二个分片 直接拷贝其中的一个虚拟机,然后还原到最初的状态,这样会小很多,启动改一下IP和基础配置,然后再次拷贝这个虚拟机两份改IP重启即可 正常安装pxc集群即 ...
- Mycat 数据库分库分表中间件
http://www.mycat.io/ Mycat 国内最活跃的.性能最好的开源数据库中间件! 我们致力于开发高性能的开源中间件而努力! 实体书Mycat权威指南 »开源投票支持Mycat下载 »s ...
- 分布式数据库中间件Mycat百亿级数据存储(转)
此文转自: https://www.jianshu.com/p/9f1347ef75dd 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,如高并发下的假死,心跳连接的故障,只实现 ...
- 数据库路由中间件MyCat - 背景篇(2)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MyCat的前世今生 如前文所说,Amoeba.Cobar.MyCat等属于同宗一脉.若Amoeba能继续下 ...
- 华为云分布式数据库中间件DDM和开源MyCAT对比
前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...
- 分布式数据库中间件 MyCat 搞起来!
关于 MyCat 的铺垫文章已经写了三篇了: MySQL 只能做小项目?松哥要说几句公道话! 北冥有 Data,其名为鲲,鲲之大,一个 MySQL 放不下! What?Tomcat 竟然也算中间件? ...
随机推荐
- 【Azure 应用服务】App Service / Function App 修改系统时区为中国时区的办法(Azure中所有服务的默认时间都为UTC时间,转换为北京时间需要+8小时)
问题描述 在Azure的 App Service / Function App 服务中,如果是在Windows系统中,可以通过添加Application Setting来转换为中国时间(WEBSITE ...
- RocketMQ—RocketMQ集成SpringBoot
RocketMQ-RocketMQ集成SpringBoot 新建生产者的boot项目和消费者的boot项目,pom文件重点如下: <dependencies> <dependency ...
- C++socket服务器与客户端简单通信流程
服务器和客户端简单通信的流程,做一个简单的复习: 1.服务器创建的流程 代码如下,各个重要函数已经写注释: #include <iostream> // 推荐加上宏定义 #define W ...
- vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案
vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案 先安装库 https://www.npmjs.com/package/js-cookie 再安装类型 h ...
- 摆脱鼠标系列 - vscode 花括号 开始结束 间的跳转 Ctrl + Shift + \
为什么 摆脱鼠标系列 - vscode 花括号 开始结束 间的跳转 Ctrl + Shift + \ 快速移动到下一个 注意有时候输入法会有问题 因为 Ctrl + Shift 是切换输入法,所以回头 ...
- 测试打包失败 已解决 分析过程 - 关键字 Jenkins nexus package-lock.json npm install build
Jenkins 打包失败 npm run build 总是失败,每次失败报错还不一样. 然后 npm install 每次安装 还总有包超时 MobaXterm1_CHS1 SSH 链接,手工安装也不 ...
- WOX 和 everything 差不多,挺不错也
WOX 和 everything 差不多,挺不错也
- docker如何以root身份登录
有时候我们需要进入docker容器时以root身份进入,这边汇总了两种方式如下 第一种 docker exec -it --user=root container_id /bin/bash 第二种 d ...
- 大年学习linux(第六节---软件安装)
六.软件安装 rpm RPM软件包的管理工具 补充说明 rpm命令 是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功 ...
- 文心一言 VS 讯飞星火 VS chatgpt (216)-- 算法导论16.2 3题
三.假定在 0-1 背包问题中,商品的重量递增序与价值递减序完全一样.设计一个高效算法求此背包问题的变形的最优解,证明你的算法是正确的.如果要写代码,请用go语言. 文心一言: 在0-1背包问题中,如 ...