Data Guard 概要

Data Guard介绍

今天终于有机会看看DG,以下观点为综合了三思笔记、 RAC高可用之后提炼总结出来的:

1.1 Data Guard功能

Oracle Data Guard可以确保企业数据的高可用性数据保护灾难恢复

Data Guard通过提供一系列服务,确保在极端情况下将生产数据库的损失降到最低。这一系列的服务包括创建、维护、管理和监控一个或多个Standby数据库。如果遇到计划停机或由突发情况导致的数据库停机,Data Guard可以将任何一个备库切换到主库状态,代替主库继续提供服务,把由数据库停机引起的服务中断时间缩到最短,把由此引发的损失降到最低

1.2 Data Guard特点

在Oracle Data Guard的帮助下,您可获得如下优势:

  • 灾难恢复,数据保护,高可用性
  • 完整的数据保护
  • 有效利用系统资源
  • 在高可用及高性能之间,更加灵活的平衡机制
  • 故障自动检查及解决方案
  • 集中地易用的管理模式
  • 自动化的角色转换

1.3搭建条件

Data Guard对环境的要求并不高,一般来说,只要是相同的OS环境,大部分情况下可实现Data Guard。除此以外,还要考虑硬件方面的因素。建议备库硬件环境与主库相似,如果备库硬件硬件条件太差,则一旦主库宕机,备库无法承担起应用访问。除此以外,还要考虑存储的问题。

1.4工作原理

Data Guard在Primary数据库(生产数据库)与Standby数据库(备库)间通过日志同步来保证数据的同步,备库作为生产数据库的备份,可以实现快速切换与灾难恢复。

DataGuard由一个Primary数据库,一个或多个(最多9个,11g 应为32个左右,很不确定)Standby数据库组成。组成DataGuard的各个Oracle数据库之间,通过网络服务名(Net Service Name)连接。在一般情况下,Standby只有一个节点处于活动状态,所有的应用都连接到主服务器,只有当主服务器发生故障的时候,才考虑切换到备用服务器。备用服务器一般不提供读写操作,只有在需要的时候,才提供只读的报表查询服务(11gActive DG支持在只读打开时执行恢复,需要另付费),或者当主站点出现故障的时候,经过一定的切换操作,才转变为主库,提供正常的读写服务。

下面通过一副图片简要的介绍一下Data Guard的工作原理:

    上图左侧为Primary数据库,右侧为Standby数据库。

我们知道,主库与备库之间通过日志同步来保证数据的同步。从Oracle9i开始,主备库之间既可以传送归档日志,也可以传送联机日志。

如果是传送联机日志,在Oracle10g以前由LGWR进程负责传送,Oracle10g以后完全由LNSn进程负责传送。如上图上半部分所示,主库内存区Redo Buffer在通过LGWR进程向本机Online Redo Logs(在线重做日志)写入日志的同时,LNS进程也在将Redo Buffer的内容发往备库。备库RFS(Remote File Server)进程接收日志并把其保存在备库的Standby Redo Logs里。如过采用联机日志方法传送,需在备库上创建一组Standby Redo Logs用以保存主库上Online Redo Logs的数据。备库上Standby Redo Logs需保持与主库Online Redo Logs文件大小相同,且最好比主数据库的Online Redo Logs多一组以上。

如果是传送归档日志,由主库的ARCH进程和备库的RFS进程负责完成。如上图下半部分所示,ARCH进程在将主库Online Redo Logs归档的同时,也将这部分归档发给备库,备库RFS进程接收归档并将其保存在备库上指定位置。

日志传送到备库后,需要应用日志才能将主库上的数据变化在备库上重现。根据应用日志的方式不同,可将备库分为物理备库和逻辑备库。物理备库通过REDO Apply的方式应用REDO数据,逻辑备库通过SQL Apply的方式应用REDO数据。在Oracle 10gR2以前,Standby Redo Logs或当前归档日志中的内容不能马上被应用,需要先归档。如上图右侧,对于物理备库,应用REDO的工作由MRP进程完成,对于逻辑备库,应用REDO由LSP进程完成。在Oracle10gR2以后,可以实时地应用当前联机日志。在Oracle 10gR2重做日志不用被归档便可被实时应用。

1.5保护模式

Data Guard提供三种数据保护模式:

最大保护(Maximum Protection):这种模式能确保绝无数据丢失。要求主库上所有的事务在提交前其REDO不仅被写入到本地的Online Redologs,还要同时写入到备库的Standby Redologs,并确保REDO数据至少在一个备库中可用,然后才会在主库上提交。但是如果出现故障导致备库不可用(如网络中断),则主库会被SHUTDOWN。

最高性能(Maximum Performance):在不影响主库性能的前提下,提供最高级别的数据保护策略。事务可以随时提交,主库到备库的REDO数据写入不同步。此为系统默认的保护模式。

最高可用性(Maximum Availability):在不影响主库可用前提下,提供最高级别的数据保护策略。策略与最大保护模式相同,如果出现故障导致备库无法访问,自动转换到最高性能模式,主库不会宕机。如果备库恢复正常,又可自动切换回最高可用性模式。

1.6 DataGuard服务

Data Guard通过一些列完善的机制,确保主备库间的数据传输、日志应用、状态检查、角色切换等。在此介绍几个基本服务:

REDO传输服务(Redo Transport Services,RTS):通过RTS服务控制RODO数据,从Primary数据库发送到其他一个或多个归档目标。

Log应用服务(Log Apply Services,LAS):主要用来应用REDO数据到Standby数据库,以保持备库与主库的事务一致。

角色转换(Role Transitions),包括Switchover和failover:

switchover:主备库之间角色转换。如果有多个备库,一次只能选择其中一个。switchover可以确保不会丢失数据。

failover:当主库出现故障且不能被及时恢复时,就需要通过failover将DG配置的其中一个备库转换为新的主库。在最大保护或最高可用性模式下,failover也可以保证不丢失数据。

总结:以上为今天对DG学习的成果,重点参考了三思笔记,在详读之后发现对日志传送及实时应用还很模糊,又参考了Piner的RAC高可用,顿时茅塞顿开。Piner的逻辑太棒了,几句话就把问题全说明白了!现在对实时应用,日志 应用方式,参数的设置仍然还有部分疑问,深入研究后在发帖吧。感谢大师的指点。

参考:

陈吉平 《构建Oracle高可用环境》 亚马逊链接

李丙洋 《涂抹Oracle》 亚马逊链接

普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress