`
frank1998819
  • 浏览: 764658 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

使用Active Dataguard Reader Farm实现读写分离(转)

 
阅读更多

使用Active Dataguard Reader Farm实现读写分离

原文链接:

http://www.dbaleet.org/seperate_read_and_write_by_oracle_active_dataguard_reader_farm/

Oracle Database 作为通用关系型数据库,常常需要满足客户的各种不同的业务模式,最典型的如交易密集型系统,决策分析型系统等等。很多人都发现了这么一个规律:互联网公司例如Google,Facebook等很少甚至没有使用Oracle的数据库产品,于是乎得出一个结论:互联网公司的基因决定了MySQL之类的开源数据库最佳之选,而Oracle Database并不适用于互联网公司的业务场景,故选用Oracle的产品是不明智的。这句话乍看上去有一定的道理,Oracle Database本身过于庞大,对于要求业务逻辑要求灵活多变的互联网确实不是太搭噶。

互联网公司是很少使用Oracle Database,但这其中最重要的因素绝非是技术层面的。绝大多数互联网公司都会对Oracle那价格不菲的license退避三舍,况且前面已经有足够使用开源技术的范例可以参详,购买Oracle Database实属毫无必要。互联网公司的业务逻辑比较类似,大多数(不是所有)互联网公司都是内容提供商,绝大多数业务以读为主,所以系统设计最基本的一条就是实现读写分离。那么有没有一些互联网公司基于Oracle Database来实现读写分离呢?又是怎么实现的呢?

据我所致,国外很多内容提供商都是基于Oracle Database实现的读写分离。例如Netflix, Amazon, Pandora等。早期Oracle Database自身能实现读写分离的技术非常有限,能做到实时同步的更是屈指可数。因为早期的Dataguard无法在应用日志的时候同时打开,最常用的技术都是逻辑复制的技术,例如Streams,Logical Standby,goldengate等。逻辑型复制技术存在的一个最大的问题就是无法保障同步的实时性,即使是goldengate也只能提供准实时的数据同步。另外就是逻辑性复制受限于业务逻辑本身,如果存在大量大事务,则可能出现拥塞,对于读写密集型的业务而言这种方式基本不可取。而11g的新特性Active Dataguard则很好的解决了这个问题。

Active Datagurad, 简单的说也就是可以打开的Dataguard,可以在应用Primary传过来的日志的同时将数据库以read only的模式打开。那么也就意味着,有了Active Dataguard, Standby Database不仅仅只是DR了,而是可供实时查询的备库,可以做到将“闲置”资源充分利用起来。而Active Dataguard Reader Farm看似是一个新名词,其实就是多个Active Standby组成的一个Farm,供大量的实时查询来使用。

<img class="alignnone size-full wp-image-480" title="dg reader farms" src="http://www.dbaleet.org/wp-content/uploads/2012/12/dg-reader-farms.png" alt="" width="668" height="471" />

当然以上只是一张概念图,以下是Apple使用Active Dataguard Reader Farm的一张架构图:

<img class="alignnone size-full wp-image-481" title="apple active dg reader farm" src="http://www.dbaleet.org/wp-content/uploads/2012/12/apple-active-dg-reader-farm.png" alt="" width="684" height="477" />

简单地对以上架构图做一些阐述:

1. Primary Database通常还会连接另外一个最大可用性模式的的Standby Database作为DR,以同步的方式应用Primary的变更。一旦Primary Database发生故障就可以切换到Standby Database而不会丢失任何数据。

2. Active Dataguard Reader Farm一般采用异步实时的模式应用日志,防止对Primary Database造成负面影响。在11.2还可以通过Query SLA的来监控和控制。通过V$DATAGUARD_STATS和V$STANDBY_EVENT_HISTOGRAM来监控其延迟,以及通过session级别设置STANDBY_MAX_DATA_DELAY来控制其延迟的行为。

3. 在应用服务器层面进行负载均衡,将多个应用服务器发送过来的请求通过一个硬件的load balancer (例如BigIP F5或者Citrix NetScaler ADC)均衡分布到Active Dataguard Reader Farm的各个节点。

4. 另外注意到有一个细节就是,在Standby Database上还可以级联一个或者多个Active Dataguard作为Reader Farm中的节点。这个主要因为在11.1中,1个Primary Database只能有9个Standby Database的限制导致的。在11.2中不存在这个限制。

这样,应用所有的查询操作就均衡的分布到Active Dataguard Reader Farm节点,但是如果是变更操作应该如何处理呢?通常有两种处理手段: 第一种手段就是在应用层面做严格的区分,使得连接到Active Dataguard Reader Farm节点都是查询操作,连接到Primary Database的都是DML操作,当然这只是一种比较理想的模式。另外一种方式是在应用层面不进行区分,应用不直接连接到Primary Database,而是通过建立从Active Dataguard Reader Farm节点到Primary Database的dblink来做DML。

而如果需要了解Active Dataguard Reader Farm节点本身的负载情况,可以收集statspack或者ASH报告进行分析。

综上,Active Dataguard Reader Farm架构至少存在以下优势:

1. 管理维护简单,DBA只要熟悉Dataguard的管理即可,无需再额外学习其他方面的新知识;

2. Active Dataguard Reader Farm节点是灵活可扩展的,可以在线添加或者删除节点,并且可以线性扩展而不对生产系统造成影响;

3. 可以真正做到实时查询,不会应为大事务造成同步阻塞,性能有保障;

4. 没有数据类型的限制;

5. 高可用性, 节点的宕机都不会影响到数据库的可用性。

但是同时也需要注意:

1. Active Dataguard是11g数据库单独的一个option,需要单独付费的。

2. 无法在Active Dataguard Reader Farm节点单独创建索引进行查询优化。

3. 在所有Active Dataguard Reader Farm节点上sql的执行计划最好保持一致。

以上仅仅只是对Active Dataguard和Active Dataguard Reader Farm做一个简单的介绍,不可能涵盖到所有的方面。稍后我会上传Active Dataguard Best Practices以及如何Active Dataguard 的Hands on Lab到评论中,请自行查阅。

分享到:
评论

相关推荐

    使用Active DataGuard实现Oracle读写分离.pdf

    总结来说,Active DataGuard是Oracle数据库实现读写分离的关键技术,它通过实时同步主库和备库的数据,使得备库能在不影响主库性能的前提下提供只读服务,从而极大地提升了系统整体的读取性能和用户体验。...

    使用Oracle Active Data Guard实现PMS2.0数据库读写分离初探.pdf

    使用Oracle Active Data Guard实现PMS2.0数据库读写分离初探 本文研究了使用Oracle Active Data Guard实现PMS2.0数据库读写分离,以解决PMS2.0业务系统中数据库I/O吞吐量和资源耗用的性能瓶颈问题。本文首先介绍了...

    Active Dataguard

    4. **物理复制与性能**:使用物理复制而非逻辑复制,Active DataGuard可确保复制过程对数据库性能影响最小。 5. **故障切换机制**:提供手动或自动故障切换机制,保证在故障发生时可以迅速恢复服务。 6. **Oracle...

    大牛教你配置Oracle 11g Active Dataguard

    在不影响主数据库性能的情况下,Active Data Guard还支持使用Logical Standby功能进行报表查询,将读取压力转移到standby数据库,提高整体系统的性能。 9. **安全性和审计**: 配置Active Data Guard时,也要考虑...

    Linux环境下Oracle 11gR2 RAC与Active Dataguard的部署指南

    同时,还介绍了如何基于RAC主库创建单实例Active Physical Dataguard,并验证Dataguard的功能及其与RAC之间的角色转换方法。 适合人群:数据库管理员,IT专业人员及对Oracle RAC感兴趣的技术人员。 使用场景及目标:...

    Active Dataguard实践记录

    在Oracle数据库环境中,Active Data Guard (ADG) 是一种高可用性和灾难恢复解决方案,它允许在主数据库处于活动状态时创建一个实时同步的备用数据库。本文将深入探讨在Oracle 11g环境下如何构建单实例ADG的过程,...

    Oracle 11gR2使用Active Data Guard 搭建物理 Data Guard.

    大牛出手,全是干货,Oracle 11gR2使用Active Data Guard 搭建物理 Data Guard。 注:文档打开密码见压缩包注释 看不到注释的 文档打开密码 tianlesoftware

    运用logical standby技术实现Oracle数据库的读写分离

    在 MySQL 中,这通常通过简单的配置实现,但在 Oracle 中,由于其复杂性,实现读写分离可以采用多种方式,如 RAC、Streams、Golden Gate 或 Logical Standby。 Logical Standby 是 Oracle Data Guard 功能的一部分...

    Oracle 19c CDB RAC to RAC for Active Dataguard部署

    Oracle 19c CDB RAC To RAC ActiveDataguard部署方案 Oracle 19c CDB RAC To RAC ActiveDataguard部署方案

    oracle Active DataGuard配置和维护-完整版

    Oracle Active Data Guard是Oracle数据库的一项高级特性,用于实现高可用性和灾难恢复。它允许在不同地点或者同一地点的不同系统上维护一个实时的备用数据库,以便在主数据库发生故障时,可以无缝地切换到备用数据库...

    基于Oracle数据库的读写分离电子商务系统的设计与实现.docx

    通过配置两个数据源(一个用于写操作,另一个用于读操作),可以在应用层实现读写分离。 - **实现细节**:在具体实施时,需要根据请求类型(读或写)来动态选择合适的数据源。这通常可以通过自定义的数据源选择策略...

    进阶一步一步在Linux上部署Oracle 11.2.0.3 RAC+Dataguard

    Install Oracle 11gR2(11.2.0.3.0) RAC +Active Dataguard on Oracle Enterprise Linux(OEL5.5 X86_64) 本文档用于详细记录在 OEL 5.5 X86_64 位系统上安装配置 Oracle 11gR2(11.2.0.3.0)RAC 的步骤、RAC 数据库的...

    ogg与dataguard对比

    - **接管时间**:DataGuard 在接管业务时需要将数据库从只读状态切换到读写状态。 - **Oracle GoldenGate**: - **接管时间**:OGG 支持立即接管,无需等待状态切换即可立即投入使用。 #### 八、复制方式对比 ...

    官方资料:Oracle Active Data Guard新特性_白皮书.pdf

    使用物理备用数据库进行致据库滚动升 级和备用数据库优先修补•跨越任意距商实现枣致据丟失的灾难恢 H保护而不会影响性能• Active Data Guard 足 Oracle 数据库企 业版包含的基本Da丨a Guard功能的一 个超集。

    Oracle 白皮书 dataguard vs storage mirroring

    Oracle 白皮书《Oracle Active Data Guard vs Storage Remote Mirroring》深入探讨了Oracle Dataguard与存储远程镜像之间的差异,突显了Oracle Dataguard在企业数据保护和应用程序高可用性方面的优越性。本文旨在为...

    DataGuard原产培训

    DataGuard可以与其他Oracle产品,如GoldenGate、Real Application Clusters (RAC)等,结合使用,实现更高级别的数据保护和高可用性解决方案。 总结 DataGuard是Oracle数据库系统中的关键容灾技术,通过实时数据...

    oracle—DataGuard

    ### Oracle DataGuard 知识点总结 #### 一、Oracle DataGuard 概念与作用 - **Oracle DataGuard**:是Oracle提供的一项用于提高数据库高可用性和灾难恢复能力的技术。它通过在生产环境(Primary Database)之外...

    oracle dataguard 运维正确停机启动步骤

    Oracle RAC (Real Application Clusters) 和 Oracle DataGuard 是两个非常重要的技术,前者用于实现数据库的高可用性和负载均衡,后者则侧重于提供灾难恢复的能力。在实际操作过程中,正确地进行停机与启动是非常...

    DataGuard基本原理和管理手册(英).pdf

    - **负载均衡**:利用物理备库和逻辑备库,可以在一定程度上实现读写分离,减轻主数据库的压力。 - **数据分析**:利用Snapshot Standby Database进行报表生成和数据分析,提高效率。 #### 六、DataGuard的最佳实践...

    Oracle11G数据库DataGuard灾备切换方案.pdf

    本文档介绍了 Oracle 11G 数据库 DataGuard 灾备切换方案,旨在帮助数据库管理员快速实现灾备切换,确保数据安全和可用性。 一、检查 在进行灾备切换之前,需要检查以下几个方面: 1. 确定 MRP 进程在正常运行。...

Global site tag (gtag.js) - Google Analytics