澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

分库分表

一、MyCAT概述
MyCAT是豆蔻年华款由AliCobar演化而来的用来支持数据库读写抽离、分片的遍及式中间件。MyCAT可不只有匡助Oracle、MSSQL、MYSQL、PG、DB2关系型数据库,同期也支撑MongoDB等非关系型数据库。基础架构如下:

数据库中间件Mycat自小编吹牛

图片 1

背景情况

用的MYSQL--单表可以称作7500w数据不或者真正正正的留存一张表里,那样我们使用起来质量非常的不得了。那就关系到要说的分库分表原则。


图片 2

一、mycat概述

1.职能介绍
  mycat多个开源的分布式数据库系统,是叁个落实了mysql公约的server前端顾客可以把它看作叁个数据库代理,用mysql客户端工具和命令行访谈,后端能够用mysql原生(native)合同与多个mysql服务器通讯,也得以JDBC合同与大多数主流的数据库服务器通讯.其主旨职能是分表分库.即把二个大表水平划分为N个小表;存款和储蓄在后端mysql服务器或许此外数据Curry.
  严苛意义上,由于实在的数据库必要有囤积引擎,而mycat并不曾存款和储蓄引擎;Mycat是数据库中间件,正是介于数据库和布满式数据库系统里面包车型地铁服务.

JDBC说明:
JDBC API是二个Java API,能够访谈任何项目表列数据,特别是积累在关周全据库中的数据。JDBC代表Java数据库连接。
JDBC库中所包蕴的API任务平时与数据库使用:
 1)连接到数据库
 2)创建SQL或MySQL语句
 3)在数据库中履行SQL或MySQL查询
 4)查看和改换记录

1.1Mycat是什么?
  基于Ali开源的Cobar产品而研究开发的豆蔻年华款静心数据库分库分表中间件,Mycat是数据库的中间件,介于数据库和动用之间开展多少管理与互动的高级中学级服务;其实Mycat正是BigSQL,Big Data On SQL Database.
官方概述:

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

1.2大家眼中Mycat

对于DBA来说,能够这么清楚Mycat:

    Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等,因此Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的,简单的说Mycat就是MySQL最佳伴侣,它在一定程度上让MySQL拥有了能跟Oracle PK的能力.

对于软件程序员来讲,能够这么精晓Mycat:

  Mycat就是一个近似等于MySQL的数据库服务器,你可以用连接MySQL的方式去连接Mycat(除了端口不同,默认的Mycat端口是8066而非MySQL的3306,因此需要在连接字符串上增加端口信息),大多数情况下可以用你熟悉的对象映射框架使用Mycat,但建议对于分片表,尽量使用基础的SQL语句,因为这样能达到最佳性能,特别是几千万甚至几百亿条记录的情况下.

对此架构师来说,能够这样精晓Mycat:

  Mycat是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变.

  当前是个大数指标时日,但毕竟怎么着规模的数量符合数据库系统吧?对此海外有叁个数据库领域的权威人员说了多个结论:
  千亿之下的多少规模仍为数据库领域的秘招,而Hadoop等这种系统,更契合的是千亿上述的规模.所以Mycat切合1000亿条以下的单表规模,假使您的数码超越了那个层面,请投靠Mycat Plus吧!

主导条件

多少的切分(Sharding)依照其切分法规的花色,能够分成二种切分方式。

意气风发种是比照不相同的表(也许Schema)来切分到不相同的数据库(主机)之上,这种切能够称为数据的垂直(纵向)切分;

除此以外生龙活虎种则是基于表中的数据的逻辑关系,将同一个表中的数量依照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。


1、MyCAT原理

二、Mycat原理表明

  Mycat的规律并不复杂,复杂的是代码,假若代码也不复杂,那么早已成为二个风传了.
  Mycat的原理中最首要的贰个动词是”拦截”,它阻挡了顾客发送过来的SQL语句,首先对SQL语句做了一些一定的剖判:如分片深入分析、路由解析、读写抽离解析、缓存深入分析等,然后将此SQL发将来端的实际数据库,并将赶回的结果做相符的拍卖,最后再回来给客商.

