前期回顾前面我们介绍了MySQL Galera的相关内容 这期开始讲一个数据库分库分表中间件Mycat 该专题的理论内容我会参考官方的文档,最后实践部分会根据自己的环境 这节说一些Mycat的一些概念,方便后续的内容 1. 数据库中间件前面讲了 Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有 存储引擎,所以并不是完全意义的分布式数据库系统。 那么 Mycat 是什么?Mycat 是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构 成了整个完整的数据库存储。 如上图所表示,数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理多个数据源的数据。如果没有数据库中间件,那么应用将直接面对分片集群,数据源切换、事务处理、数据聚合都需要应用直接处理, 原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复 造轮子. 所以有了数据库中间件,应用只需要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间 件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。 2. Mycat逻辑概念现在来说下Mycat下的一些概念,首先我们看下图,包含了各种概念的关系图 下面只涉及一些概念介绍,详细配置后续更新 为方便理解我们按照如下的顺序讲解,实际配置是从最后的概念进行配置的 2.1 用户Mycat中的用户是一个逻辑上的用户,他定义了可以用来连接Mycat中间件的用户密码等信息 具体如下:
其在server.xml 配置文件中配置中的user标签进行配置 一个用户可配置连接多个逻辑库 2.2 逻辑库(schema)前面说了通过逻辑的用户可以连接到指定的逻辑库,那么我们事先需要配置逻辑库 我们在schema.xml配置文件的schema标签中进行配置 逻辑库实际上就是用户通过Mycat连接的数据库 逻辑库配置有如下属性
2.3 逻辑表我们通过Mycat连接到数据库后访问的表为逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成 逻辑表包含在逻辑库中,所以我们在schema.xml配置文件的schema标签下的table子标签进行配置 对于未配置为逻辑表的表Mycat是无法访问的 逻辑表配置有如下属性
逻辑表有如下种类
2.4 分片节点(dataNode)上面逻辑表配置中的dataNode即为分片节点的名称,所以我们事先需要配置dataNode 数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点(dataNode)。 他在schema.xml配置文件的dataNode标签下配置 他由dataHost和database唯一指定 dataHost即物理上的数据库实例的地址,可以是IP地址也可以是主机名 2.5 dataHost该标签在 mycat 逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句 该标签可以包含一个或多个数据库地址 他在schema.xml中的dataHost标签中配置 2.6 分片规则既然是分库分表的中间件,所以就会有数据切分的规则 在rule.xml文件中配置,和逻辑表配置中的rule对应 2.7 全局序列号(sequence)数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据 唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence)。 2.8 多租户多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的 系统或程序组件,并且仍可确保各用户间数据的隔离性。 在云计算时代,多租户技术在共用的数据中心以单一系 统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。 目前各种各样的云 计算服务就是这类技术范畴,例如阿里云数据库服务(RDS)、阿里云服务器等等。 3. 参考资料http://www./document/mycat-definitive-guide.pdf |
|