DataGuard是oracle推出的一种高可用性数据库方案,在Oracle 8i之前被称为Standby Database,从Oracle 9i开始,正式更名为Data Guard。它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。Data Guard只是在软件上对数据库进行设置,并不需要额外购买任何组件。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。而主备机之间的数据差异只限于在线日志部分,因此被不少企业用作数据容灾解决方案。
DataGuard,我们经常亲切的成为DG。DG提供了一种数据级别的冗余,主要作用是容灾、数据保护和故障恢复等。下图是DG容灾的一个简单的演示图。当主服务器数据库出现问题时,DG将自动切换到standby database,继续对外提供服务。对应用来说完全是透明的。
DG有两种实现方式physical standby和logical standby。在正式的生产环境中,physical standby还是应用比较多的。physical standby,主备库之间物理结构,逻辑结构保护一致。通常情况下备用库通过主库传输过来的归档日志做恢复。physical standby是基于"块对块"方式,与主数据库保持相同。physical standby 可以使用read only模式打开,也可以使用read write模式打开。一旦使用read write 模式打开,备库将不再接受重做数据,只有备库恢复到read write打开时间点前状态,DG才会同步备库与主库,恢复standby角色。下图是physical standby的演示图,physical standby 是基于redo应用来实现主备库数据同步的。改变的redo日志从主库传递到备库,改变的redo在备库上被应用。
logical standby 只保证逻辑结构与主库一致。备库要处于打开状态,通过从主库归档日志文件中提取出来的SQL语句做恢复。下图是logical standby的演示图。
DG有3中保护模式,最大保护、最大可用和最大性能。下表是3种模式的比较。
下面我在这里列举一些DG日志传输的原理图。
这些原理图,我这里就做过多的介绍了。上面的图片整理自网络。
***********************************
说明:转载请注明出处,谢谢。
***********************************
--END--