首页 > 数据库 > oracle > 正文

Oracle备份解决方案Data Guard ,Oracle GoldenGate,stream对比
2016-10-26 15:05:08   来源:   评论:0 点击: 收藏

1 方案一Active Data Guard (oracle 11g Data Guard) 在oracle 11g版本以前,一般由两个数据镜像节点构成的主备关系来实现实现数
1.方案一
Active Data Guard (oracle 11g Data Guard)    
       在oracle 11g版本以前,一般由两个数据镜像节点构成的主备关系来实现实现数据库快速切换与灾难性恢复,我们称之为Data Guard。  Active Data Guard 是oracle 11g数据库管理和灾难恢复新的解决方案,无需安装组件,或购买相关配件,只需要配置即可实现。在多数情况下,可以在oracle RAC、GridInfrastructure、OGG(oracle goldengate)、ASM环境上使用,以达到最大化的使用效率。
        在DG(Data Gurad )环境中,至少有两个数据库(最多30个从库),一个处于Open 状态对外提供服务,这个数据库叫作Primary Database。,第二个处于恢复状态,叫作Standby Database。 运行时primary Database 对外提供服务,用户在Primary Database 上进行操作,操作被记录在联机日志和归档日志中,这些日志通过网络传递给Standby Database。 这个日志会在Standby Database 上重演,从而实现Primary Database 和Standby Database 的数据同步。
DG架构可以按照功能分成3个部分:
1) 日志发送(Redo Send)
2) 日志接收(Redo Receive)
3) 日志应用(Redo Apply)
        Oracle Data Gurad 对过程进一步的优化设计,使得日志的传递,恢复工作更加自动化,智能化,并且提供一系列参数和命令简化了DBA工作。
如果是可预见因素需要关闭Primary Database,比如软硬件升级,可以把Standby Database 切换为Primary Database 继续对外服务,这样即减少了服务停止时间,并且数据不会丢失。如果异常原因导致Primary Database 不可用,也可以把Standby Database 强制切换为Primary Database继续对外服务,这时数据损失成都和配置的数据保护级别有关系。因此Primary 和Standby 只是一个角色概念,并不固定在某个数据库中。
    可以实现oracle数据库的灾难恢复及高可用性、全面的数据保护、有效利用系统资源、故障自动检查及解决方案、集中易用的管理模式、自动化的角色转换,以及在高可用及高性能之间更加灵活的平衡机制(这意味着数据库的运维管理将更趋于自动化);
Data Guard(Active Data Guard  )提供三种保护模式:
  最大保护模式:
       这种模式提供了最高级别的数据保护能力:要求至少一个物理备库收到重做日志后,主库的事务才能够提交;主库找不到合适的备库写入时,主库会自动关闭,防止未受保护的数据出现;优点是该模式可以保证备库没有数据丢失;缺点是主库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对网络等客观条件要求非常的高,主库的性能会因此受到非常大的冲击。也就是说Data Guard只可以用只读的方式打开数据库,但此时利用日志进行数据同步的过程就停止了,如果物理备用数据库处于恢复的过程中数据库就不能打开查询。
       最大性能模式:
       该模式是默认模式,可以保证主数据库的最高可用性;保证主库运行过程中不受备库的影响,主库事务正常提交,不因备库的任何问题影响到主库的运行;优点是避免了备库对主数据库的性能和可用性影响;缺点是如果与主库提交的事务相关的恢复数据没有发送到备库,这些事务数据将被丢失,但一般情况下,灾难恢复可以通过提取数据库日志在物理standby上执行;一般情况下,我们建议使用最大性能模式在保障数据安全的同时达到最高效率。
       最大可用性模式:
       该模式提供了仅次于“最大保护模式”的数据保护能力:要求至少一个物理备库收到重做日志后,主库的事务才能够提交;主库找不到合适的备库写入时,主库不会关闭,而是临时降低到“最大性能模式”模式,直到问题得到处理;优点是该模式可以在没有问题出现的情况下,保证备库没有数据丢失,是一种折中的方法。