图片 3

  上述图片里,Orders表被分成多少个分片datanode(简单称谓dn),这五个分片是布满在两台MySQL Server上(DataHost),即datanode=database@datahost方式,由此你能够用风流倜傥台到N台服务器来分片,分片法规为(sharding rule)标准的字符串枚举分片法则,三个规行矩步的定义是分片字段(sharding column) 分片函数(rule function),这里的分片字段为prov而分片函数为字符串枚举格局。

  当Mycat收到几个SQL时,会先解析这几个SQL,查找涉及到的表,然后看此表的定义,假如有分片法则,则收获到SQL里分片字段的值,并协作分片函数,得到该SQL对应的分片列表,然后将SQL发往那一个分片去实行,最终采摘和管理全数分片重回的结果数据,并出口到顾客端.
例如:select * from Orders where prov=?为例
查到prov=wuhan,依据分片函数,wuhan再次来到dn1,于是SQL就发给了MySQL1,去取DB1上的询问结果,并回到给顾客。

  假设上述SQL改为select * from Orders where prov in (‘wuhan’,’beijing’),那么,SQL就能发给MySQL1与MySQL2去试行,然后结果集结併后输出给客商但平时业务中大家的SQL会有Order By 以致Limit翻页语法,当时就关系到结果集在Mycat端的壹遍拍卖,那生机勃勃部分的代码也比较复杂,而最复杂的则属三个表的Jion难题,为此,Mycat提出了校订性的E福特Explorer分片、全局表、HBT(Human Brain Tech)人工智能的Catlet、乃至构成Storm/斯Parker引擎等七十二变化(英文名:wǔ yì)的消除办法,进而成为当下产业界最强盛的方案,这正是开源的力量!

笔直切分 -- (根据业务的不如切分数据)

好处:                                                                        劣处: 

1.基于工作拆分之后,各类服务业务显明。                1.  有些业务表无法join,只可以通过接口格局解决,升高了系统复杂度。

  1. 系统扩充性强,种种服务耦合性较高。                   2.受每个业务差异的范围存在单库质量瓶颈,不易数据扩张跟品质提升。 

  2. 吝惜开支低。                                                           3. 事务管理复杂。 

鉴于垂直切分是比照业务的归类将表分散到区别的库,所以某一件事情表会过于庞大,存在单库读写与仓库储存瓶颈,所以就需求程度拆分来做消除。


MyCAT首若是通过对SQL的遏止,然后经过一定准绳的分片剖判、路由深入分析、读写抽离剖析、缓存解析等,然后将SQL发给后端真实的数据块,并将赶回的结果做适度管理回来给顾客端。

三、Mycat的应用场景

 a.单纯的读写分离,此时配置最为简单,支持读写分离,主从切换.
 b.分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片
 c.多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化.
 d.报表系统,借助于Mycat的分表能力,处理大规模报表的统计.
 e.代替Hbase,分析大数据.
 f.作为海量数据实时查询的一种简单有效方案  比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择.

小结:
  --单纯的读写分离,当时布局最为轻松,扶植读写分离,主从切换分表分库,对于超越1000万的表打开分片,最大帮衬1000亿的单表分片—多租户使用,每一种应用一个库,但应用程序只连接Mycat,进而不改良程序本人,完毕多租户化.

  --报表系统,依靠于Mycat的分表技术,处理大面积报表的总结替代Hbase,深入分析大数量,作为海量数据实时查询的少年老成种轻巧可行方案,举例100亿条频繁查询的记录须要在3秒内查询出来结果,除了基于主键的查询,还大概存在范围查询或任何属性查询,这时mycat或许是最简便有效的选取.

水平切分

