作家
登录

数据库高可用方案PK:选择Oracle还是MySQL?

作者: 来源: 2017-11-06 14:21:41 阅读 我要评论


关于Oracle和MySQL的高可用筹划,其实一向想要总结了,今天禀为几个系列简单说说。经由过程如许的比较,会对两种数据库架构设计上的细节差别有一个根本的熟悉。

高可用筹划概览

Oracle有一套很成熟的高可用解决筹划MAA。用我在OOW上的ppt来看,这个筹划自9i开端,到本年已经有16个岁首了。

 

当然,MAA筹划虽好,成本照样有的、复杂度照样有的,所以放眼国内的应用情况,RAC不必定是100%有,电信、证券、寿险、银行如不雅用,根本都是全套筹划,有些相对保守,RAC也有应用active-passive模式的,互联网行业如不雅用,清一色都是单实例和DG结合。

而MySQL因为开源的特点,官方和社区里推出了很更多的解决筹划,高可用情况大年夜体如下,仅供参考(数据引用自Percona)。

小结

因为时光的原因,MGR刚推出不久,还在不雅察期。MGR固然不错,MySQL Cluster筹划也有PXC、Galera等筹划,小我照样更偏向于MHA。

根本情况说完了,接下来分为几个部分来解读。

Oracle RAC和MySQL MHA

先拿RAC和MHA来做一个根本的比较。

Oracle的解决筹划在阿里快速成长时代支撑起了核心营业的需求。大年夜概是如许的架构体系,看起来很宏大年夜。琅绫擎的RAC算是一个贵族,用昂贵的贸易存储,收集带宽请求极高,前端大年夜量的小机营业还有不菲的license费用。异常典范的IOE的经典架构。

如不雅要推敲异地容灾,那么资本设备要double,预算翻番。

MySQL的架构筹划相对来说加倍平平易近化,通俗的PC就可以,但数量级要高,做营业拆分、程度拆分就可以或许横向扩大出异常多的节点,很多大年夜互联网公司的MySQL集群范围都是几百几百的范围,上千都不稀奇。如斯之多的办事资本,产生故障的概率照样有的,包管营业办事的可持续性拜访是技巧筹划的关键。如不雅按照MHA的架构,根本上就是MHA Manager节点来负责全部集群的状况,比如一个居委会大年夜妈,对住户的大年夜大年夜小小的工作都管窥蠡测包打听。

再来看看MySQL偏向的改进。我们不比单机机能和延迟了,因为这个确切是有差距,并且硬拼也没有太大年夜的意义,我们大年夜整体架构角度来推敲,这些又是Oracle难以实现的处所。

当然膳绫擎的架构图过于笼统,在MHA的高版本琅绫擎还应用了binlogServer,我们大年夜一些细节入手。比如先来说说收集的工作。

Oracle对于收集的请求照样很严格的,一般都是要2块物理网卡,每台办事器须要至少3个IP:Public IP、private IP、VIP,除了共享存储,至少须要2个计算节点。

private IP是节点间互信的,Public IP和VIP在一个网段,简单来说,VIP是对外的,是public IP地点收集的漂移IP,在10g琅绫擎都是经由过程VIP来做负载均衡的,11g开端有了scan-IP,本来的VIP照样保存,所以Oracle琅绫擎的收集设备请求照样很高的。抛开共享存储,搭建的核心就是收集设备了,收集公则通。

scan-IP还可以持续扩大,最多支撑3个scan-ip,如下图所示:

当然收集层面不只是这些,我们还有须要懂得下TAF(Transparent Application Failover)。TAF是Oracle中对应用透明的故障转移,在RAC情况中应用尤其广泛。在RAC中Load Balance这块确切做了很大年夜的改进,大年夜10g版本开端的多个VIP地址的Load Balance,到11g版本中的SCAN,做了很大年夜的简化。

而在Failover的实现中,照样有必定的应用限制,比如11g中默认的SCAN-IP的实现其实默扰绫腔有Failover的选项,如不雅两个节点中的个一一个节点挂了,那么原有的连接中持续萌芽就会提示session已经断开,须要从新连接。客户端TAF重要会评论辩论Failover Method和Failover Type的一些简单内容。

(1)Failover Method

Failover Method的重要思路就是换取故障转移时光,或者换取资本来实现。

可以如许来懂得,假设我们存在两个节点,如不雅某个session连接到了节点2,然而节点2忽然挂了,为了更快处理Failover这种情况,Failover Method有preconnect和basic两种。

  • preconnect这种预连接方法照样会占用较多的资本应用,在各个节点上会预先占用一部分额外的资本,在切换时会相对加倍腻滑,速度更快。
  • basic这种方法,则在产生Failover时,再去切换对应的资本,中心会有一些卡顿,然则对于资本的消费相对来说要小很多。

简单来说,basic方法会在故障产生时才去断定,而preconnect则是未竽暌龟绸缪;大年夜实际的应用来说,basic这种方法加倍通用,也是默认的故障转移方法。

(2)Failover Type

Failover Type实现加倍丰富并且灵活,异常强大年夜。这时控制粒度可以针对用户SQL的履行情况进行控制,有select和session两种;经由过程一个小例子解释一下。

比如,我们有个很大年夜的萌芽在节点2长进行,结不雅节点2忽然宕机了,对于正在履行的萌芽,比如说有10 000条数据,结不雅刚好故障产生的时刻查出了8 000条,那么剩下的2 000该怎么处理。


  推荐阅读

  Tomcat中Session对象部分属性值丢失问题的分析与解决

我们比来的一个 Java 项目在大年夜开辟情况迁徙到测试情况之后,碰到了一个异常诡异的问题——在将>>>详细阅读


本文标题:数据库高可用方案PK:选择Oracle还是MySQL?

地址:http://www.17bianji.com/lsqh/38483.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)