技术开发 频道

stream replication初步研究

    Stream功能介绍

    信息共享促使企业利用各种技术把核心数据从它们的数据库中抽取出来,许多关键的商业企业需要更成熟、统一的方案,该数据抽取方案应具有充分的灵活性以适应商业企业高速发展所带来的变化,同时最大程度地降低企业的投资。

    Stream replication通过单一的解决方案满足了大部分的数据移动、事务处理以及事件管理的需要,它为建立和运营分布式企业、数据仓库、异地容灾、异构迁移、消息队列等高可用解决方案提供了必要的能力。

    Oracle提供大量的信息共享功能模块,比如advanced queuing、advanced replication、datagaurd等,这些特性提供了具有针对性的功能,并且基于不同的底层技术,Stream replication融会了这些高可用技术的精华。

    Stream replication是开放的信息共享解决方案,它支持从Oracle到非Oracle系统的捕获和应用,事务通过透明网关被应用于非Oracle系统;stream 也允许非Oracle数据源非常简单地提交或接收变化记录,允许双向的不同类型的数据移动。

    通过stream replication,复杂的环境可受益于单一的解决方案,来简化企业的信息共享,当需求发生变化时,可以扩展stream的配置,而不必学习和集成新的产品,开发人员和管理员可以花费更少的时间,而把更多的精力用于优化解决方案上。Stream replication主要被使用于以下环境:

    数据仓库装载数据

    在瞬息万变的市场上,决策层需及时了解公司的经营状况,数据分析部门就必须提供各种各样的报表,stream replication可以满足这种较短时间延迟的数据迁移;生成和维护数据仓库很关键的工作是源源不断地从生产库抽取数据,stream replication可以捕获生产系统的变化,并将这些变化传递到数据仓库,stream replication基于logminer捕获change vector的技术消除了生产系统中不必要的中间环节。

    异构平台数据复制

    在很多异构平台数据复制中,stream replication与materialized view都可以入选。在非关键业务上,materialized view还是胜任的,在关键业务上,由于materialized view log有时太大导致materialized view难以刷新,不仅会造成数据延迟较久,甚至会对生产库造成严重影响;stream repliation通过捕获生产系统的归档日志,然后通过advanced queuing传播到目标平台的队列中,对系统的影响较小。

    异地容灾数据复制

    目前流行的异地容灾方案中,datagaurd与advanced replication都有成功的案例,也有第三方的产品(比如shareplex)。由于stream replication采用logminer+advanced queuing的技术,大大地降低了对网络带宽的需求,当然比datagaurd与advanced replication更有优势;若与shareplex对比,则略有不足,主要表现在9iR2的stream replication在生产库上对归档日志进行挖掘,对生产库还是有一些影响的;在10gR2中,oracle改善了logminer的挖掘机制,不仅可以选择在本地进行挖掘,也可以选择在远程机器进行日志挖掘。

    事件消息传播机制

    Stream replication利用advanced queuing传播事件以及消息等,开发工程师或数据库管理员可以在源库中将需要传播的消息或事件写入消息队列中,AnyData队列可以将不同类型的消息写入同一个队列中,订阅者可以直接从源队列中取出消息或事件;如果是远程应用,目标应用可以从远程消息队列中获得消息或事件。logminer写入的LCRs通常写入buffered queue,如果传播过程较慢或stream pool不足,LCRs也可能写入queue table(in DISK);用户入队的事件或消息则直接写入queue table(in Disk)。

    Stream、Dataguard、Replication对比

    dataguard在高可用及容灾方面一般是dba的首选,毕竟dataguard在这方面存在压倒性的优势,不管是物理备用库(physical standby database)还是逻辑备用库(logical standby database),它们都具有一些共同的待征。所以在选择高可用方案时需要考虑如下情况:

    配置和管理方面的成本:dataguard比stream replication简单方便

    安全与稳定方面的成本:dataguard比stream replication稳定可靠

    对于一个24x7的系统来说,这些是非常重要的,系统宕机时间的增加不仅影响着公司的形象,还会影响公司的效益;采用dataguard,数据的安全性相当有保障,物理备用库可以在最短的时间完成故障切换,逻辑备用库在保障数据安全的同时,也可以承担大量的报表等业务;由于dataguard的配置与管理比较简单,同理也降低了dba的工作强度;那什么情况下选择使用stream replication呢?

    局部复制 stream可以只复制某些表或某些模式

    异构环境 充分利用现有的设备与技术

    远程容灾 stream对网络的要求较dataguard低

    stream replication有灵活的复制策略,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml,相比dataguard必须整个数据库复制而言,可以节省相当的存储投资,毕竟对于某些海量数据而言,有许多是不必要复制的。

    如果在异构环境,即不同的操作系统,那dataguard将会束手无策,非stream replication莫属,这样可以充分利用现有的环境,配置高用可方案,在异构环境,stream replication将会是advanced replication的强劲对手。

    stream replication传播的是经过logmnr挖掘并包装的逻辑改变记录(LCRs),相比dataguard传送archived redo log、advanced replication的mview log与mview刷新的方式,stream replication对网络的需求降低了很多,在远程异地容灾的过程中,租用网络带宽是一笔较高的费用,stream replication可以适当地降低这笔费用。

    advanced replication相对于dataguard,缺点是:配置与管理较复杂、安全与稳定性不够;优点:局部复制、异构环境等。advanced replication是一种相当成熟的技术,在许多关键系统中得到成功的运用,相对于9iR2推出的stream replication而言,双方适用的环境虽然相当,比如都可以进行局部复制、异构复制、远程容灾等,advanced replication目前在稳定性与安全性方面更经得起考验。

    对比stream replication与advanced replication底层的实现技术,stream replication在实时性、稳定性、高效率、低消耗(较少的cpu/network资源)等方面更有优势,但凡一些新推出的功能,都或多或少存在一些不确定的因素。

    在10gR1中,oracle针对目前stream replication存在的弱点进行了增强,不仅提供了从advanced replication迁移到stream replication的脚本,还提供了stream replication的配置与监控工具,stream replication在配置与管理方面必将智能化、简单化,担负起与shareplex争夺企业数据复制市场的重任。

    综上所述,oracle在数据复制方面,dataguard、advanced replication、stream replication都有自己的特点及独到的地方,做为dba,用什么样的方案取决于目前的设备环境、业务需求、将来的发展趋势以及已经成熟的技术。当然,对于已经选择的数据复制方案,技术上必须有一定的把握,毕竟所有的方案都不是没有问题的,即使目前较安全、稳定、便于管理的dataguard,也会出现一些莫明其妙的事情,所以最好做到良好的监控,预防可能发生的问题,问题一旦发现,能快速地解决问题。

0
相关文章