mycat分库分表搭建

Mycat管理mysql数据库读写分离初步整理介绍

  • 环境介绍:

设备ip:10.14.32.91~93 root Nuc#2140

Mysql版本:8.0.17    root 123456   三台都是此用户名密码,服务器位于绿区

Mycat版本:1.6.7.1

Jdk版本:1.8._171

如上图所示,本环境中mysql读写分离中91为master节点,92为slave节点,93为mycat部署节点,其中91/92读写分离,并且一同作为mycat的datanode节点用于存放分片数据。

二、mycat概念介绍与配置文件

       1、Mycat中的重要概念

a,逻辑表 既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可 以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构                 成。

b, 分片表 分片表,是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所 有分片构成了完整的数据。 例如在 mycat 配置中的 t_node 就属于分片表,数据按照规则被     分到 dn1,dn2 两个分片节点(dataNode)上。

c, 非分片表 一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的,非分片是相对分片表来说的,就是那 些不需要进行数据切分的表。 如下配置中 t_node,只存在于分片节点(dataNode)dn1 上。    

d,ER 表 关系型数据库是基于实体关系模型(Entity-Relationship Model)之上,通过其描述了真实世界中事物与关系, Mycat 中的 ER 表即是来源于此。根据这一思路,提出了基于 E-R 关系的数据分片策略,子表的记录与所关联的 父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据 Join 不会跨库操 作。 表分组(Table Group)是解决跨分片数据 join 的一种很好的思路,也是数据切分规划的重要一条规则。

e, 全局表 一个真实的业务系统中,往往存在大量的类似字典表的表,这些表基本上很少变动,字典表具有以下几个特 性: • 变动不频繁; • 数据量总体变化不大; • 数据规模不大,很少有超过数十万条记录。 对于这类的表,在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关 联,就成了比较棘手的问题,所以 Mycat 中通过数据冗余来解决这类表的 join,即所有的分片都有一份数据的拷 贝,所有将字典表或者符合字典表特性的一些表定义为全局表。 数据冗余是解决跨分片数据 join 的一种很好的思路,也是数据切分规划的另外一条重要规则。

f,分片节点(dataNode) 数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点(dataNode)。

j, 节点主机(dataHost) 数据切分后,每个分片节点(dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库, 这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制, 尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)。

h, 分片规则(rule) 前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到 某个分片的规则就是分片规则,数据切分选择合适的分片规则非常重要,将极大的避免后续数据处理的难度。

       2、Mycat中最重要的三个配置文件:

a,schema.xml用于设置mycat的逻辑库,表,数据节点,dataHost等内容。配置mycat管理的表的分库分表信息

b,rule.xml配置schema.xml中用到的控制分表的分表规则或者算法的配置

c,server.xml主要是配置与后端真实数据库的连接信息

三、后端使用与效果展示

1、web端连接配置

如上图所示,我们在后端代码链接的时候配置93的ip以及8066端口,只需要将mysql的连接修改为mycat的ip以及端口即可,连接mycat服务,并且对mycat进行CRUD操作。

       2、效果展示

a,我们将users表配置为了分片表,而user_address表业务上与users强相关我们配置成了ER表,data_dirtionary表我们配置成了全局表

       b,我们对全局表data_dirtionary进行插入操作可以分别看到在各个DataNode(91,92)上均产生了数据如下图

       c,分片表users插入数据后效果如下,数据被按照指定的规则分配到了两个真实的数据库当中

       d,ER分片表user_address同样的与业务关联相关的users一样被关联分配到users所在的数据库当中如下图

 

 

四、问题解答

1、mycat是否支持按照时间间隔分表?可以,可以参考如下配置

 

2、mycat是否支持热加载配置? 支持

配置样例

可以通过reload @@config 来自态加载部分配置的修改。不过最好的方式是对MYCAT进行高可用配置,然后采用循环重启的方式加载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值