相对于垂直拆分,水平拆分不是将表做分类,而是遵循有个别字段的某种法规来分散到多个库之中,种种表中 包罗部分数量。一言以蔽之,大家得以将数据的水准切分掌握为是依照数据行的切分,就是将表中的有些行切分到贰个数据库,而别的的少数行又切分到别的的数据库中 。

图片 4

几种规范的分片准则富含: 

1.根据客户 ID 求模,将数据分散到不一致的数据库,具备类似数量顾客的多少都被分散到贰个库中。 

2.依照日期,将不一样月以至日的多少分散到不一样的库中。 

3.根据某些特定的字段求摸,只怕依附特定范围段分散到不一样的库中。 

如图,切分原则都以依据职业找到切合的切分准绳分散到分化的库,下边用用户ID 求模比方: 

图片 5

好处:                                                                                  劣处: 

1.拆分法规抽象好,join 操作基本得以数据库做。               1.  拆分法则难以抽象。 

  1. 不真实单库大数量,高并发的天性瓶颈。                         2.分片政工生龙活虎致性难以化解。 

  2. 应用端退换相当少。                                                             3. 数额数次扩大难度跟维护量非常的大。 

分库分表。4.抓好了系统的休保健息跟负载技艺。                                     4.跨库 join 质量比较糟糕。

图片 6

四、Mycat涉及到关键词概念

1)数据库中间件:
  前边提到Mycat是贰个开源的遍布式数据库系统,不过由于实在的数据库需求仓储引擎,而Mycat并不有所存款和储蓄引擎,所以的确含义上不是贰个布满式数据库系统。
  Mycat作为数据库的中间件,介于数据库和采纳之间,实行数量管理与相互中间服务。
图片 7

  如上海教室所表示,数据被分到两个分片数据库后,应用如若须求读取数据,就要必要管理五个数据源的多少。若无数据库中间件,那么应用将直接面前境遇分片集群,数据源切换、事务管理、数据聚合都急需使用直接管理,原来该是专心于事情的施用,将会花多量的办事来拍卖分片后的标题,最重视的是各样应用管理将是截然的重复造轮子.

  所以有了数据库中间件,应用只需求聚集与专门的学问处理,大批量的通用的数量聚合,事务,数据源切换都由中间件来管理,中间件的属性与拍卖本事将一贯调控使用的读写质量,所以往生可畏款好的数据库中间件至关首要.

数码切分
  轻便的话,正是指通过一定的基准,把大家贮存的同贰个数据库分散存放到分散列三个数据库(主机)上边,已落得疏散单台设备负载的职能。

数码的切分(sharding)依据法则分为三种:

分库分表。 1)垂直切分
  遵照差别的表(或Schema)来切分到差别数据库(主机)上这种称为数据的垂直(纵向)切分。
图片 8

特点:
最大的风味正是平整简单,相互影响非常小,实践有扶持。适合各业务中间的耦合度超低的现象。

 2)水平切分
遵照表中的逻辑关系,将将同一表中的数据依据某种关联拆分到多台数据库(主机)上边,这种切分称为水平(横向)切分。

图片 9

特点:
  相当于垂直切分,稍稍复杂一些,因为要将相像表中的不相同数额拆分到分化的数据库中,对于程序来讲,拆分法规本人较根据表名拆分更为负杂,中期维护也越来越复杂一些。

前边讲了僵直切分跟水平切分的例外跟优弱点,会发觉每一个切分都有欠缺,但协助进行的特色劣势有:

 1.引入分布式亊务的问题。
 2.跨节点 Join 的问题。
 3.跨节点合并排序分页问题。
 4.多数据源管理问题。

图片 10

