MyCat理论知识总结

 

是什么?

数据库中间件,不存储数据。多租户环境下共用相同的系统或者程序组件,但是数据库是不同的。确保每个用户数据的隔离性。就是说处于不同租户的用户是看不到对方的信息的。

为什么?

  1. 作为分布式数据库中间件使用
  2. 实现后端数据库的读写分离及负载均衡
  3. 简单。新增加租户不用改代码只需要改配置

基本元素

逻辑库(schema)

  1. 对应用来说相当于mysql中的数据库
  2. 逻辑库对应后端多个实际数据库
  3. 逻辑库不存储数据

逻辑表(table)

  1. 对应用来说相当于mysql中数据表
  2. 逻辑表对应后端多个实际数据库中的表
  3. 逻辑表不存储数据

类别

  1. 分片表与非分片表,分片表是经过水平切分后的表,数据不存放在一个数据表中,将所有数据表中的数据进行整合才是完整的数据。
  2. 全局表,在所有分片中都存在的表
  3. ER关系表,按照ER关系进行分片的表

安装

单机

安装mycat -server http://www.mycat.io/

安装jdk(1.7以上)

集群

准备工具

  1. Mycat-server-6-RELEASE-20161028204710-linux.tar
  2. openssl-1.0.1g.tar
  3. keepalived-1.2.1tar

集群部署图

集群部署图的理解:

1、keepalived 和 haproxy (请求转发,负载均衡)必须装在同一台机器上(如 192.168.22.207 机器上,keepalived 和

haproxy 都要安装),keepalived 负责为该服务器抢占 vip(虚拟 ip),抢占到 vip 后,对该主机的访问可以通过原来的 ip(192.168.22.207)访问,也可以直接通过 vip(192.168.22.143)访问。haproxy和mycat不必安装在同一台机器上。

2、192.168.22.218 上的 keepalived 也会去抢占 vip,抢占 vip 时有优先级,配置 keepalived.conf 中的(priority 150 #数值愈大,优先级越高,192.168.22.218 上改为 120,master 和 slave 上该值配置不同)决 定。但是一般哪台主机上的 keepalived 服务先启动就会抢占到 vip,即使是 slave,只要先启动也能抢到。

3、haproxy 负责将对 vip 的请求分发到 mycat 上。起到负载均衡的作用,同时 haproxy 也能检测到 mycat是否存活,haproxy 只会将请求转发到存活的 mycat 上。

4、如果一台服务器(keepalived+haproxy 服务器)宕机,另外一台上的 keepalived 会立刻抢占 vip 并接管服务。如果一台 mycat 服务器宕机,haporxy 转发时不会转发到宕机的 mycat 上,所以 mycat 依然可用。

下面这张图是HAProxy是单机的。

搭建过程

https://blog.csdn.net/l1028386804/article/details/75331934#t6

核心配置文件

schema.xml 

定义逻辑库

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema> 

 <!—配置需要分片的表--> 
<table name=“tuser” dataNode=”dn1”/> 

</schema> 

schema 标签用于定义MyCat实例中的逻辑库,MyCat可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema 标签来划分这些不同的逻辑库。   

 dataNode标签 

<dataNode name="dn1" dataHost="lch3307" database="db1" ></dataNode> 

dataNode 标签定义了 MyCat中的数据节点,也就是我们通常说所的数据分片。一个dataNode  对应实际的一个database(实际mysql数据库)dataHost是对应的物理主机,比如咱们的58,59。

server.xml 

mycat用户信息

<user name="test"> <property name="password">test</property>  <property name="schemas">TESTDB</property>  <property name="readOnly">true</property>  <property name="benchmark">11111</property> <property name="usingDecrypt">1</property> 
 <privileges check="false"> 
   <schema name="TESTDB" dml="0010" showTables="custome/mysql">     ---- 对应schema中的逻辑库
  <table name="tbl_user" dml="0110"></table> 
  <table name="tbl_dynamic" dml="1111"></table> 
   </schema>  
 </privileges> 
</user> 
server

 rule.xml

逻辑表(水平分片表)中分片表切分规则

  1. 配置水平分片的分片规则
  2. 配置分片规则所对应的分片函数

<tableRule name="rule1">
<rule>

<columns>id</columns>

<algorithm>func1</algorithm>

</rule>

</tableRule>

<function name="func1" class="io.mycat.route.function.PartitionByLong">    ----对应上面的<algorithm>标签

<property name="partitionCount">8</property>

<property name="partitionLength">128</property>

</function>

核心技术

分库

Mycat使用前后对比

SpringCloud项目

 

SSM项目

auth配置使用多租户

读写分离

结合文档分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值