第一种方法就是应用select;即会完成故障切换,持续把剩下的2 000笔记录返回,当然中心会有一些高低文情况的切换,对于用户是透明的。
第二种方法是session;即直接断开连接,请求从新萌芽。
在10g版本中借助于VIP的设备达到Load Balance+Failover的设备如下:
racdb=(DESCRIPTION =(ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.101)(PORT= 1521))(ADDRESS= (PROTOCOL= TCP)(HOST=192.168.3.201)(PORT= 1521))(LOAD_BALANCE = yes)(FAILOVER =>这一点上,MySQL原生并不支撑所谓的负载均衡(这里说的不是读写分别),可以经由过程前端的营业来分流,比如应用中心件proxy,或者持续的拆分,达到必定的粒度后,经由过程架构设计的方法来知足需求。因为基于逻辑的复制,很轻易扩大,一主多大年夜都是很常见的,价值也不高,延迟不克不及说没有,只是很低,可以或许适应绝大年夜部分的互联网营业需求。
而说到触发MHA切换的前提,大年夜收集层面来看,如下的红点都是潜在的隐患,有的是收集的中断,有的是收集的延迟,产生故障时,保数据照样保机能稳定,都可以基于本身的需求来定制。大年夜这一点上来说,损掉数据的概率是有的。绝对不是强一致性的无损复制。
把膳绫擎的图放大年夜,其实会有更多的细节,比如ssh的连接检测和数据库的心跳检测(insert_ping),在全部筹划琅绫擎要推敲的场景就很多了。对于收集的切换,今朝MHA做的主如果包管数据复制关系,如不雅要深刻应用,照样要做更多的定制,比如结合Proxy的筹划,应用ZooKeeper的状况检测,应用keepalive或者VIP的收集层面的切换等。
整体来看两种筹划,RAC是集中共享,除了存储层面的共享外,收集层面的组播其实也会进步节点间通信的成本,所以RAC对于收集的需求很大年夜,如不雅存在延迟是很危险的,产生了脑裂就很难堪了。MySQL MHA的筹划是分布式的。支撑大年夜批量的情况,节点间通信的成本相对来说要低很多。然则大年夜数据架构的角度来说,因为是复制的数据分布方法,所以对于存储尽管不是共享存储,对于存储的成本照样高于RAC(不是说存储的价格,是存储的数据量大年夜小)。
Oracle Data Guard和MySQL灾备
然后我们来持续说说袈渲备的部分。我就拿Oracle的DG和MySQL的筹划比较。
在灾备的概念中,Oracle DBA习惯叫做主备,即为Primary、Standby,而MySQL更爱好叫做主大年夜,即为Master、Slave,无论怎么叫,说得都是同一个意思。
起首在Oracle中,数据是基于物理复制(此处说的都是physical standby),所以对于数据库的状况和角色就很好定位,大年夜库正常状况下是无法读写的。所以在Oracle中角色转换的概念就很清楚,failover和switchover,failover就是故障转义,switchover就是主备切换。在MySQL中failover的概念很好懂得,然则switchover比拟来说,就会淡化很多。
Oracle因为是基于物理复制,所以一向以来备库要么就是恢复状况(recover),要么就是只读不该用状况(read_only),直到11g这个问题才解决,就是大年夜名鼎鼎的ADG(read >
当然常用、实用的不见得这么多,MySQL的DML还算是原生态,可以根据binlog采取来恢复,或根据第三方对象帮助,但DDL就是难上加难了,今朝MariaDB的DDL闪回就是一个冲破,大年夜我的懂得来说,应当可以或许实现一部分的闪回功能,具体的效不雅我后面测试一下。
所以说闪回是个大年夜宝藏,到底有多好呢,Oracle的备库筹划有了快照数据库,就是物理备库可以临时写入,带来的长处就是主库的碎片,在备库是完全一样的。所以在SQL审核方面有着得天独厚的优势,我在线上的很多DDL审核中都做过测试和实际应用,效不雅很赞,并且11g中的闪回可以在线开在线关,所以一般10g琅绫擎我建议要慎重应用,11g有前提下备库端照样推荐的,知足需求久煨。当然闪回数据库不是万金油,有个别场景是不支撑的,在此就不展开了。
对于灾备来说,数据库的切换是未竽暌龟绸缪的工作,那么到底备库切换的检查是否OK呢,Oracle琅绫擎有了DG Broker这么一个神器,还在新版本中做了很多不错的选项,比如新版本中有了validate的选项,可以检测主备切换的前提是否知足。下面是DG Broker的敕令中多出来的validate敕令,效不雅照样不错的。
此外,大年夜高可用的角度来说,如不雅在备库存在连接,做switchover时,会话会持续保持,当然会有短暂的卡顿。这也就是特点的会话保持特点。
Preserving Active Data Guard Application Connections
当然在MySQL琅绫擎就弗成懂得了,切换别说会话保持,卡顿的影响都微乎其微。因为Oracle基于物理复制的方法,物理一致性使得复制扩大性很难,当然也不是说完全不克不及实现,比如cascade standby,可以级联复制,到了12c改进一版,就是Far Sync,号称是零数据损掉,对于跨区域的数据中间来说,会把延迟降到最低。
如不雅大年夜技巧架构的角度来看,安排的分布图类似下面的情势,中心有远距离的数据传输,可以经由过程中心的节点来转换,中心┞封个节点很特别,是不存数据的,只是保持一个内存构造,同步数据。
还有就是延迟,我测试过DG的延迟,和MySQL在基本相似的压力情况下,Oracle根本上控制在0.1秒阁下,MySQL的复制就会有一些延迟的放大年夜。
推荐阅读
Tomcat中Session对象部分属性值丢失问题的分析与解决
我们比来的一个 Java 项目在大年夜开辟情况迁徙到测试情况之后,碰到了一个异常诡异的问题——在将>>>详细阅读
本文标题:数据库高可用方案PK:选择Oracle还是MySQL?
地址:http://www.17bianji.com/lsqh/38483.html
1/2 1