本着数据源管理,近期第意气风发有三种思路:
  A.顾客端情势,在每种应用程序模块中配置管理自身索要的三个(恐怕几个)数据源,直接待上访谈各类数据库,在模块内成功多少的三结合;

  B. 通过中间代理层来归并管理全体的数据源,后端数据库集群对前面叁个应用程序透明;可能八成之上的人在直面地方这二种缓慢解决思路的时候都会侧向于选取第三种,特别是系统相连变得宏大复杂的时候。确实,这是一个不胜不利的接纳,就算短时间内亟待提交的基金大概会相对更加大学一年级些,不过对全体系统的扩大性来说,是卓殊有帮带的多寡切分的条件:

数据切分的规范:

 第一原则:能不切分尽量不要切分。
 第二原则:如果要切分一定要选择合适的切分规则,提前规划好。
 第三原则:数据切分尽量通过数据冗余或者表分组(Table Group)来降低跨库 Join 的可能。
 第四原则:由于数据库中间件对数据 Join 实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表 Join

 2)逻辑表(table)
  既然有逻辑库,那么就能有逻辑表,遍及式数据库中,对应用来讲,读写多少的表便是逻辑表。逻辑表能够是多少切分后,分布在三个或七个分片库中,也足以不做多少切分,不分片,只有二个表构成。

 3)分片表
分片表,是指那多少个原来的一点都不小数量的表,须要切分到多个数据库的表,那样,每一个分片都有黄金年代对数目,全部分片构成了全部的数据。
  比方在mycat配置中的t_node就属于分片表,数据依据准则被分到dn1,dn2四个分片节点(dataNode) 上
<table name=nt_noden primaryKey=nvidn autoincrement=ntruen dataNode=ndn1,dn2n rule=nrule1n />

 4)非分片表
  三个数据库中并非具备的表都超级大,某个表是能够不用实行切分的,非分片是相对分片表来说的,正是那二个无需开展多少切分的表。
如下配置中t_node ,只存在于分片节点(dataNode ) dn1上。
<table name=nt_noden primaryKey=nvidn autoincrement=ntruen dataNode=ndn1" />

 5)ER 表
  关系型数据库是依照实体关系模型(Entity-Relationship Model)之上,通过其描述了真正世界中东西与关系,Mycat中的EOdyssey表便是来源于此。依据那生机勃勃思路,提议了基于E-XC90关系的数捤分片计策,子表的笔录与所涉嫌的父表记录存放在同三个数额分片上,即子表信任于父表,通过表分组(Table Group)保险数据Join不会跨库操作。
  表分组(Table Group )是解决跨分片数据join的意气风发种很好的思绪,也是多少切分规划的主要一条法则。

 7)全局表
  三个实际的事体连串中,往往存在大量的雷同字典表的表,那个表基本上非常少变动,字典表具有以下多少个特点:

 1.变动不频繁
 2.数据量总体变化不大
 3.数据规模不大,很少有超过数十万条记录。

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

 8)节点主机(dataHost)
  数据切分后,每个分片节点(dataNode)不必然都会占有风姿罗曼蒂克台机器,同一机器上边可以有八个分片数据库, 那样一个或多个分片节点(dataNode )所在的机器正是节点主机(dataHost),为了避开单节点主机并发数节制,尽量将读写压力高的分片节点(dataNode )均衡的位于分化的节点主机(dataHost )。

 9)分片准绳(rule)
  后边讲了多少切分,1个大表被分成若干个分片表,就须要一定的法则,这样根据某种业务准绳把多少分到 有个别分片的规行矩步正是分片准绳,数据切分选取适用的分片准绳不行首要,将不小的防止后续数据管理的难度。

 10)多租户
  多租户能力或称多种租借才干,是黄金时代种软件架构技艺,它是在追究与落到实处怎么着于多顾客的意况下共用雷同的种类或程序组件,並且仍可保险各顾客间数据的隔断性。在云计算时期,多租户手艺在共用的数额基本以单纯系统架构与服务提供大多顾客端相似以致可定制化的劳务,而且仍旧能够保持客户的数目隔断。近些日子成千上万的云计算服务正是那类技能层面,比如Ali云数据库服务(EvoqueDS )、Ali云服务器(ECS)等等。

