概述
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进行高可用配置,然后采用循环重启的方式加载。
最后
以上就是专注豌豆为你收集整理的mycat分库分表搭建的全部内容,希望文章能够帮你解决mycat分库分表搭建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复