从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

    • Mybatis

    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

      • MyCat2-尚硅谷
      • MyCat是什么,为什么要用
        • 是什么
        • 官网地址
        • 能干什么
        • 原理
        • 新旧版本对比
      • 搭建环境
      • MyCat概念
      • MyCat的配置文件
      • 一主一从复制
      • 一主一从读写分离
      • 双主双从复制方案
      • 分库分表
      • MyCat安全设置
      • Mycat2-UI
      • MyCat
    • Lombok

    • 主流框架
  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • 主流框架
  • MyCat
2023-06-28
目录

MyCat是什么,为什么要用

# 10.MyCat是什么,为什么要用

介绍下MyCat   ‍   ‍

# 第一章 入门概述

# 是什么

Mycat 是数据库中间件。

先说说什么是中间件:中间件是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。例子:web中间件(Tomcat,Nginx等),消息中间件。

数据库中间件:连接 Java 应用程序和数据库

为什么要用Mycat?首先我们来看没有MyCat时的情况:

  • Java与数据库紧耦合。如果搭建集群,查询用这个库,写用另一个库,也是紧耦合。
  • 高访问量高并发对数据库的压力。
  • 读写请求数据不一致。比如有些系统是读请求多,写请求少(例如在商城经常需要浏览商品,最后才下单)

而如果用了MyCat呢?

  • 有了 MyCat,Java应用就不用担心数据库配置了 ,只需访问MyCat即可。
  • 搭建MySQL集群,例如3个
  • 指定某一台MySQL写,其他数据库同步

相当于MyCat是一个逻辑数据库,对于Java应用来说,只有一个数据源,就比如Nginx分发给多台主机

‍

数据库中间件对比

  • Cobar属于阿里B2B事业群,始于2008年,在阿里服役3年多,接管3000+个MySQL数据库的schema, 集群日处理在线SQL请求50亿次以上。由于Cobar发起人的离职,Cobar停止维护。
  • Mycat是开源社区在阿里cobar基础上进行二次开发,解决了cobar存在的问题,并且加入了许多新的功能在其中。青出于蓝而胜于蓝。官网:http://www.mycat.org.cn/
  • OneProxy基于MySQL官方的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件,不开源。舍弃了一些功能,专注在性能和稳定性上。
  • kingshard由小团队用go语言开发,还需要发展,需要不断完善。
  • Vitess是Youtube生产在使用,架构很复杂。不支持MySQL原生协议,使用需要大量改造成本。
  • Atlas是360团队基于mysql proxy改写,功能还需完善,高并发下不稳定。
  • MaxScale是mariadb(MySQL原作者维护的一个版本) 研发的中间件
  • MySQLRoute 是 MySQL官方Oracle公司发布的中间件
  • ......

‍

# 官网地址

官网:MyCat2 (opens new window)

GitHub:MyCATApache/Mycat (opens new window)

Gitee:Mycat2 (opens new window)

‍

# 能干什么

1、读写分离。当访问量大的时候,一台数据库不足以支撑,此时可以再搭建一个数据库,由2台数据库提供访问;但只有一台主机提供写请求(避免两个数据库的数据不一致):

​

​

如果主机挂了怎么办?可以再搭建一个主从,实现双主双从结构。首先搭建单主单从,后续再搭建双主双从:

​

‍

​

2、数据分片

当一个表,数据达到千万级别,查询效率会变的很低;此时我们可以拆分该表:

  • 垂直拆分:分库,每一个库分别存不同的表
  • 水平拆分:将一个表拆分成几个表
  • 垂直+水平拆分:分库分表

拆分后,如果在 Java 程序里去指定该查询哪个库的哪个表,那么是也太不方便了,而且是紧耦合。这时我们可以使用MyCat中间件。

​

‍

‍

‍

3、多数据源整合。

有时候我们不仅仅会用到一种数据源,有时候还会使用Redis、Mongodb等;此时我们也可以使用MyCat,针对不同的请求使用,由MyCat分发给对应的数据源。

比如关键数据用多主,常规数据用主从切换,一些只存储一段时间的日志类数据等

​

​

# 原理

MyCat功能这么强大,它的原理很复杂吗?MyCat 的原理中最重要的一个动词是"拦截",它拦截了用户发送过来的 SQL 语句,然后对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

比如我们用了分表技术,根据prov字段差分了3个库,如果我要查询zhejiang的数据,MyCat就会去查询DB1:

​​

这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用Mycat 还是 MySQL。

‍

‍

# 新旧版本对比

MyCat2 和之前的版本对比如下(内容来自官网文档Mycat1.x与Mycat2功能对比 (opens new window)):

功能 1.6 2
多语句 不支持 支持
blob值 支持一部分 支持
全局二级索引 不支持 支持
任意跨库join(包含复杂查询) catlet支持 支持
分片表与分片表JOIN查询 ER表支持 支持
关联子查询 不支持 支持一部分
分库同时分表 不支持 支持
存储过程 支持固定形式的 支持更多
支持逻辑视图 不支持 支持
支持物理视图 支持 支持
批量插入 不支持 支持
执行计划管理 不支持 支持
路由注释 支持 支持
集群功能 支持 支持更多集群类型
自动hash分片算法 不支持 支持
支持第三方监控 支持mycat-web 支持普罗米斯,kafka日志等监控
流式合拼结果集 支持 支持
范围查询 支持 支持
单表映射物理表 不支持 支持
XA事务 弱XA 支持,事务自动恢复
..... ..... .....
在GitHub上编辑此页 (opens new window)
上次更新: 2023/6/28 11:11:51
MyCat2-尚硅谷
搭建环境

← MyCat2-尚硅谷 搭建环境→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式