多租户在多少存储上设有3种关键的方案,分别是:
 1》独立数据库
即一个租户二个数据库,这种方案的客商数量隔开分离等级最高,安全性最棒,但资本也高。

优点:
 1、为不同的租户提供独立的数据库,有助于简化数据模型的扩展设计,满足不同租户的独特需求;
 2、如果出现故障,恢复数据比较简单。

缺点:
1、增大了数据库的安装数量,随之带来维护成本和购置成本的增加。
  这种方案与传统的一个客户、一套数据、一套部署类似,差别只在于软件统一部署在运营商那里。如果面对的是银行、医院等需要非常高数据隔离级别的租户,可以选择这种模式,提高租用的定价。如果定价较低,产品走低价路线,这种方案一般对运营商来说是无法承受的

 2》分享数据库,隔开分离数据架构
即多少个或具有租户分享Database,可是各种租户一个Schema。

优点:
 1、为安全性要求较高的租户提供了一定程度的逻辑数据隔离,并不是完全隔离;每个数据库可以支持更多的租户数量。
缺点:
 1、如果出现故障,数据恢复比较困难,因为恢复数据库将牵扯到其它租户的数据
 2、如果需要跨租户统计数据,存在一定困难。

 3》分享数据库,分享数据架构
  即租户分享同一个Database、同三个Schema,但在表中经过TenantID区分租户的数目。那是分享程度最高、隔绝等第最低的情势。

优点:
 1、三种方案比较,第三种方案的维护和购置成本最低,允许每个数据库支持的租户数量最多。
缺点:
 1、隔离级别最低,安全性最低,需要在设计开发时加大对安全的开发量;
 2、数据备份和恢复最困难,需要逐表逐条备份和还原。
 3、如果希望以最少的服务器为最多的租户提供服务,并且租户接受以牺牲隔离级别换取降低成本,这种方案最适合

切分协作的主题材料

这两天讲了垂直切分跟水平切分的不等跟优劣点,会意识每一种切分格局皆不通常,但协同的风味瑕疵有: 

1.引进遍及式事务的主题素材。 

  1. 跨节点 Join 的问题。 

  2. 跨节点合併列排在一条线序分页难点。 

  3. 大部据源管理难题。

日常来说业务存在着头晕目眩 Join 的情况是麻烦切分的,往过去的事情情单独的轻易切分。怎么样切分,切分到何种程度是考验技巧架构的三个难点。

  

切分的朝气蓬勃部分规格

出于数量切分后数据 Join 的难度在这里也分享一下多少切分的阅历: 

率先规格:能不切分尽量不要切分。 

其次规范:要是要切分一定要采取契合的切分法规,提前计划好。 

其三尺度:数据切分尽量通过数量冗余或表分组(Table Group)来收缩跨库 Join 的可能。 

第四标准化:由于数据库中间件对数据 Join 完结的优劣难以把握,何况落到实处高品质难度相当大,业务读取尽量 少使用多表 Join。

2、MyCAT功能
(1)数据库分片(Sharding)

数据库的切分引申的 数据源管理理念

1. 客商端形式,在每种应用程序模块中配置管理本身索要的叁个(或许多少个)数据源,直接访谈各种数据 库,在模块内成功多少的组合; 

2. 通过中档代理层来归并保管全数的数据源,后端数据库集群对前面叁个应用程序透明;

想必 80%上述的人在面对地点这两种缓慢解决思路的时候都会众口一辞于选拔第三种,非常是系统持续变得宏大复杂 的时候。确实,那是三个要命科学的精选,固然短时间内须要付出的资金或然会相对更加大学一年级部分,不过对任何种类的扩张性来讲,是不行有扶植的。

