mycat mysql 读写分离CLUSTER VS MYCAT,哪个更好

Mycat+Mysql
[问题点数:40分]
Mycat+Mysql
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。MYSQL CLUSTER VS MYCAT,哪个更好_百度知道
MYSQL CLUSTER VS MYCAT,哪个更好
发挥沟通协调等作用?假如只有一种硬件的时候?再比如一个项目只需要一个人完成的时候不需要leader,这个时候就需要对数据库层做一个抽象,而最上面的应用只需要面对一个数据库层的抽象或者说数据库中间件就好了,当我们的应用只需要一台数据库服务器的时候我们并不需要Mycat:可以把上层看作是对下层的抽象,来管理这些数据库。所以可以这样理解,而这个管理者对于他的上层来说就是对项目组的抽象,例如操作系统是对各类计算机硬件的抽象:数据库是对底层存储文件的抽象。同样的,就应该有一个管理者。那么我们什么时候需要抽象,这时候应用要面对很多个数据库的时候,我们需要开发一个操作系统吗Mycat和MySQL的区别,而如果你需要分库甚至分表,但是当需要几十人完成时,而Mycat是对数据库的抽象,这就是Mycat的核心作用
其他类似问题
为您推荐:
cluster的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&&&SQL92标准语句Mycat支持测试(基于Oracle和MySQL环境)
SQL92标准语句Mycat支持测试(基于Oracle和MySQL环境)
基于Oracle和Mycat集群环境,针对Mycat对SQL92标准语句的支持情况,进行了较全面的测试。
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
免积分&&极速下载60元/年(1200次)
您可能还需要
数据库下载排行【总结】MyCat分布式数据库中间件
1,数据库概述在互联网时代,海量数据的存储与访问成为系统设计与使用的瓶颈问题,对于海量数据处理,按照使用场景,主要分为两种类型联机事务处理(OLTP:On-line transaction processing):也称为面向交易的处理系统,其基本特征是原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果功能:日常交易处理DB设计:面向实时交易类应用数据处理:当前的,最新的细节的,二维的分立的实时性:实时读写要求高事务:强一致性分析要求:低,简单联机分析处理(OLAP: On-Line Analytical Processing):是指通过多维的方式对数据进行分析、查询和报表,可以同数据挖掘工具、统计分析工具配合使用,增强决策分析功能功能:统计,分析,报表DB设计:面向统计分析类应用数据处理:历史的,聚集的,多维的集成的,统一的实时性:实时读写要求低事务:弱事务分析要求:高,复杂针对上面两类系统有多种技术实现方案,存储部分的数据库主要分为两大类:关系型数据库与NoSQL数据库关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据代表主流的Oracle、DB2、MS SQL Server和MySQL特点数据关系模型基于关系模型,结构化存储,完整性约束基于二维表及其之间的联系,需要连接、并、交、差、除等数据操作采用结构化的查询语言(SQL)做数据读写操作需要数据的一致性,需要事务甚至是强一致性优点保持数据的一致性(事务处理)可以进行join等复杂查询通用化,技术成熟缺点数据读写必须经过sql解析,大量数据、高并发下读写性能不足对数据做读写,或修改数据结构时需要加锁,影响并发操作无法适应非结构化存储扩展困难昂贵、复杂NoSQL数据库,全称为Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储代表临时性键&#20540;存储(memcached、Redis)永久性键&#20540;存储(ROMA、Redis)面向文档的数据库(MongoDB、CouchDB)面向列的数据库(Cassandra、HBase)特点非结构化的存储基于多维关系模型具有特有的使用场景优点高并发,大数据下读写能力较强基本支持分布式,易于扩展,可伸缩简单,弱结构化存储缺点join等复杂操作能力较弱事务支持较弱通用性差无完整约束复杂业务场景支持较差2,MyCat概述功能DBAMycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等,因此,Mycat本身并不存储数据,数据是在后端的MySQL上存储的,因此数据可靠性以及事务等都是MySQL保证的工程师Mycat就是一个近&#20284;等于MySQL的数据库服务器,你可以用连接MySQL的方式去连接Mycat(除了端口不同,默认的Mycat端口是8066而非MySQL的3306,因此需要在连接字符串上增加端口信息)大多数情况下,可以用你熟悉的对象映射框架使用Mycat,但建议对于分片表,尽量使用基础的SQL语句,因为这样能达到最佳性能,特别是几千万甚至几百亿条记录的情况下架构师Mycat是一个强大的数据库中间件,不仅仅可以用作读写分离、以及分表分库、容灾备份,而且可以用于多租户应用开发、云平台基础设施、让你的架构具备很强的适应性和灵活性,借助于即将发布的Mycat智能优化模块,系统的数据访问瓶颈和热点一目了然,根据这些统计分析数据,你可以自动或手工调整后端存储,将不同的表映射到不同存储引擎上,而整个应用的代码一行也不用改变原理Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户应用场景单纯的读写分离,此时配置最为简单,支持读写分离,主从切换分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计替代Hbase,分析大数据作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择3,MyCat概念数据库中间件MyCat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储有了数据库中间件,应用只需要集中与业务处理,大量的通用的分片集群,数据源切换、事务处理、数据聚合都由中间件来处理逻辑库对实际应用来说,并不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库逻辑表逻辑表分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成分片表是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据通过&table&的dataNode配置多个分片节点非分片表一个数据库中并不是所有的表都很大,某些表是可以不用进行切分的, 非分片是相对分片表来说的,就是那些不需要进行数据切分的表通过&table&的dataNode配置一个分片节点ER表基于E-R关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据Join不会跨库操作表分组(Table Group) 是解决跨分片数据join的一种很好的思路,也是数据切分规划的重要一条规则全局表一个真实的业务系统中,往往存在大量的类&#20284;字典表的表,这些表基本上很少变动,字典表具有以下几个特性变动不频繁数据量总体变化不大数据规模不大,很少有超过数十万条记录对于这类的表,在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,所以MyCat中通过数据冗余来解决这类表的join,即所有的分片都有一份数据的拷贝,所有将字典表或者符合字典表特性的一些表定义为全局表数据冗余是解决跨分片数据join的一种很好的思路,也是数据切分规划的另外一条重要规则分片节点分片节点(dataNode)数据切分后,一个大表被分到不同的分片数据库上面,每个表分片所在的数据库就是分片节点(dataNode)节点主机(dataHost)数据切分后,每个分片节点( dataNode)不一定都会独占一台机器,同一机器上面可以有多个分片数据库,这样一个或多个分片节点(dataNode)所在的机器就是节点主机(dataHost),为了规避单节点主机并发数限制,尽量将读写压力高的分片节点(dataNode)均衡的放在不同的节点主机(dataHost)分片规则(rule)前面讲了数据切分,一个大表被分成若干个分片表,就需要一定的规则,这样按照某种业务规则把数据分到某个分片的规则就是分片规则,数据切分选择合适的 分片规则非常重要,将极大的避免后续数据处理的难度全局序列号(sequence)数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence)多租户:多租户技术或称多重租赁技术,是一种软件架构技术,它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件,并且仍可确保各用户间数据的隔离性独立数据库共享数据库,隔离数据架构共享数据库,共享数据架构4,MyCat使用MyCat配置schema.xml管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSourceschema标签用于定义MyCat实例中的逻辑库MyCat可以有多个逻辑库,每个逻辑库都有自己相关配置table标签Table标签定义了MyCat的逻辑表,所有需要拆分的表都需要在这个标签中定义dataNode标签定义这个逻辑表所属的dataNode, 该属性的&#20540;需要和dataNode标签中name属性的&#20540;相互对应dataHost作为Schema.xml中最后的一个标签,该标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句server.xmlserver.xml几乎保存了所有mycat需要的系统配置信息优化配置user标签system标签rule.xmlrule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同tableRule标签这个标签定义表规则function标签表关联问题(表Join)Join概述Inner Join:交集Left JoinRight JoinFull Join:并集建议使用Inner Join全局表字典表变动不频繁数据量总体变化不大数据规模不大,很少有超过数十万条记录全局表特性全局表的插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性全局表的查询操作,只从一个节点获取全局表可以跟任何一个表进行JOIN操作ER Join基于E-R关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上Share JoinShareJoin是一个简单的跨分片Join,基于HBT的方式实现目前支持2个表的join,原理就是解析SQL语句,拆分成单表的SQL语句执行,然后把各个节点的数据汇集Catlet(人工智能)解决跨分片的SQL JOIN的问题,远比想象的复杂,而且往往无法实现高效的处理,既然如此,就依靠人工的智力,去编程解决业务系统中特定几个必须跨分片的SQL的JOIN逻辑,MyCAT提供特定的API供程序员调用,这就是MyCAT创新性的思路——人工智能MyCat分片规则概述在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分、数据的聚合。选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理重要的几条原则,其中有几条是数据冗余,表分组(Table Group),这都是业务上规避跨库join的很好的方式,但不是所有的业务场景都适合这样的规则,因此本章将讲述如何选择合适的切分规则几种分片MyCat全局表ER分片表多对多关联总的原则是需要从业务角度来看,关系表更偏向哪个表主键分片&vs 非主键分片当你没任何字段可以作为分片字段的时候,主键分片就是唯一选择,其优点是按照主键的查询最快,当采用自动增长的序列号作为主键时,还能比较均匀的将数据分片在不同的节点上若有某个合适的业务字段比较合适作为分片字段,则建议采用此业务字段分片,选择分片字段的条件如下尽可能的比较均匀分布数据到各个节点上该业务字段是最频繁的或者最重要的查询条件MyCat常用分片规则分片枚举比如有些业务需要按照省份或区县来做保存,而全国省份区县固定的固定分片Hash算法本条规则类&#20284;于十进制的求模运算,区别在于是二进制的操作,是取id的二进制低10位,即id二进制&。此算法的优点在于如果按照10进制取模运算,在连续插入1-10时候1-10会被分到1-10个分片,增大了插入的事务控制难度,而此算法根据二进制则可能会分到连续的分片,减少插入事务控制难度求模此规则为对分片字段求摸运算此种配置非常明确即根据id进行十进制求模预算,相比固定分片hash,此种在批量插入时可能存在批量插入单事务插入多数据分片,增大事务一致性难度按日期(天)分片此规则为按天分片此种规则是取模运算与范围约束的结合,主要为了后续数据迁移做准备,即可以自主决定取模后数据的节点分布取模范围约束此种规则是取模运算与范围约束的结合,主要为了后续数据迁移做准备,即可以自主决定取模后数据的节点分布ASCII码求模范围约束此种规则类&#20284;于取模范围约束,此规则支持数据符号字母取模字符串Hash解析此规则是截取字符串中的int数&#20540;hash分片一致性Hash一致性Hash预算有效解决了分布式数据的扩容问题按单月小时拆分此规则是单月内按照小时拆分,最小粒度是小时,可以一天最多24个分片,最少1个分片,一个月完后下月从头开始循环。每个月月尾,需要手工清理数据自然月分片按月份列分区 ,每个自然月一个分片,&#26684;式 between操作解析的范例5,MyCat高级功能读写分离MySQL主从复制方案Master to SlaveMaster to Multiple SlavesMulti-MasterMaster to Slaves to SlavesMulti-Master Ring主从复制问题复制方式基于SQL语句的复制(statement-based replication,SBR)基于行的复制(row-based replication,RBR)混合模式复制(mixed-based replication,MBR)基于SQL语句的方式最古老的方式,也是目前默认的复制方式,后来的两种是MySQL 5以后才出现的复制方式基于行的复制 RBR优点任何情况都可以被复制,这对复制来说是最安全可靠的和其他大多数数据库系统的复制技术一样多数情况下,从服务器上的表如果有主键的话,复制就会快了很多缺点binlog 大了很多复杂的回滚时 binlog 中会包含大量的数据主服务器上执行 UPDATE 语句时,所有发生变化的记录都会写到 binlog 中,而 SBR 只会写一次,这会导致频繁发生binlog 的并发写问题无法从 binlog 中看到都复制了写什么语句基于SQL语句的复制 SBR优点历史悠久,技术成熟binlog文件较小binlog中包含了所有数据库更改信息,可以据此来审核数据库的安全等情况binlog可以用于实时的还原,而不仅仅用于复制主从版本可以不一样,从服务器版本可以比主服务器版本高缺点不是所有的UPDATE语句都能被复制,尤其是包含不确定操作的时候复制需要进行全表扫描(WHERE 语句中没有使用到索引)的 UPDATE 时,需要比 RBR 请求更多的行级锁对于一些复杂的语句,在从服务器上的耗资源情况会更严重,而RBR 模式下,只会对那个发生变化的记录产生影响数据表必须几乎和主服务器保持一致才行,否则可能会导致复制出错执行复杂语句如果出错的话,会消耗更多资源MyCat主从复制通过writeHost和readHost配置高可用和集群MySQL高可用几种方案主从复制 &#43; 读写分离客户端通过Master进行写操作Slave进行读操作,并可进行备份Master出问题后,手动将应用切换到slave端MySQL ClusterMySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点MySQL Cluster要实现完全冗余和容错,至少需要4台物理主机,其中两个为管理节点MySQL Cluster使用不那么广泛,除了自身构架因素、适用的业务有限之外,另一个重要的原因是其安装配置管理相对复杂繁琐,总共有几十个操作步骤,需要DBA花费几个小时才能搭建或完成。重启 MySQL Cluster 数据库的管理操作之前需要执行 46 个手动命令,需要耗费 DBA 2.5 小时的时间HeartBeat &#43; 双主复制heartbeat是Linux-HA工程的一个组件,heartbeat最核心的包括两个部分:心跳监测和资源接管。在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务HeartBeat &#43; DRBD &#43; MySQLDRBD是通过网络来实现块设备的数据镜像同步的一款开源Cluster软件,它自动完成网络中两个不同服务器上的磁盘同步,相对于binlog日志同步,它是更底层的磁盘同步,理论上DRDB适合很多文件型系统的高可用Lvs &#43; Keeplived &#43; 双主复制Lvs是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡。keepalived是一个类&#20284;于layer3, 4 & 5交换机制的软件,主要用于主机与备机的故障转移,这是一种适用面很广的负载均衡和高可用方案,最常用于Web系统MariaDB Galera这种gluster模式可以说是全新的一种高可用方案,前面也提到其优点,它的缺点不多,不支持XA,不支持Lock Table,只能用InnoDB引擎MyCat高可用方案建议采用标准的MySQL主从复制高可用性配置并交付给Mycat来完成后端MySQL节点的主从自动切换HAProxy相比LVS的使用要简单很多,功能方面也很丰富,免费开源,稳定性也是非常好,可以与LVS相媲美推荐:HAProxy&&#43;MyCat集群 &#43; MySQL主从所组成的高可用性方案如果担心HAproxy的稳定性和单点问题,则可以用Keepalived的VIP的浮动功能,加以强化事务支持MyCat支持的事务单SQL不垮分片:事务中的单条SQL在单个节点上执行单SQL跨分片:事务中的单条SQL在多个节点上执行事务内多个SQL,在不同的分片上执行XA(两阶段提交方式来管理分布式事务 )事务XA事务和MySQL的局限MySQL数据库的主备数据库的同步,通过Binlog的复制完成。而Binlog是MySQL数据库内部XA事务的协调者,并且MySQL数据库为binlog做了优化——binlog不写prepare日志,只写commit日志。所有的参与节点prepare完成,在进行xacommit前crash。crash recover如果选择commit此事务。由于binlog在prepare阶段未写,因此主库中看来,此分布式事务最终提交了,但是此事务的操作并未写到binlog中,因此也就未能成功复制到备库,从而导致主备库数据不一致的情况出现MyCat-Web对server端进行管理与监控MyCat-Web 数据库连接设计:采用了基于代码方式向Spring IOC中注册一个DataSource。因此他能管理你所有的mycat、mysql服务MyCat-Web监控:由开源的jrds实现。目前已经实现了Mycat、Mysql性能监控(jdbc连接获取)、Mycat的JVM内存、线程的监控(通过JMX获取),Mycat,Mysql所在操作系统的CPU、内存、磁盘、网络的监控。(通过SNMP协议获取)6,MyCat生产案例7,MyCat原理分析整体结构线程模型
无相关信息
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 mycat mysql搭建 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信