MyCat数据库的基础配置及使用

    MyCat在我看来是管理数据库集群的不二之选,他具有透明性、数据冗余性、易于扩展性、自治性等特点,还具有经济、性能优越、响应速度更快、灵活的体系结构、易于集成现有系统等特点.

    1.MyCat 中间件简介:

        MyCat是一个彻底开源的面向企业应用开发的大数据库集群,支持事务、ACID,是可以替代MySQL的加强版数据库。MyCat被视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群,它是整合了内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server,是结合了传统数据库和新型分布式数据仓库的新一代企业级数据库产品,也是一个优秀的数据库中间件。

    2. MyCat核心概念详解

        2.1 逻辑库(schema)

            逻辑库(schema)通常在实际应用中,业务开发人员并不需要知道中间件的存在,只需要关注数据库,所以数据库中间件可以被当作一个或多个数据库集群构成的逻辑库。


        1568013722263000679.png

        2.2 逻辑表(table)

            既然有逻辑库,就会有逻辑表。在分布式数据库中,对于应用来说,读写数据的表就是逻辑表。逻辑表可以分布在一个或多个分片库中,也可以不分片。

        

                1)分片表

                    分片表是指将数据量很大的表切分到多个数据库实例中,所有分片组合起来构成了一张完整的表。例如在MyCat上配置t_node的分片表,数据按照规则被切分到dn1、dn2两个节点。

        <table name=”t_node” primaryKey=”vid” autoIncrement=”true” dataNode=”nd1,dn2” rule=”rule1” />

                            2)非分片表

                并非所有的表在数量很大时都需要进行分片。非分片表是相对分片表而言的,不需要进行数据切分的表。如下面配置中的t_node只存在于节点dn1上

<table name=”t_node” primaryKey=”vid” autoIncrement=”true” dataNode=”dn1” />

                  3)ER表

                    关系型数据库是基于实体关系模型(Entity Relationship Model)的,MyCat中的ER表便来源于此。基于此思想,MyCat提出了基于E-R关系的数据分片策略,子表的记录与其所关联的父表的记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据关联查询不会跨库操作。

                    表分组是解决跨分片数据关联查询的一种很好的思路,也是数据切分的一条重要规则。

                 4)全局表

                    在一个真实的业务场景中往往存在大量类似的字典表,这些字典表中的数据变动不频繁,而且数据规模不大,很少有超过数十万条的记录。

                    当业务表因为规模进行分片后,业务表与这些附属的字典表之间的关联查询就成了比较棘手的问题,所以在MyCat中通过数据冗余来解决这类表的关联查询,即所有分片都复制了一份数据,我们把这些冗余数据的表定义为全局表。

                    数据冗余是解决跨分片数据关联查询的一种很好的思路,也是数据切分规划的另一条重要规则。

            2.3.  分片节点(dataNode)

        将数据切分后,一个大表被分到不同的分片数据库上,每个表分片所在的数据库是分片节点。

           2.4  节点主机(dataHost)

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

        3. MyCat原理介绍

            MyCat原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析,例如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL语句发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。

        1568013731913087348.png

        MyCat收到一条SQL语句时,首先解析SQL语句涉及的表,接着查看此表的定义,如果该表存在分片规则,则获取SQL语句里分片字段的值,并匹配分片函数,得到该SQL语句对应的分片列表,然后将SQL语句发送到相应的分片去执行,最后处理所有分片返回的数据并返回给客户端。

        4. MyCat配置

                schema.xml是MyCat的重要配置文件,它管理着逻辑库、分片表、分片节点和分片主机等信息。

                service.xml是系统参数的配置文件,掌握MyCat优化方法,必需熟悉该文件的配置项。

                sequence是全局序列的配置文件。

        5. MyCat分片

            在MyCat中将表分为两种大的概念:数据量小且不需要做数据切分的表,称为非分片表;数据量大到单库性能、容量不足以支撑,数据需要通过水平切分均匀分布到不同的数据库中的表,称为分片表。而中间件最终需要处理的事情是对数据切分、聚合。

        6. ER关系分片表

            ER模型是实体关系模型,广泛采用概念模型设计方法,基本元素是实体、关系和属性。MyCat将它引入数据切分规则中,使得有互相依赖的表能够按照某一规则切分到相同的节点上,避免跨库Join关联查询。具体详情配置内容在这里不做描述请参考官方文档.


        本文转载于: https://yq.aliyun.com/articles/717969?spm=a2c4e.11155472.0.0.62433809n0KERy

            参考文献:官方网站:http://www.MyCat.io/

        



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero

WX:xcs345525801 QQ:345525801 Tel:19521445850 Email:xcssh868@163.com

Copyright © 2020 许承胜个人博客 版权所有 备案号:皖ICP备18014705号-1