基于数据库的数据复制技术构建灾备方案有哪些?
答案部分
基于数据库的数据复制技术大体上可分为两类:数据库自己提供的数据容灾模块和第三方厂商提供的数据库复制技术。以最常见的Oracle数据库为例,Oracle自己的数据复制技术有Data Guard,Streams,Advanced Replication和Golden Gate数据复制软件。第三方厂商的数据复制技术有Quest公司的Share Plex和DSG的RealSync等。
Data Guard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。Data Guard提供了三种日志传输(Redo Transport)方式,分别是ARCH传输、LGWR同步传输和LGWR异步传输。在上述三种日志传输方式的基础上,提供了三种数据保护模式,即最大性能(Maximum Performance Mode)、最大保护(Maximum Protection Mode)和最大可用(Maximum Availability Mode),其中最大保护模式和最大可用模式要求日志传输必须用LGWR同步传输方式,最大性能模式下可用任何一种日志传输方式。
最大性能模式:这种模式是默认的数据保护模式,在不影响源数据库性能的条件下提供尽可能高的数据保护等级。在该种模式下,一旦日志数据写到源数据库的联机日志文件,事务即可提交,不必等待日志写到备用数据库,如果网络带宽充足,该种模式可提供类似于最大可用模式的数据保护等级。
最大保护模式:在这种模式下,日志数据必须同时写到源数据库的联机日志文件和至少一个目标库的备用日志文件(standby redo log),事务才能提交。这种模式可确保数据零丢失,但代价是源数据库的可用性,一旦日志数据不能写到至少一个目标库的备用日志文件(standby redo log),源数据库将会被关闭。这也是目前市场上唯一的一种可确保数据零丢失的数据库同步解决方案。
最大可用模式:这种模式在不牺牲源数据库可用性的条件下提供了尽可能高的数据保护等级。与最大保护模式一样,日志数据需同时写到源数据库的联机日志文件和至少一个备库的备用日志文件(standby redo log),事务才能提交,与最大保护模式不同的是,如果主库日志数据不能写到至少一个备库的备用日志文件(standby redo log)中,那么源数据库不会被关闭,而是运行在最大性能模式下,待故障解决并将延迟的日志成功应用在目标库上以后,源数据库将会自动回到最大可用模式下。
根据在目标库上日志应用(Log Apply)方式的不同,Data Guard可分为Physical Standby(Redo Apply)和Logical Standby(SQL Apply)两种。
Physical Standby数据库,在这种方式下,目标库通过介质恢复的方式保持与源数据库同步,这种方式支持任何类型的数据对象和数据类型,一些对数据库物理结构的操作如数据文件的添加,删除等也可支持。如果需要,Physical Standby数据库可以只读方式打开,用于报表查询、数据校验等操作,待这些操作完成后再将数据库置于日志应用模式下。
Logical Standby数据库,在这种方式下,目标库处于打开状态,通过LogMiner挖掘从源数据库传输过来的日志,构造成SQL语句,然后在目标库上执行这些SQL,使之与源数据库保持同步。由于数据库处于打开状态,因此可以在SQL Apply更新数据库的同时将原来在源数据库上执行的一些查询、报表等操作放到目标库上来执行,以减轻源数据库的压力,提高其性能。
Data Guard数据同步技术有以下优势:
1)Oracle数据库自身内置的功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不需要另外付费;
2)配置管理较简单,不需要熟悉其他第三方的软件产品;
3)Physical Standby数据库支持任何类型的数据对象和数据类型;
4)Logical Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作;
5)在最大保护模式下,可确保数据的零丢失;
Data Guard数据同步技术的劣势体现在以下几个方面:
1)由于传输整个日志文件,因此需要较高的网络传输带宽;
2)在Oracle 11g之前,Physical Standby数据库虽然可以以只读方式打开,然后做些查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,将延长切换的时间;从Oracle 11g开始不再存在该问题。
3)Logical Standby数据库不能支持某些特定的数据对象和数据类型;
4)不支持一对多复制,不支持双向复制,因此无法应用于信息集成的场合;
5)只能复制整个数据库,不能选择某个schema或表空间进行单独复制;
6)不支持异构的系统环境,需要相同的操作系统版本和数据库版本;从Oracle 11g开始,仅支持部分异构平台的DG。
Data Guard技术是Oracle推荐的用于高可用灾难恢复环境的数据同步技术。
二、 Streams数据复制技术
Streams是从版本Oracle 9i才开始具有的数据同步功能,是为提高数据库的高可用性和数据的分发和共享功能而设计的,Streams利用高级队列技术,通过用LogMiner挖掘日志文件生成变更的逻辑记录,然后将这些变更应用到目标数据库上,从而实现数据库之间或一个数据库内部的数据同步。
Streams数据同步大致分如下几个步骤:
1)Capture进程分析日志,生成逻辑记录LCR,将其放入一个队列中;
2)Propagation进程将LCR发送到另一个数据库中,通常是目标数据库;
3)在目标数据库中,Apply进程将LCR应用到目标库,实现数据的同步;
在简单的Streams配置中,Capture进程一般位于源数据库,因此叫做Local Capture Process,Capture进程在分析日志后将生成的LCR放入队列中,由Propagation进程将LCR发送到目标库中。这样做的好处是不用在网络上传送整个的日志文件,因此可提高网络传输的效率,但这一般会给源数据库带来较大的压力,影响其性能。
另一种配置是Capture进程位于Downstream数据库中,源数据库只负责将日志文件传送(日志传输方式可为ARCH传输、LGWR同步传输和LGWR异步传输中的任何一种)到Downstream数据库中,所有的Capture操作都在Downstream数据库上完成。这种配置的好处是可以大大降低源数据库的压力,缺点是需要传输整个日志文件,对网络带宽要求较高。
Streams数据同步技术有以下优势:
1)可支持一对多、多对一和双向复制,可用于数据分发和共享,这是Data Guard所不具备的;
2)可灵活配置复制数据库中的一部分对象,如可按Table复制、Schema复制、表空间复制等,并可在复制过程中对数据进行过滤和转换,使之满足不同的需要;
3)同Data Guard一样,是Oracle内置功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不需要额外付费;
4)可用于异构的操作系统和数据库版本,但有一些限制;
5)可支持非Oracle数据库和Oracle数据库之间的数据同步;
6)目标数据库处于打开状态,可以在保持数据同步的同时执行查询等操作,分担源数据库的压力;
Streams数据同步技术有以下缺点:
1)配置维护较复杂,需要较高的技术水平;
2)在非Downstream复制中,对源数据库压力较大;如果使用Downstream复制,则增加了配置的复杂性且需要通过网络传输整个日志文件,对网络带宽要求较高;
3)不能支持某些特定的数据对象和数据类型;
4)不能保证数据的零丢失;
Oracle公司将Streams技术定位于数据的分发和共享,虽然也可用于高可用的灾难恢复场合,但Oracle推荐使用的灾难恢复技术是Data Guard。
三、 Advanced Replication数据复制技术
Advanced Replication配置管理较复杂,且对源数据库性能影响较大,在以后的Oracle版本中将可能逐步被Streams技术所取代。
四、 Golden Gate数据复制技术
Golden Gate原来是一家独立的软件厂商的产品,现该产品已被Oracle公司收购,Oracle将Golden Gate软件集成到到其“融合(Fusion)”中间件中,预计以后该产品将与Oracle数据库更紧密地集成。Golden Gate可以用于多种不同的操作系统平台(Unix、Linux、Windows)和多种不同数据库系统(如DB2、Oracle、Infomix、MySQL、Sybase等)之间的数据同步,是一款优秀的数据同步及数据分发产品。
GoldenGate是一种基于软件的数据复制方式,它从数据库的日志中解析数据的变化(数据量只有日志的四分之一左右),并将数据转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式如Oracle Net,而且可以通过高达9:1的压缩比率对数据进行压缩,大大降低带宽需求。在目标端,GoldenGate可以通过交易重组、分批加载等技术大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在秒一级实现大量数据的复制。
作为一种软件方案,GoldenGate 可以采用非常灵活的方式加以配置,包括单向复制、双向复制和多层次的数据复制。特别是其在双向数据复制领域的先进技术,可以满足用户在本地或广域网络环境中的各种复杂需求。
GoldenGate数据库复制技术具有如下特性∶
Ø 本机数据改变捕捉:作为一个基于日志的同步解决方案,将对源系统和网络的影响减少到最低。
Ø 灵活性:源和目的系统不需要有一样的操作系统、数据库及模板(例如∶表,索引,等)。GoldenGate能在同一个系统的多个数据库实例之间实现数据复制,或把数据复制到局域网内的其它数据库实例,或把数据复制到广域网上的远端数据库实例。
Ø 无需宕机时间的移植:GoldenGate能在不同版本的数据库和操作系统之间同步数据。数据库,操作系统或应用系统的更新可以在辅助系统里进行。一旦更新后的辅助系统通过了完整的测试,所有的处理工作就可以切换到辅助系统,然后更新主系统。一旦主系统的更新完成了,主与辅助系统之间能够再一次同步而无宕机时间。
Ø 不依赖于硬件和数据库:GoldenGate不依赖于操作系统,数据库和硬件。数据可以在不同的环境之间移动,因而消除了客户对任何拓扑结构的依赖性。
Ø RPO与RTO的目标:GoldenGate提供了立即恢复备份的装备。这是因为源和备份系统可以配置或构架设计为双向”端到端”的功能。
Ø 双向复制:GoldenGate提供了两个或两个以上生产系统之间的数据复制功能。这些系统无须具有一样的属性或相同的操作系统,数据库或数据库版本。
Ø 数据一致性:备份数据库支持读一致性的查询活动(交易的一致性在任何时候都受到保护)。
Ø 灵活的拓扑结构:在数据库和表一级实现了多种相关数据的分部方式。例如∶支持一对多,多对一,多对多以及分层的配置。
Ø 映射与转换功能:列转换能够适应特别的备份需要,包括查看和执行存储过程。
Ø 数据选择:选择性的复制数据而不是全部,例如表,行和列。
GoldenGate是一种基于数据库日志的数据复制产品,可以利用极少的系统开支,实时复制数据库,改善数据可用性。GoldenGate可以在数据移植、在线维护等场合应用,以减少或消除数据库的停机时间。同时,它还可用于数据容灾、负载均衡、数据集中、数据分布等应用中。GoldenGate可确保在这些工作进行时,源系统的正常事务处理得以继续进行,功能上不受影响。
五、 Share Plex数据复制技术
Share Plex是Quest公司开发的用于专门用于Oracle数据库的数据同步软件,可以运行在异构的操作系统平台上和Oracle数据库的不同版本之间。
Share Plex的数据复制原理与Golden Gate类似,需要分别在源数据库服务器和目标数据库服务器上安装Share Plex软件。具体处理过程是:Capture进程分析源数据库的日志文件,抓取所需的数据变更操作,将其存储在Share Plex自己专有的queue文件中,放入到Capture Queue,然后由Read进程对queue文件进行封装处理,将其放入到Export Queue中,由Export进程将queue文件通过网络发送到目标服务器上,目标服务器上的Import进程接收这些queue文件,将其放入到Post Queue中,最后由Post进程将这些queue文件中的变更应用到目标数据库中,其处理流程如下图:
Share Plex数据同步技术的优势有:
Ø 支持异构的操作系统平台,便于数据库管理系统的版本升级及操作系统平台切换;
Ø 跟Data Guard传输整个日志文件相比,Share Plex传输的数据量大大降低,这点跟Golden Gate差不多;
Ø 目标数据库处于打开状态,且支持一对多、多对一、双向复制等配置,也可以选择部分对象进行复制,可满足数据分发和数据集成的需要,减轻源数据库压力,这方面也类似于Golden Gate;
Ø 所占系统资源较少,通常在10%以下。
Share Plex数据同步技术的劣势体现在以下几个方面:
Ø 需要支付额外的Liscense费用,通常是一笔不小的支出;
Ø 需要在数据库软件外安装一套专门数据同步软件,增加了管理维护的复杂程度;
Ø 由于数据复制操作独立于数据库管理系统,因此不能确保数据零丢失;
Ø 由于是第三方的软件产品,在对某些特定的数据对象、数据类型和Oracle某些新特性如ASM的支持方面不如数据库厂商自己的解决方案;另外,还有一种可能就是如果Oracle对自己的日志格式做些改变或加密,Share Plex将无能为力。
从上述分析可知,Share Plex虽然专用于Oracle数据库同步,但同Golden Gate相比并无明显优势,Golden Gate对异构数据库的支持更是Share Plex所不能比。
除了上述数据同步技术外,在国内市场上用于Oracle数据同步的产品还有DSG 公司的Real Sync软件,Real Sync的实现原理及功能与Share Plex基本类似,也是只支持Oracle数据库,也可以跨越不同的操作系统平台。值得一提的是Real Sync在目标数据库的数据装载方面,不是通过主键或唯一键来实现数据记录的定位,而是自己维护一个源数据库和目标数据库的数据记录的rowid mapping表,通过rowid来实现记录的定为,因此在数据装载效率方面有不小的提高。
对比项 | DataGuard | Stream | Advenced Replication | GoldenGate |
---|---|---|---|---|
原理 | 基于Redo Apply和日志挖掘,通过传播线程将归档日志由源数据库传到目的数据库 | 基于日志挖掘 | 基于触发器(trigger)。所有复制对象结构(DDL)的改变,都必须通过Oracle提供的复制包来实施 | 基于日志挖掘 |
主要用途 | 灾备恢复、高可用性 | 数据共享 | 数据同步 | 高可用与容灾、实时数据集成 |
实现简易程度 | 实现过程和管理简单 | 实现过程复杂,对DBA的要求非常高 | 配置和管理复杂 | 配置较简单 |
安全性与稳定性 | 较稳定、可靠 | 稳定、可靠 | 稳定、一般 | 稳定、可靠 |
对源数据库的性能影响 | 一般 | 一般 | 基于触发器原理,对主库影响比较大,生产系统一般不适用 | 亚秒级复制,对源数据库影响非常小(独立的软件,并且只是针对redo日志的扫描) |
拓扑结构 | 支持一对多模式,standby数据库最多为9个 | 支持一对一、一对多、多对一、双向复制等多种拓扑结构 | 支持一对多模式或者包含多个Master Site | 支持一对一、一对多、多对一、双向复制等多种拓扑结构 |
是否支持操作系统异构 | 不支持 | 支持,但是有限制 | 支持 | |
收费情况 | 免费 | 免费 | 免费 | 收费 |
数据库类应用容灾产品,采用安装在主机端的应用软件实现容灾,其最大的优势是可为数据库数据提供应用级别的保护,对网络带宽要求较低,容灾网络基于IP网络构建,成本较低;其劣势是仅能对数据库数据提供保护,并且对源数据库都有或多或少的性能影响。
经过对以上几种数据库复制技术的分析,DataGuard、Stream、Advenced Replication是专为Oracle数据库开发的灾备模块,适合于同构平台的Oracle数据库容灾;Shareplex适合于异构平台的Oracle数据库容灾;GoldenGate适合于异构平台和异构数据库的容灾与应急备份,消除计划内停机、双业务中心、数据仓库实时供给、实时报表等应用场景需求。
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。