Mycat初级使用解析

Mycat介绍:是什么:

* 数据库中间件,前身是阿里的cobar;

作用:

  • 读写分离
  • 数据分片 垂直拆分 水平拆分 垂直加水平拆分
  • 多数据源整合

垂直加水平拆分结构图:

在这里插入图片描述
原理:
1. Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,
2. 首先对 SQL 语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,
3. 然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户;
在这里插入图片描述
效果作用:
* 这种方式把数据库的分布式从代码中解耦出来,程序员察觉不出来后台使用mycat还是mysql。

读写分离:

原理图:
在这里插入图片描述
配置步骤图:
在这里插入图片描述
balance:(负载均衡类型,目前的取值有4 种)
1. balance=“0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance=“1”,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
3. balance=“2”,所有读操作都随机的在 writeHost、readhost 上分发。
4. balance=“3”,所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

分库:

原理图:
在这里插入图片描述
配置步骤图:
在这里插入图片描述

分表:

原理图:
在这里插入图片描述
配置步骤图:
在这里插入图片描述
ER表:
* 为了相关联的表的行尽量分在一个库下;

全局表:
* 设定为全局的表,会直接复制给每个数据库一份,所有写操作也会同步给多个库。
* 所以全局表一般不能是大数据表或者更新频繁的表;
* 一般是字典表或者系统表为宜。

全局序列(三种方式):
1. 本地文件(不推荐)
2. 数据库序列方式(推荐)
3. 时间戳方式(不推荐,18位id较长,占内存)
4. 自主生成

	* 根据业务逻辑组合;
	* 可以利用 redis的单线程原子性 incr来生成序列;

数据库序列方式原理:

* 利用数据库中的一个表 来进行计数累加。
* 但是并不是每次生成序列都读写数据库,这样效率太低
* mycat会预加载一部分号段到mycat的内存中,这样大部分读写序列都是在内存中完成的。
* 如果内存中的号段用完了 mycat会再向数据库要一次。

问:那如果mycat崩溃了 ,那内存中的序列岂不是都没了?
* 是的。如果是这样,那么mycat从新启动后会向数据库申请新的号段,原有号段会弃用。
* 也就是说如果mycat重启,那么损失是当前的号段没用完的号码,但是不会因此出现主键重复。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值