【MyCat2】学习笔记(一)

一、概念、原理、作用

1.1、MyCat是什么

MyCat是数据库中间件

  1. 数据库中间件
    中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。
    例子:Tomcat,web中间件
    数据库中间件:连接java应用程序和数据库
  2. 为什么要用Mycat
    ①Java与数据库紧耦合
    ②高访问量高并发对数据库的压力大
    ③读写请求数据不一致

1.2、MyCat的功能

  1. 读写分离
    在这里插入图片描述

  2. 数据分片:垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)
    在这里插入图片描述

  3. 多数据源整合
    在这里插入图片描述

1.3、原理

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

二、安装启动

2.1、安装

官网下载地址
需要下载两个文件

  1. install-template/mycat2-install-template-1.20.zip(看自己想要版本)
  2. http://dl.mycat.org.cn/2.0/1.21-release/ (一定要下载最新的jar包)
    下载所需的mycat2的jar包,一般大小为100mb 的一个 jar文件
    把这个jar放进解压的zip中的mycat\lib文件夹下

Linux 修改相关文件夹和文件的权限为 777
在这里插入图片描述

2.2、更改配置

更改conf文件夹下的datasourcescd /www/wwwroot/mycat2.0/conf/datasources

2.3、启动

cd mycat/bin
./mycat start
./mycat status
./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mvcat install 添加到系统自动启动(暂未实现)
./mvcat· remove·取消随系统自动启动((暂未实现)
./mycat restart·重启服务
./mycat pause 暂停,
/mycat status 查看启动状态

2.4、登入

输入mysql -uroot -p123456 -h[ip] -P8066(我是访问服务器)

三、Mycat2相关概念

3.1、概念描述

  1. 分库分表
    按照一定规则把数据库中的表拆分为多个带有数据库实例,物理库,物理表访问路径的分表。
    分库:一个电商项目,分为用户库、订单库等等。’
    分表:一张订单表数据数百万,达到MySQL单表瓶颈,分到多个数据库中的多张表
  2. 逻辑库
    数据库代理中的数据库,它可以包含多个逻辑表。
    解Mycat.里定义的库,在逻辑上存在,物理上在MySQL里并不存在。有可能是多个MySQL数据库共同组成一个逻辑库。类似多个小孩叠罗汉穿上外套,扮演一个大人
  3. 逻辑表
    数据库代理中的表,它可以映射代理连接的数据库中的表(物理表)
    Mvcat里定义的表,在逻辑上存在,可以映射真实的MySQL数据库的表,可以一对一,也可以一对多。·
  4. 物理库
    数据库代理连接的数据库中的库
    MySQL真实的数据库。
  5. 物理表
    数据库代理连接的数据库中的表
    MySQL真实的数据库中的真实数据表。
  6. 拆分键
    即分片键,描述拆分逻辑表的数据规则的字段
    比如订单表可以按照归属的用户id拆分,用户id就是拆分键
  7. 物理分表
    指已经进行数据拆分的,在数据库上面的物理表,是分片表的一个分区
    多个物理分表里的数据汇总就是逻辑表的全部数据(
  8. 物理分库
    一般指包含多个物理分表的库
    参与数据分片的实际数据库
  9. 分库
    一般指通过多个数据库拆分分片表,每个数据库一个物理分表,物理分库名字相同
    分库是个动作,需要多个数据库参与。就像多个数据库是多个盘子,分库就是把一串数据葡萄,分到各个盘子里,而查询数据时,所有盘子的葡萄又通过Mycat2组成了完整的一串葡萄。
  10. 分片表,水平分片表
    按照一定规则把数据拆分成多个分区的表I在分库分表语境下,它属于逻辑表的一种
    安按照规则拆分数据,上个例子中的那串葡萄。
  11. 单表
    没有分片,没有数据冗余的表,-
    解读:没有拆分数据,也没有复制数据到别的库的表。
  12. 全局表,广播表
    每个数据库实例都冗余全量数据的逻辑表.
    它通过表数据冗余,使分片表的分区与该表的数据在同一个数据库实例里,达到 join运算能够直接在该数据库实例里执行.它的数据一致一般是通过数据库代理分发SQL实现.也有基于集群日志的实现
    例如系统中翻译字段的字典表,每个分片表都需要完整的字典数据翻译字段。-

3.2、配置文件

3.2.1、server

在conf目录下
默认即可

3.2.2、Users

在conf目录下
命名方式:{用户名}.user.json
配置内容:

字段含义
ip客户端访问ip,建议为空null,填写后会对客户端的ip进行限制
username用户名
password密码
isolation设置初始化的事务隔离级别
transactionType事务类型

设置初始化的事务隔离级别:
READ_UNCOMMITTED: 1
READ_COMMITTED : 2
REPEATED_READ:3【默认】
SERIALIZABLE: 4

事务类型:
proxy:本地事务,在涉及大于1个数据库的事务, commit阶段失败会导致不一致,但是兼容性最好
xa:事务,需要确认存储节点集群类型是否支持Xa
可以通过语句实现切换
set transaction policy ='xa'
set transaction policy ='proxy'
可以通过语句查询
SELECT @@transaction_policy

3.2.3、datasource

在conf目录下
命名方式:{数据源名字}.datasource.json
配置内容:

字段含义
dbType数据库类型
name用户名
password密码
type数据源类型,默认JDBC
url访问数据库地址
idleTimeout空闲连接超时时间
initSals初始化sal
initSalsGetConnection对于jdbc每次获取连接是否都执行initSqlse
instanceType配置实例只读还是读写
weight负载均衡权重

配置实例只读还是读写:
READ_WRITE
READ
WRITE

3.2.4、cluster

在conf目录下
命名方式:{集群名称}.cluster.json
配置内容:

字段含义
masters配置多个主节点,在主挂的时候会选一个检测存活的数据源作为主节点
replicas配置多个从节点
timerMysQL集群心跳周期,配置则开启集群心跳,Mycat主动检测主从延迟以及高可用主从切换
clusterType集群类型
readBalanceType查询负载均衡策略
switchType切换类型

集群类型:
SINGLE_NODE:单一节点
MASTER_SLAVE:普通主从
GARELA_CLUSTER:.garela cluster/PXC集群
MHA: MHA集群
MGR: MGR集群

查询负载均衡策略:
BALANCE_ALL(默认值):获取集群中所有数据源
BALANCE_ALL_READ:获取集群中允许读的数据源
BALANCE_READ_WRITE:获取集群中允许读写的数据源,但允许读的数据源优先
BALANCE_NONE:获取集群中允许写数据源,即主节点中选择

切换类型:
NOT_SWITCH:不进行主从切换
WITCH:进行主从切换

3.2.5、schema

在conf目录下
命名方式:{库名}.schema.json
配置内容:

字段含义
schemaName逻辑库名
targetName目的数据源或集群
targetName自动从prototype目标加载test库下的物理表或者视图作为单表, prototype必须是mysql服务器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值