由此某种条件,将相通数据库中的数据分散的存款和储蓄到几个数据库中,已完毕疏散单台数据库设备负载的成效,那正是数据库分片。
a.水平拆分
长久以来张表的不及记录,依据表的某部字段的某种准则拆分到多个数据库(主机)上,那既是水平拆分。
单库业务表大概会过度宏大,存在单库读写与积存瓶颈,这种气象能够由此水平拆分消灭,水平拆分基本架构如下:

中间件

为了减小业务职员的压力, 常用某在那之中间件,如 mycat Cobar 其布局概略上如下图 :

图片 11

图片 12

参考资料

https://github.com/MyCATApache/Mycat-Server/wiki/3.0-Mycat配置入门

http://www.cnblogs.com/ivictor/p/5111495.html 

http://www.mycat.org.cn/

https://blog.csdn.net/mingover/article/details/71108852

常用水平拆分法则:
*ID
*日期
*特定字段取模

 优点:

*拆分准绳抽象好,join操作基本得以数据库内成功
*不设有单库大数目,高并发的习性瓶颈
*应用端改减少
*增加了系统稳固和负载技巧

缺点:
*拆分法规难以抽象
*分片事务大器晚成致性难以清除
*数量多次扩魔难度跟维护量十分大
*跨库join质量相当差

b.垂直拆分
今是昨非的表切分到差异的数据库(主机)上,这就是笔直拆分。
诚如遵照作业表举行归类,划分为不一致的事务、模块库,耦合度越低,越轻易做垂直拆分,垂直拆分基本架构如下:

图片 13

笔直拆分注意点:
跨库Join,选拔分享数据源或分库接口调用,依据财富和数据规模、负载而定

优点:
*拆分后事情清晰,拆分准绳明显
*系统里头结成或扩展轻松
*数据库维护轻易

缺点:
*大器晚成对业务表不能够Join,只好通过接口格局消除,升高了系统复杂度
*受每一个业务不相同的界定期存款在单库品质瓶颈,不易于扩张跟质量提升
*事务管理复杂

c.水平拆分和垂直拆分协同劣势
*分布式事务管理困难
*夸节点join困难
*扩数据源管理复杂

d.切分总则
*能不切分的玩命不切分
*设若要切分,选用适用的切分法则,提前规划好
*数据库切分尽量通过数据冗余或表分组来减弱跨库join
*事情尽量采纳少的多表join

(2)读写分离

 

(3)黑白名单约束

 

3、使用情状 

(1)单纯读写抽离,当时安插最为简单,辅助读写抽离、主从切换
(2)分库分表,对记录领先1000万的表进行水平拆分,最大支撑1000亿单表水平拆分
(3)多租户使用,每一个应用四个数据库,但前后相继只需一连MyCAT,程序不转移,达成多租户化
(4)报表系统,借住MyCAT分表能力,管理大范围的表格总结
(5)取代Hbase,深入分析大数目
(6)海量实时数据查询

4、优缺点
优点:
(1)扶持六体系型数据库的分片
(2)易扩展
(3)

缺点:

二、MyCAT安装
1、下载
官方网站地址:
下载地址:
文书档案地址:

2、mycat安装

1)mycat是java语言编写,在安装mycat前须要设置jdk,本次java版本是1.7

[root@node1 ~]# java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)

2)解压缩mycat(mycat解压缩后即安装收尾)

[root@node1 ~]# tar -xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz  -C /usr/local/

3)mycat客户成立

groupadd mycat
useradd -r -g mycat mycat
chown -R mycat.mycat /usr/local/mycat  

4)mycat基本配置

遭受变量配置:

[root@node1 ~]# vi ~/.bash_profile 
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/mycat/bin

export PATH

[root@node1 ~]# source ~/.bash_profile

schema.xml配置:

[root@node1 ~]# cd /usr/local/mycat/conf/

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
    </schema>
    <dataNode name="dn1" dataHost="node1" database="db01" />
    <dataHost name="node1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM1" url="10.20.32.23:3306" user="myuser"  password="myuser">
            <readHost host="hostS2" url="10.20.32.24:3306" user="myuser" password="myuser" />
        </writeHost>
        <writeHost host="hostS1" url="10.20.32.24:3316" user="myuser" password="myuser" />
    </dataHost>
