三种oracle灾备技术
对于oracle数据库的灾备技术,我们可以从data guard,goldengate和cdp角度去考虑。
oracle data guard提供了一种数据同步技术来实现oracle的高可用性、增强的性能以及自动的故障转移方案,为主数据库创建和维护多个备用数据库,主数据库的改变能够自动将信息从主数据库传送到备用数据库,并保证在此过程中没有信息的丢失。oracle data guard实现方式(见图1)
图1:oracle data guard实现方式图
data guard有两种类型的备用数据库:物理备用和逻辑备用数据库,虽然都是通过归档日志来实现主数据库和备用数据库的数据一致性,但是过程却不相同:一个是通过物理磁盘的方式,一个是通过重新生成sql事物来完成数据同步。
而goldengate则是一种基于日志的结构化数据复制技术,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。goldengate 可以在异构的it基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据的实时复制(大概5秒以内的延迟),从而可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾等多个场景下应用。由于goldengate是通过分析过滤日志来捕捉变化,因而可以实现跨平台的数据库复制以及非oracle数据库的数据同步。
[page] cdp(continue data protection 持续数据保护)是一项新兴的技术,也是目前最热门的数据保护技术之一。行业内通常的定义为:持续数据保护是一套方法,它可以捕获或跟踪数据的变化,并将其在生产数据之外独立存放,以确保数据可以恢复到过去的任意时间点。持续数据保护系统可以基于块、文件或应用实现,可以为恢复对象提供足够细的恢复粒度,实现几乎无限多的恢复时间点。
由于oracle数据库对读写一致性的特殊性要求,cdp厂商通常是通过调用oracle9.2后提供的快照技术,能够在数据库正常运行的同时生成某一个时间点的一致性的镜像(注意一定是一致性镜像),oracle数据库支持在这个一致性镜像基础上通过recover database,达到一致性的恢复。
图2:cdp实现方式图
灾备技术深入比较
这三种技术都实现了数据库的灾难备份,但各有特点,存在以下几方面的不同。
基本原理
oracle data guard 是通过oracle数据库归档日志来实现的,并且通过oracle net来传输日志;oracle golden gate是通过对归档日志的捕捉并分析其的变化来实现的,有自己独享的传输方式;cdp技术是通过数据库镜像来来实现数据同步,数据库镜像的归档以及传送策略是通过cdp软件来完成。oracle data guard无论是物理备用或者逻辑备用都最多只能使数据库处在同时读的状态,不能实现同时读写,只能实现主机和备机的单活状态;oracle goldengate由于其实现方式,两端数据库都处在双活状态,备份端可以提供实时的数据查询及报表业务等,从而提高系统整体的业务处理能力,充分利用备份端的计算能力,提升系统整体业务处理性能。可以实现两端数据的同时写入。cdp由于是操作系统及实现数据同步,因此不能实现数据库的双活,两个数据库的状态只能实现单活的状态。
[page] 切换的时效性
data guard在主备切换时需要改变数据库的状态才能使备用数据库达到可读写状态,oracle goldengate在情况发生时,可以立即实现服务器的切换。cdp需要改变整个系统的状态才能将备用系统达到可用。
对异构数据库的支持
data guard通过物理和逻辑的方式在备用机上还原数据库的日志,因此不支持异构数据库,也不支持异构的操作系统;goldengate通过分析主数据库的日志来完成tail文件,因此支持异构数据库,也支持异构的操作系统。cdp是通过操作系统层面完成数据同步的,因此不支持异构数据库,更不支持异构的操作系统。
系统资源的占用
data guard在完成数据同步过程中需要占用数据库的一部份资源比如lgwr、arcn和net manger进程或服务等,对数据库有较大的影响,使数据库性能下降。goldengate和cdp是动态监控方式,对资源的消耗相对较少。
归档方式支持
data guard和goldengate都是通过日志来实现数据库的数据同步,因此必须要求oracle数据库处在归档状态。而cdp因为其的实现方式,就没有这样的需求。
结语
在构建实际的灾备系统过程中,还需要实际情况,比如oracle goldengate虽然支持双向复制,但如果链路因为网络中断发生问题,一旦网络恢复,故障发生后导致的主备库的数据差异如何处理,这些都不是数据库能完成的工作。因此在实际的方案选择上,还是要根据实际情况以及用户的需求来完善oracle的灾备方案,这样才能做到有的放矢。