最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

Oracle实时数据采集(一)-技术选型

[复制链接]
跳转到指定楼层
楼主
发表于 2022-8-31 09:38:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
方案选择
一、比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新;二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblink来完成。
二、通过物化视图定时刷新来实现数据同步。物化视图刷新方式有增量刷新和完全刷新两种模式;
三、高级复制,分为多主复制和物化视图复制两种模式。其中多主复制能进行双向同步复制和异步复制;物化视图用于单向复制,定时刷新,与第二条类似;
四、流复制,可实现实时和非实时同步;
五、GoldenGate复制,Oracle新买的复制产品,后面应当会取代流复制。它不仅能提供Oracle数据库之间的数据复制支持,还支持在不同种数据库之间的数据同步,也可设置实时和非实时同步;
六、DataGurd,此技术主要用于容灾备份,是整个库级别的备份。
其中第一、二和三采用的是Oracle数据库内部的机制来实现;而第四、五和六采用挖掘数据库日志的方式实现;后三种在性能上会更好一些。
第三方提供的数据同步方案:
主要根据实现机制分为两大类:
1,采用挖掘数据库日志的方式实现
市场上用的比较多的,如Quest SharePlex, DSG RealSync 。此类软件与Oracle 新收购的GoldenGate工具类似。
2,采用相关软件在存储级进行复制
IBM,EMC等存储厂商可以实现,使用第三方存储管理软件,如Veritas Replication也可实现。此类方式应用场景与上面6类似。
同步软件技术实现对比
基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术。Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和一款叫做GoldenGate的数据同步软件。第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync。下面对这些技术逐一进行介绍。
一、DataGuard数据同步技术
DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步。DataGuard提供了三种日志传输(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)方式的不同,DataGuard可分为Physical Standby(Redo Apply)和Logical Standby(SQL Apply)两种。
Physical Standby数据库,在这种方式下,目标库通过介质恢复的方式保持与源数据库同步,这种方式支持任何类型的数据对象和数据类型,一些对数据库物理结构的操作如数据文件的添加,删除等也可支持。如果需要,Physical Standby数据库可以只读方式打开,用于报表查询、数据校验等操作,待这些操作完成后再将数据库置于日志应用模式下。
Logical Standby数据库,在这种方式下,目标库处于打开状态,通过LogMiner挖掘从源数据库传输过来的日志,构造成SQL语句,然后在目标库上执行这些SQL,使之与源数据库保持同步。由于数据库处于打开状态,因此可以在SQL Apply更新数据库的同时将原来在源数据库上执行的一些查询、报表等操作放到目标库上来执行,以减轻源数据库的压力,提高其性能。
DataGuard数据同步技术有以下优势:
1) Oracle数据库自身内置的功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不需要另外付费;
2) 配置管理较简单,不需要熟悉其他第三方的软件产品;
3) Physical Standby数据库支持任何类型的数据对象和数据类型;
4) Logical Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作;
5) 在最大保护模式下,可确保数据的零丢失;
DataGuard数据同步技术的劣势体现在以下几个方面:
1) 由于传输整个日志文件,因此需要较高的网络传输带宽;
2) Physical Standby数据库虽然可以只读方式打开,然后做些查询、报表等操作,但需要停止应用日志,这将使目标库与源数据不能保持同步,如果在此期间源数据库发生故障,将延长切换的时间;
3) Logical Standby数据库不能支持某些特定的数据对象和数据类型;
4) 不支持一对多复制,不支持双向复制,因此无法应用于信息集成的场合;
5) 只能复制整个数据库,不能选择某个schema或表空间进行单独复制;
6) 不支持异构的系统环境,需要相同的操作系统版本和数据库版本;
DataGuard技术是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) 可支持一对多、多对一和双向复制,可用于数据分发和共享,这是DataGuard所不具备的;
2) 可灵活配置只复制数据库中的一部分对象,如可按Table复制、Schema复制,表空间复制等,并可在复制过程中对数据进行过滤和转换,使之满足不同的需要;
3) 同DataGuard一样,是Oracle内置功能,与每个Oracle新版本的新特性(如ASM)都完全兼容,且不需要额外付费;
4) 可用于异构的操作系统和数据库版本,但有一些限制;
5) 可支持非Oracle数据库和Oracle数据库之间的数据同步;
6) 目标数据库处于打开状态,可以在保持数据同步的同时执行查询等操作,分担源数据库的压力;
Streams数据同步技术有以下缺点:
1) 配置维护较复杂,需要较高的技术水平;
2) 在非Downstream复制中,对源数据库压力较大;如果使用Downstream复制,则增加了配置的复杂性且需要通过网络传输整个日志文件,对网络带宽要求较高;
3) 不能支持某些特定的数据对象和数据类型;
4) 不能保证数据的零丢失;
Oracle公司将Streams技术定位于数据的分发和共享,虽然也可用于高可用的灾难恢复场合,但Oracle推荐使用的灾难恢复技术是DataGuard。
三、Advanced Replication数据同步技术
Advanced Replication配置管理较复杂,且对源数据库性能影响较大,预计在以后的Oracle版本中将可能逐步被Streams技术所取代,故不再对其做过多的介绍。
四、GoldenGate数据同步技术
GoldenGate原来是一家独立的软件厂商的产品,现该产品已被Oracle公司收购,Oracle将GoldenGate软件集成到到其“融合(Fusion)”中间件中,预计以后该产品将与Oracle数据库更紧密地集成。GoldenGate可以用于多种不同的操作系统平台(Unix、Linux、Windows)和多种不同数据库系统(如DB2、Oracle、Infomix、MySQL、Sybase等)之间的数据同步,是一款优秀的数据同步及数据分发产品。
GoldenGate软件需要安装在源数据库服务器和目标数据库服务器上,所需的操作系统资源在10%以下。GoldenGate数据同步的基本原理是由Extract进程读取源数据库的事物日志(Oracle中是redo log),将其中的变更操作(insert、update、delete等)按事务执行的顺序组合在一起,直接将其发送到目标服务其上,或者存放到Trails文件中,然后由Data Pump进程将Trails文件传输到目标服务其上,在目标服务器上Collector进程接收从源服务器传送过来的Trails文件,最后由Replicat进程将Trails文件中的数据装载到目标数据库中,其处理过程如下图:
由于GoldenGate将数据存储到自己的统一格式的Trail文件中,因此可以将Trail文件传送到不同的操作系统,应用在不同的数据库系统上,大大增强其灵活性。另外,由于GoldenGate只收集必要的数据到Trail文件中,且Trail文件可以压缩,因此大大减少通过网络传输的数据量,压缩后传输的数据量通常是日志量的1/4或更少。
GoldenGate有以下优点:
1) 支持异构的操作系统和数据库管理系统,便于客户在不同数据库管理系统和操作系统平台之间的数据同步,这是其核心优势所在;
2) 跟DataGuard传输整个日志文件相比,GoldenGate传输的数据量大大降低,在没有LOB等数据对象的情况下,通常是整个日志文件1/4或更少;
3) 目标数据库处于打开状态,且支持一对多、多对一,双向复制等,也可以选择部分对象进行复制,可满足数据分发和数据集成的需要,减轻源数据库压力;
4) 所占系统资源较少,通常在10%以下;
5) GoldenGate被Oracle公司收购后,预计对Oracle数据库的支持方面会做的更好;
GoldenGate的劣势体现在以下几个方面:
1) 需要支付额外的Liscense费用,通常是一笔不小的支出;
2) 需要在数据库软件外安装一套专门数据同步软件,增加了管理维护的复杂程度;
3) 不能支持某些特定的数据对象和数据类型;
4) 由于数据复制操作独立于数据库管理系统,因此不能确保数据零丢失。
由以上分析可知,GoldenGate用于数据整合,数据共享和分发方面比较合适,至于在高可用的灾难恢复环境中,如果能满足业务的RPO/RTO要求,也不失为一种理想的数据同步解决方案。
五、SharePlex数据同步技术
SharePlex是Quest公司开发的用于专门用于Oracle数据库的数据同步软件,可以运行在异构的操作系统平台上和Oracle数据库的不同版本之间。
SharePlex的数据复制原理与GoldenGate类似,需要分别在源数据库服务器和目标数据库服务器上安装SharePlex软件。具体处理过程是:Capture进程分析源数据库的日志文件,抓取所需的数据变更操作,将其存储在SharePlex自己专有的queue文件中,放入到Capture Queue,然后由Read进程对queue文件进行封装处理,将其放入到Export Queue中,由Export进程将queue文件通过网络发送到目标服务器上,目标服务器上的Import进程接收这些queue文件,将其放入到Post Queue中,最后由Post进程将这些queue文件中的变更应用到目标数据库中,其处理流程如下图:
SharePlex数据同步技术的优势有:
1) 支持异构的操作系统平台,便于数据库管理系统的版本升级及操作系统平台切换;
2) 跟DataGuard传输整个日志文件相比,SharePlex传输的数据量大大降低,这点跟GoldenGate差不多;
3) 目标数据库处于打开状态,且支持一对多、多对一,双向复制等配置,也可以选择部分对象进行复制,可满足数据分发和数据集成的需要,减轻源数据库压力,这方面也类似于GoldenGate;
4) 所占系统资源较少,通常在10%以下;
SharePlex数据同步技术的劣势体现在以下几个方面:
1) 需要支付额外的Liscense费用,通常是一笔不小的支出;
2) 需要在数据库软件外安装一套专门数据同步软件,增加了管理维护的复杂程度;
3) 由于数据复制操作独立于数据库管理系统,因此不能确保数据零丢失;
4) 由于是第三方的软件产品,在对某些特定的数据对象、数据类型和Oracle某些新特性如ASM的支持方面不如数据库厂商自己的解决方案;另外,还有一种可能就是如果Oracle对自己的日志格式做些改变或加密,SharePlex将无能为力;
从上述分析可知,SharePlex虽然专用于Oracle数据库同步,但同GoldenGate相比并无明显优势,GoldenGate对异构数据库的支持更是SharePlex所不能比。再者,现在GoldenGate已经被Oracle公司收购,成为了Oracle的嫡系部队,这对SharePlex来说确实是一件不幸的事,关乎生死。
除了上面介绍的这些数据同步技术外,在国内市场上用于Oracle数据同步的产品还有DSG 公司的RealSync软件,RealSync的实现原理及功能与SharePlex基本类似,也是只支持Oracle数据库,也可以跨越不同的操作系统平台。值得一提的是RealSync在目标数据库的数据装载方面,不是通过主键或唯一键来实现数据记录的定位,而是自己维护一个源数据库和目标数据库的数据记录的rowid mapping表,通过rowid来实现记录的定为,因此在数据装载效率方面有不小的提高
日志解析类工具对比:对比项GoldenGateQuest SharePlexDSG RealSync
公司背景GoldenGate成立于1995年,一直专注于数据库复制领域,现在已经被Oracle收购,能够得到数据库厂商大力支持,正在开发整合后的新版本,届时功能和性能均能进一步提高。Quest Software成立于1987年,公司总部位于美国加州。公司致力与数据库管理软件,SharePlex只是其众多产品中一个非主流的小产品。DSG北京公司于2002年8月在北京成立,前身是DSGuardian Inc,注册于美国。主要产品为数据库复制及备份软件。只有几十个人的国内小公司。
数据库厂商支持Oracle公司产品,能够与数据库一起进行技术支持,并且产品持续与Oracle数据库进行整合中。(☆☆☆☆☆)与Oracle有合作关系,但因Oracle不完全公开日志格式,在复制领域无法得到更多技术支持,出现问题后Oracle无法进行支持,版本兼容性容易出现问题。与Oracle无关系。其产品为一位前Oracle人员开发,只有此人能够解决问题,技术力量差,无法对Oracle后继版本有效支持。同样因Oracle不完全公开日志格式,在复制领域无法得到更多技术支持,出现问题后Oracle无法进行支持。
产品成熟度GoldeGate产品最早发布于1995年,目前版本为10.4,产品成熟度高,在全球有超过2000多个成功案例。SharePlex产品最早发布于1999年,目前的版本为7,产品成熟性比较高,在全球有近千个成功案例产品推出时间较短,很不成熟,会出现各种问题,经常需要开发人员在客户现场修改代码,并在客户生产环境中测试运行。仅在国内有少量案例。
兼容性和可扩展性支持Oracle、DB2、SQL Server、Sybase、MySQL、Teradata等各种数据库平台(☆☆☆☆☆)仅支持Oracle。仅支持Oracle。
复制机制基于交易(Transaction)的复制,可以保证数据复制过程中交易的完整性。只复制提交交易,保证数据一致性。使用常规加载方式装载数据,可靠性高。(☆☆☆☆☆)基于SQL的复制,无法保证复制过程中交易数据的一致性。(例如,如果两边数据集不同,则相同sql可能产生不同结果)
复制所有提交和回滚交易,会造成资源浪费,也容易造成两端数据不一致。(其优势是无需保存一定时间归档日志,同时复制无需等待交易提交,对大交易速度较快)基于交易(Transaction)的复制,可以保证数据复制过程中交易的完整性。
只复制提交交易。
使用Direct Inser模式插入数据,效率较高但有以下问题:
1 Direct模式复制过程中不检查约束,无法保证目标数据一致性。例如,A表通过外键依赖于B表,如果B表数据出现丢失,A表数据通过Direct Insert会正常插入而不检查约束,导致A、B两表数据不一致;
2 只在高水位线以上插入数据,不充分利用高水位线以下空间,会造成数据库占用空间持续增大,表空间利用率非常低,可维护性差。
3 有客户反映目标记录会出现重复(例如,一个带有主键的表在目标却出现两个相同记录,只是rowid不同)。这是因为direct insert不检查约束的原因。
另外,由于其以来rowid进行映射,如果数据库维护过程中出现行迁移操作,会使数据复制紊乱,需要重新建立复制关系。例如,以下操作会引起行迁移:
alter table move tablespace
alter table split partition
alter table merge partition
alter table move
shrink tablespace
数据类型支持支持XML Types,Nested tables,Clustered tables,IOT from/to Non-IOT不支持XML Types,Nested tables,Clustered tables,IOT from/to Non-IOT-
数据过滤和变换GoldenGate提供丰富的内建函数,只需简单配置即可实现灵活的数据过滤和转化,无需消耗数据库本身资源。(☆☆☆)Quest SharePlex需要依赖Trigger、SP等数据库内部对象实现过滤和转换,系统消耗高,实现复杂。(需验证)机制应当与Quest类似
源系统插入性无需在源端插入任何表、触发器、存储过程等数据库对象,对生产库影响非常小。(只针对DML复制)(☆☆☆)需要在源端建立部分中间表,对源库产生一定影响。需要在原系统上插入大量的数据表,这些数据表占用大量的存储空间,维护起来相当麻烦;如果一旦这些中间表丢失数据,需要花费大量的时间重建复制,是可靠性不高的一种设计。
系统资源占用正常复制时与数据库交互极少(只有在读取数据字典和日志中没有完整数据如大对象时才会访问源库),复制效率高,对源系统的影响非常小,所有复制进程CPU占用率在5%以内(☆☆☆)需要与数据库交互,复制效率相对低,所有复制进程CPU占用率在10%以内。据称其最新版本资源占用与OGG基本相当。复制进程CPU占用率在10%以内
数据复制能力1,000G-1,8000G日志量/天提供若干小交易合并为一个大交易和大交易拆分为小交易的选项,对于OLTP应用性能非常高。(☆☆☆☆)Quest最新版本7性能得到了很大提高,基本和GoldenGate类似,具体数据不明。其以前的版本只能复制300G-400G日志量/天。由于复制回滚交易,无法提供交易合并和拆分的功能。因为其使用了Direct Insert模式,DSG的性能比较高。这种模式可靠性低,只是用来作为批量加载,Oracle不推荐作为实时复制。
容错能力软件使用检查点机制记录当前完成复制的位置。在日常运行过程中,如果由于网络中断、数据库实例失败、存储空间不够等原因造成复制停止,GoldenGate能够以自定义间隔自动检测并在异常排除后立即自动恢复复制,保障数据无丢失,使得管理和维护工作中人工介入降低到最小。(☆☆☆)异常情况排除后,软件需要确认两端数据库中的大量信息,然后才能重新开始复制。这个确认过程最少需要几十分钟的时间,扩大了复制中断的时间。由于产品问题,会频繁出现数据不一致错误,每次出现错误后,都需要大量的手工维护工作,才能继续复制
初始化Goldengate可以和oracle数据库实现无缝结合,充分利用oracle的rman,data pump,exp/imp,在保证数据一致性的情况下,可以高速地实现数据初始化。Quest也可以利用oracle的exp/imp初始化工具。由于DSG基于rowid实现源和目标的同步,因此必须使用其自己的初始化工具进行初始化,速度比较快,但初始化过程中要求生产端不能有数据变化或者编译存储过程等维护操作,否则会造成数据不一致。
OGG和DSG均采用transaction复制机制, 但是我们不希望采用ogg因为太笨重, 也不会使用DSG因为他采用direct insert不能保证数据一致性, 鉴于此, 我们决定采用logminer作为oracle源端解析方案.

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-25 17:01

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表