Oracle DataGuard 是 Oracle 自带的数据同步功能,其基本原理是将日志文件从源数据库传输到目标数据库,并在目标数据库上应用这些日志文件,从而使目标数据库与源数据库保持同步,是一种数据库级别的高可用性方案。
DataGuard 可以提供 Oracle数据库的容灾、数据保护、故障恢复等,实现数据库快速切换与灾难恢复。在生产数据库保证“事务一致性” 时,使用生产库的物理全备份创建备库,备库会通过生产库传输过来的归档日志或重做条目自动维护备用数据库。
DataGuard 数据同步技术的优势为:
Oracle DataGuard由一个primary 数据库(生产数据库)及一个或多个standby数据库(最多9个)组成。组成DataGuard的数据库通过Oracle Net连接,并且可以分布于 没的地域,只要各库之间可以相互通信即可。
Standby数据库有两种:逻辑standby和物理standby。
最大保护模式为主数据库提供最高水平的数据保护 ,确保一个全面的零数据丢失 的灾难恢复解决方案。在最大保护模式下运行时,重做记录由日志写入进程从主库同步地传输到备库,直到确认事务数据在至少一个备用服务器上的磁盘上可用时,才在主库上提交事务。该模式下,主库和备库完全一致,主库事务提交前,备库必须收到全部日志数据,如果因网络等原因导致日志无法传送时,将引起严重的性能问题,导致主节点宕机。此时备库不能正常关闭,必须保持和主库一致的模式,如果强行采用abort方式关闭备库,可能引发主库挂起。推荐至少配置2个备库,因为如果其中一个不能从主库接收日志,主库还可以继续运行。要保证备库的监听正常,保证主库到备库的连接正常。
最大可用模式拥有仅次于主数据库数据可用性,并提供零数据丢失和防止单组故障。如同最大保护模式一样,重做数据由日志写入进程从主数据库同步地传输到备用数据库,直到确认事务数据在备用服务器的磁盘上可用时,事务才在主数据库上完成。 不过,这种模式下,如果最后参考的备用数据库变为不可用,例如网络连接异常,处理将在主数据库上继续进行。备库与主库相比,可能暂时落后,但当它再次变为可用时,备用数据库将自动同步,而不会丢失数据。由于同步重做传输,这种模式可潜在地影响响应时间和吞吐量。可以通过配置一个低延迟网络,并为它分配足够应用高峰事务负载的带宽来将这种影响减到最小。
最大可用模式适用于想要在生产站点上出现严重中断时确保获得零数据丢失保护,但不想让生产数据库受网络/备用服务器故障影响的企业。为防止备库发生网络故障,最好设置reopen参数,即使出现网络故障,也不会引发主库挂起,这时主库将从最大可用模式切换到最大性能模式。正常情况下运行在最大保护模式下,在主库和备库之间网络断开或连接不正常时,自动切换到最大性能模式,主节点操作继续,但这种自动切换是否及时是否高效,当前行内并无实际检验,因此在网络不好的情况下,也可能会有较大的性能影响。
最大性能模式是默认的保护模式。与最大可用模式相比,提供了稍微少一些的主库数据保护,但提供了更高的性能。这种模式下,当主库处理事务时,重做数据由日志写入进程异步传输到备用数据库上。在任何情况下,均先完全主库上的写操作,主库的提交操作不等待备库确认接收。如果任意备用数据库变为不可用,则处理将在主库上继续进行,对性能只有很小的影响或没有影响。在主库出现故障的情况下,可能有一些主库上提交了的事务没有传输到备库上。如果网络有足够的吞吐量跟上重做流量高峰,则丢失的事务将非常少或者为零。
当主库的可用性和性能比丢失少量数据的风险更重要时,应该使用最大性能模式。这种模式还适合于WAN上的DataGuard部署,在WAN中,网络的内存延迟可能限制同步重做传输的适用性。在创建DataGuard时,默认创建的是最大性能模式,需要使用其他模式时必须再进行切换。该模式下,利用ARCn进程异步传送日志,无数据同步检查,可能丢失数据,但是能获得主库的最佳性能。