2.方案二:Oracle GoldenGate
       Oracle GoldenGate是一种非插入性的基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。
      GoldenGate的数据复制还可以提供数据结构上的灵活性,比如只复制指定表和列、对特定数据执行简单运算、两端schema和表名不同等不同结构数据之间的复制,主要用于报表或者数据仓库等场景。GoldenGate能够作为一个整体解决方案满足企业在各种异构环境之下容灾和应急,实时报表查询,负载分担,建立实时数据仓库和整合数据等各种场景需求,真正做到以一次性投资获取最佳投资回报率。
        Oracle GoldenGate数据复制只传输真实数据变化,它所需要的带宽在各种技术中都是最低的。GoldenGate在源端解析日志获取数据变化大概是日志量的1/4左右(统计数字,具体比例随客户实际数据有所变化);TCP/IP网络传输效率一般为0.7左右;GoldenGate可以在传输过程中提供数据压缩,网络传输压缩比例一般为1:8左右。一般字符数据较多时压缩比例较大,二进制对象压缩效率较低。

3.方案三:Stream复制
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用。 Oracle 的消息队列是通过发布/订阅的方式来解决事件管理。流复制(Stream replication)只是基于它的一个数据共享技术,也可以被用作一个可灵活定制的高可用性方案。它可以实现两个数据库之间数据库级,schema级,Table级的数据同步,并且这种同步可以是双向的。 Oracle Stream也是通过数据冗余来提高可用性,这一点和Data Guard 类型。
Oracle 高级复制(Oracle advanced Replication) 和流复制(Stream Replication) 是从名称和功能上都相似的两种技术。但前者是基于触发器的,后者是基于日志挖掘(Logminer)技术。
Stream 的工作原理
       Stream 是Oracle Advanced Queue技术的一种扩展应用,这种技术最基本的原理就是收集事件,把时间保存在队列中,然后把这些事件发布给不同的订阅者。 从DBA的角度来说,就是把捕获Oracle数据库产生的Redo日志,然后把这些日志通过网络传播到多个数据库,其他数据库通过应用这些日志,达到复制变化的作用。
       在Stream 环境下, 复制的起点数据库叫作Source Database, 复制的终点数据库叫作Target Database。 在这两个数据库上都要创建一个队列,其中的Source Database上的是发送队列,而Target Database上的是接收队列。
数据库的所有操作都会被记录在日志中。 配好Stream环境后, 在Source Database上会有一个捕获进程(Capture Process), 该进程利用Logminer技术从日志中提取DDL,DML语句,这些语句用一种特殊的格式表达,叫作逻辑变更记录(Logical Change Record, LCR). 一个LCR对应一个原子的行变更,因此源数据库上的一个DML语句,可能对应若干个LCR记录。这些LCR会保存到Sourece Database的本地发送队列中。然后传播进程(Propagation Process)把这些记录通过网络发送到Target Database的接收队列。 在Target Database上会有一个应用进程(Apply Process),这个进程从本地的接收队列中取出LCR记录,然后在本地应用,实现数据同步
Data Guard 和Stream 区别
Date Guard有两种类型:physical standby 和 logical standby。 这两中standby 都有3个功能模块:日志传送;日志接收,日志恢复。两种standby在前两个模块中是一样的,都是通过LGWR或者ARCn进程发送日志,通过RFS进程接受日志。区别在第三个模块:
Physical Standby 使用的是Media Recovery技术直接在数据块级别进行恢复, 因此Physical Standby 能够做到两个数据库的完全同步, 没有数据类型限制。
Logical Standby实际是通过Logminer技术,把日志中的记录还原成SQL语句,然后通过Apply Engine 执行这些语句实现数据同步, 因此Logical Standby不能保证数据的完全一致。 比如Logical Standby 不支持某些数据类型,这一点在选择Logical Standby时必须要考虑.
Stream 使用的是Logical Standby 第三个模块,也就是在Source Database一端,Capture 进程利用Logminer 技术把日志内容还原成LCR, 然后发送到Target Database, 而在Target database 一端, 也是通过Apply Engine 执行这些LCR。因此Stream在使用上也有些限制条件。
#######################################################

