【Mycat】- Mycat?你了解多少

1、前言

知其所以知其所以然,只知道用或者说只会用是远远不够的,我们需要走进去看一看,到底是何方神物,有什么神奇作用,让开发人员为之疯狂,为之痴迷,今天就用理论篇来重新认识一下MyCat;

2、Mycat是什么

Mycat是一个开源的面向企业应用开发的大数据库集群,在传统的数据库之上又融合了新型分布式数据仓库的新一代数据库产品;
一个中间件,数据库分库分表中间件,我们也可以理解为数据库代理,在架构体系中是位于数据库与应用之间的一个组件,对应用层透明,也就说数据库是感受不到MyCat的存在的,直接连接mysql数据库;

3、Mycat实现原理

可以简洁的总结两个字:拦截,为什么这么说呢?

  • Mycat通过拦截用户发过来的SQL语句,通过对语句进行特定的分析:分片分析、路由分析、读写分离分析、缓存分析等
  • 然后将分析过的SQL发送给后端的真实数据库
  • 并把返回结构进行一定的数据,最终返给用户

【Mycat】- Mycat?你了解多少

4、Mycat中概念

4.1 垂直切分(纵向切分)

把原本存储在一个数据库中的数据存储到多个数据库上,垂直从数据表结构进行拆分

优点:

  • 减少增量数据插入时的锁对查询的影响
  • 单表数量下降,进行查询操作时减少需要扫描的记录,单表单词查询所需检索行数变少,减少磁盘I/O

缺点

  • 无法解决单表数量太大的问题

4.2 水平切分(横向切分)

一个表中数据量过大时,按照某种规则将原本存储于一个表的数据分块存储到多个结构相同的表和不同的库中;

优点:

  • 单表并发能力提高了,磁盘I/O性能提高了
  • 高并发情况下,总表可以根据不同的查询,将并发压力分配到不同的小表中

缺点:

  • 无法实现表连接查询

4.3 逻辑库和逻辑表

逻辑库Schema-主要是针对垂直切分提供的概念
逻辑表table-主要是针对水平切分提供的概念

4.4 分片规则

  • 当控制数据的时候,如何访问物理database和table,就是访问dataHost和dataNode的算法
  • 在MyCat处理具体的数据CRUD时,如何访问dataHost和dataNode的算法,如:哈希算法
  • dataHost: 数据主机、dataNode:数据节点

5、Mycat的使用有哪些

5.1 读写分离

原理:

  • 主从模式,主数据库负责处理事务性增、删、改操作,从数据库负责处理查询操作
  • Mycat与数据库本身的复制功能想配合,解决读写分离的问题
  • 图示:

【Mycat】- Mycat?你了解多少

5.2 多数据源整合

【Mycat】- Mycat?你了解多少

5.3 分片-分库分表

Mycat通过一定的分片规则来实现分库分表

【Mycat】- Mycat?你了解多少

6、主从备份

Mycat可以实现数据的多重备份,以此来保证数据的安全,采用InnoDB数据库模板引擎,实现读写分离

主从备份的目的:

  • 实现主备模式:保证数据安全,尽量避免数据丢失的问题
  • 实现读写分离:通过使用不同的数据库模板引擎,实现读写分离,提高操作效率(InnoDB使用DML语法操作,MyISAMycat使用DQL语法操作)

这一篇主要是概念原理篇,到这里已经结束
感谢您的阅读,再会;