</mycat:schema>

server.xml配置:

[root@node1 ~]# cd /usr/local/mycat/conf/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
        <system>
                <property name="useSqlStat">0</property>  <!-- 1为开启实时统计、0为关闭 -->
                <property name="useGlobleTableCheck">0</property>  <!-- 1为开启全加班一致性检测、0为关闭 -->
                <property name="sequnceHandlerType">2</property>
                <property name="processorBufferPoolType">0</property>
                <property name="handleDistributedTransactions">0</property>
                <property name="useOffHeapForMerge">1</property>
                <property name="memoryPageSize">1m</property>
                <property name="spillsFileBufferSize">1k</property>
                <property name="useStreamOutput">0</property>
                <property name="systemReserveMemorySize">384m</property>
                <property name="useZKSwitch">true</property>

        </system>

        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
        </user>

</mycat:server>

5)mycat启动

[root@node1 conf]# mycat start
Starting Mycat-server...
[root@node1 conf]# 

6)mycat状态检查

[root@node1 conf]# mycat status
Mycat-server is running (27956).

三、MyCAT使用

 1、mycat常用命令

./mycat start 启动
./mycat stop 停止
./mycat console 前台运行
./mycat install 添加到系统自动启动(暂未实现)
./mycat remove 取消随系统自动启动(暂未实现)
./mycat restart 重启服务
./mycat pause 暂停
./mycat status 查看启动状态

四、MyCAT首要概念

 1、逻辑库(schema)

逻辑库是mycat中间件层配置的关照实际多少个或四个工作数据库集群构成。

图片 14

2、逻辑表(table)
a.逻辑表是mycat切分到八个数据库可能不切分对应用程序呈现的统大器晚成的表。
b.分片表是原来的大表,经过分片,布满在不一致数据库、雷同数据库的保存相像表结构,但多少区别的表。
c.非分片表是未做切分的表。
d.E奥迪Q7表基于E-Sportage关系分片计策,子表记录与所关联的父表记录寄存在同一个数额分片上,即子表注重于父表,通过表分组保险数据join不会跨库操作。
e.全局表,业务系统中生成非常小、数据量十分的小(十万之下),但又需求平时涉及的表,mycat接收冗余在依次节点四个份来产生。

3、分片节点(dataNode)
数据库分片后,三个大表被切分到区别的分片数据库上,每种表分片所在的数据库正是分片节点。

4、分片主机(dataHost)
分片节点所在的服务器,数据切分后,每种分片节点不分明都会占据豆蔻年华台服务器,同三个分片服务器大概存款和储蓄多少个分片节点,尽量使读写压力高的分片节点均衡的放在不一样的节点主机上。

5、分片准则(rule)
依据某种业务准则把多少分到有个别分片节点上的不成方圆,就是分片准则。(分片法则不行首要,直接调节继续数据管理复杂度)

6、全局体系号(sequence)
当数据库分片后,原有的主键节制在布满式条件下不恐怕利用,因而要求引进外界体制保障数据唯风度翩翩象征,这种保障全局的数码独一代表机制便是大局种类号(sequence)。

7、多租户
多顾客的条件共用平等的连串、程序组件,而且保障各客商间数据的隔开分离性。
a.贰个客商贰个数据库,隔断品级最高、安全性最佳,耗费最高
b.分享数据库,隔开分离数据架构,种种顾客叁个schema
c.分享数据库,分享数据架构,分享database、schema,通过表tenantID区分租户数据

 

五、MyCAT附录
1、OLAP和OLTP对比

2、关系型和非关系型数据库相比较

3、

 

本文由澳门新浦京娱乐场网站发布于数据库,转载请注明出处:分库分表