Data Guard(Active Data Guard) ,Oracle GoldenGate ,stream复制对比:
Oracle DataGuard 11g的新特性 :
物理备库可实时查询
加快备库备份的速度
快照备库
提高Redo Apply的性能
支持的数据类型更多
更快速执行失败切换
Oracle GoldenGate 新特性:
新增整合捕捉进程,支持多线程,提供旁路顺流模式,不影响生产库性能;
预建立自动冲突检测机制,提供自动解决模块,降低部署成本;
支持数据库对象中文名称,可实现大小写敏感;
支持OEM12c 的Plug-in;
AES128, AES192, and AES256 加密;
优化Pump Trail 模式,降低网络流量;
支持平台,功能等方面的增强。
Data Guard 和GoldenGate的大致优缺点(图片来源于网络):

    11g的ADG(Active Data Guard)作了很多新的改进,最大的特点还是能做到同步复制,而OGG的数据复制在亚秒级(比秒级别慢),还是只能算作异步。
       GoldenGate是Oracle在数据迁移和数据同步方面要重点发展的产品,支持异构是其最大亮点。与Dataguard对比,GoldenGate在战略上是更高层次的产品,这点从GoldenGate的购买中甚至包含Dataguard的License就可见一斑,从功能上来说,GoldenGate针对Dataguard的最大优势当然是支持异构,但是,GoldenGate也不会取代Dataguard,原因很简单,Dataguard支持同步复制,而GoldenGate从原理上来说实现不了,因此,这两个产品都会持续发展下去,但从重要性来讲,GoldenGate的发展要重要于Dataguard的发展,事实上,Dataguard也已经很成熟了,而GoldenGate发展空间巨大,至少从配置管理上来说,纯命令行方式早晚会被取代,可以持续改进的东西有很多。
         而针对stream复制,GoldenGate的优势就太多了,不说支持异构平台了,首先它的性能非常卓越,通过解析日志的内容来同步数据,效率非常高,不依赖于数据库的运行,而stream复制,我们知道,要用到stream_pool_size的内存区域,依赖数据库的性能,并且会产生很多stream相关的等待事件,而stream复制相对GoldenGate的优点,只剩下配置简单这一点。可以这么说,对于小数据量的同步,可以选择stream复制来实现,因为配置较为简单,而对于大数据量的同步复制,应该选择GoldenGate,因为性能优越,而且经得起考验,抗压性强。当然,不管数据量的多少,在性能方面,GoldenGate都是远远高于stream方式的。
         关于数据迁移时的初始化装载,GoldenGate提供了专门的工具Initial Load,我们也已经经过测试,是可以实现大部分数据的正确迁移的,但是需要所有的表都有主键这是要格外注意的,另外,对long和lob数据类型以及嵌套表的迁移有问题,需要其他方式去解决,对sequence也有问题,关于这个后面会有一个迁移的案例进行总结。对于初始化装载来说,可以选择的方式很多,可以选择rman,可以选择datapump,也可以使用GoldenGate自己的初始化装载工具Initial Load,我们需要知道它们的区别,来满足不同的需求:
1、rman速度最快,但跨平台和版本有问题,而且操作时需要停库;
2、datapump速度较慢,可以跨平台和版本,但操作时也需要停库;
3、GoldenGate的Initial Load,速度慢,可以跨平台跨版本,不需要停库,可以在线进行。
        因此,如果你的生产数据库面临数据迁移的问题,而又只有很少的停机时间,那么你可以选择GoldenGate的Initial Load来实现初始化装载,因为装载的时间就算非常长,但是不影响你的生产数据库的使用,应该都是可以接受的。而如果你的生产数据库有足够的停机时间,那么毫不犹豫的选择rman来实现初始化装载吧,当然,平台要支持才行。
        有时候有很多数据迁移与复制方面的需求,在严格限制停机时间的情况下,我们需要有这样一个经得起考验的工具来实现,当然,这样的工具其他厂商也有一些,但是大部分都是通过底层去调用并行datapump去实现的。


Data guard(包括Active Data Guard) ==> 全库的复制灾备 、 高可用、 读写分离, 性能好,对网络的要求高
Streams==》 支持单向或双向的流复制,多种粒度:表 Schema DB , 免费 , Bug较多 管理难度较大,性能较差,对网络的要求较高
Goldengate ==> 支持单向或双向的同步复制, 多种粒度, 收费昂贵,管理难度一般,性能较好,对网络的要求较低。

相关热词搜索:备份 解决方案 Oracle GoldenGate

上一篇:Oracle数据库管理之Oracle 11g Active Data Guard
下一篇:oracle启动报ORA-01506: missing or illegal database name错误