Oracle Data Guard(数据卫士)简介 11gR2

来源:互联网 发布:娱乐圈小鲜肉知乎 编辑:程序博客网 时间:2024/05/17 23:28

        Data Guard 是Oracle中一个提供高可用、数据保护和灾难恢复的架构。在Data Guard中有1个主库和多个备库。每个备库都是对主库的复制,不同类型的备库正在复制的方式上有区别。由于这种主备的架构(备库一般和主库不在同一个主机上),因此就提供了对数据保护和灾难恢复的能力。同时,由于在主库不可用的时候,主备库之间可以切换,由其中一个备库切换为主库,继续提供高可用服务。主备架构的另外的一个好处是可以最大限度利用主库资源提供服务,可以将大量的读操作放在备库实现读写分离,还可以将备份等操作放在备库,减轻主库压力。


一、Data Guard  配置

        Data Guard 总体上来说就是1主多备,主备分开部署,没有地理位置上的要求。主备之间通过Oracle Net 连接。比如你可以在主机1上面部署1个主库和1个备库,主机2和主机3上分别部署1个备库。

        主备库的管理可以通过以下3种方式:

            ①.SQL命令行

            ②.Data Guard broker 接口,包括DGMGRL命令行接口

            ③.OEM


1.1 主库 Primary Database

        主库是被大部分应用访问的库,可以是单实例也可以是RAC。


1.2 备库 Standby Database

        备库是对主库的复制,在事务级别保持一致。最多可以创建30个备库,redo log 会被自动传输到这些备库。备库可以是单实例也可以是RAC。


备库的类型:

        ①.物理备库 Physical standby database

             物理备库和主库的物理结构一致,块与块都是一致的。接收 redo log,然后直接应用 redo log,在此同时,还可以被只读打开,提供服务。

        ②.逻辑备库 Logical standby database

            逻辑备库和主机在逻辑上是一致的,比如同一张表,主备库的数据是一致的,但是底层储存,比如段、区、块结构不保证一致。而且,逻辑备库在接收到 redo log 后,需要先把 redo log 转换为sql,再执行,以这种方式达到同步的目的。

        ③.快照备库 Snapshot standby database

            快照备库是一个可以更新的物理备库。可以将它理解成是在某个时间点上T1上的物理备库,然后可以在此基础上执行dml操作。快照备库接收 redo log 但是不应用。直到它回退到T1状态,也就是再次成为一个物理备库时,才会应用 redo log。所以,一般在需要一个临时可更新的物理备库的场景时,使用快照备库。


1.3 配置例子

下面的例子,主库将redo数据传输到备库,远程的备库接收并应用redo,提供容灾和备份等需求。



二、数据卫士服务 Data Guard Services

Data Guard 主要包含3个服务,来管理日志传输、日志应用和角色切换

  ①. Redo传输服务 Redo Transport Services

      控制主库往所有备库传输 redo log


  ②.Redo应用服务 Apply Services

      控制在备库上应用 redo log。一种是应用备库上的归档日志,另外一种实时应用,直接应用备库上的redo log,而不是等redo log归档完再应用。


  ③.角色切换服务 Role Transition

      将主库切换为备库,或者将备库切换为主库。


2.1 Redo传输服务

    将主库上的redo自动传输至备库。主要任务是:1.传输redo;2.管理redo gap(网络问题导致 redo log 不连续);3.探测备库上面丢失或者损坏的 redo log,重新传输并替换。


2.2 Redo应用服务

    应用接收自主库的 redo log。这里需要注意物理备库和逻辑备库的区别,物理备库是使用 redo apply 技术,逻辑备库使用 sql apply 技术。还有一点需要注意是的是,物理备库只能提供只读服务。逻辑备库可以提供读写服务,但是可写的表不能是复制自主库的表。具体看如下两张图:


示例:物理备库


示例:逻辑备库




2.3 角色切换服务

    转换主库和其中1个备库的角色。分为 switchover 和 failover。

    切换 switchover:一般是计划内的,手工的切换主备库,然后去主库上面实施一些维护工作。

    故障转移 failover:一般是主库变得不可用,可以是手动或者自动切换。


三、数据卫士代理 Data Guard Broker

        数据卫士代理是一个分布式的管理框架,自动化创建、维护、监控数据卫士的配置。你可以使用OEM的图形化接口或者是数据卫士的命令行接口DGMGRL来:

           创建和开启数据卫士配置,包括设置redo传输服务和redo应用服务。

           管理数据卫士配置中所有系统的配置

           管理和监控包括RAC的数据卫士配置

           简化切换和故障转移

           启用自动快速启动故障转移

           此外还包括:

           创建物理和逻辑备库

           增加备库

           监控日志应用比例、捕捉诊断信息、快速探测问题


3.1 使用OEM


3.2 使用数据卫士命令行接口


四、数据卫士保护模式 Data Guard Protection Modes

        在有些业务场景,是不能丢失任何数据的。其他一些场景,数据库的可用性更加重要,因此可能允许在一些意外情况下丢失一点数据。还有其他一些场景,应用需要在任何时候数据库都能提供最大的性能,也是可以容忍在坏的情况下丢失一点数据的。

 

1.最大可用模式 Maximun availability

        在保证可用性的情况下,提供数据最高程度的保护。也就是说为了保证数据库的可用性,可能会牺牲一点数据保护。事务只有在所有的 redo 信息 都写入主库的 redo log 和至少一个备库的 redo log 的情况下才能提交成功。如果主库不能将redo信息写入到任何一个备库,主库就会表现的和最大性能模式一样,直到它可以在此将redo信息同步写入备库。

 

2.最大性能模式 Maximun performance

        这个是默认的保护级别。为了提高主库的最高性能,事务只要在redo信息写入主库的 redo log 后即可提交,而不需要等redo信息写入备库的 redo  log。写入备库的动作是异步的。此模式提高了最大性能,但是对数据的保护级别要小于最大可用模式。


3.最大保护模式 Maximum protection

        此模式保证了不会有任何数据丢失。事务只有在所有的 redo 信息 都写入主库的 redo log 和至少一个备库的 redo log 的情况下才能提交成功。如果不能写入任何一个备库,它不会像最大可用模式,为了保证可用性,转而表现的像最大性能模式,而是关闭主库。


五、客户端故障转移

        一个高可用的架构需要数据库和客户端应用都具备故障转移的能力。客户端故障转移包含失败通知、过期连接清理和透明的重新连接至新的主库。Oracle在数据库故障转移的同时,会自动的将客户端重新指向新的主库。


六、数据卫士补充技术

        Oracle提供了其他一些独特的技术来补充数据卫士技术,保证商业核心系统的高可用性和数据保护,而不是只使用一个方案。主要包含以下这些机技术:

        1.Oracle真正的应用集群 RAC

        2.闪回数据库 Flashback Database

        3.恢复管理器 Recovery Manager(RMAN)


七、数据卫士的优势和好处

        1.灾难恢复、数据保护、高可用

        2.完全的数据保护(可以保证数据零丢失)

        3.高效利用系统资源

        4.灵活的选择数据保护和性能需求

        5.自动的日志缺口探测和解决

        6.中心化和简化管理

        7.和数据库的集成

        8.自动的主备切换