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