1.Oracle DataGuard 简介
Oracle DataGuard是Oracle开发的一种数据库级别的HA方案,最主要功能是冗灾、数据保护、故障恢复等,它是生产数据库的“事务一致性镜像”,DataGuard创建时,使用主数据库的物理镜像备份;DataGuard创建完成后,备数据库会通过主数据库传输过来的归档日志自动维护备用数据库,将重做数据应用到备用数据库,以保证数据一致性。
1.1 Oracle DataGuard 结构
Data Guard是一个集合,由一个Primary数据库(生产数据库)及一个或多个Standby数据库组成。组成Data Guard的各个Oracle数据库之间,通过Oracle的网络服务名(Net Service Name)连接,并且可以分布于不同地域,实际上只要各库之间能够互相通行,他们的物理位置就没有什么限制。
1.1.1 Primary Database
Primary数据库是一个生产数据库,大部分的应用都读写此数据库。该数据库可以是单实例数据库也可以是RAC数据库。
1.1.2 Standby Databases
Standby数据库是一个Primary数据库的“事务一致性镜像”。通俗地话来讲是一个从数据库,在同一套Data Guard结构中最多可以创建30个Standby数据库。一旦创建完成,DataGuard自动应用Primary数据库生成的重做日志(redo log)的方式,来维护每一个Standby数据库。standby数据库既可以是单实例数据库,也可以使RAC结构。
Standby数据库分为三类:物理Standby和逻辑Standby,快照Standby。
*物理Standby数据库
物理Standby是与主数据完全一样的镜像,它通过接收Primary数据库生成的REDO LOG后,以介质恢复的方式实现同步(Redo Apply).因此底层的物理文件结构都一致
做为Oracle Database 11g版本,物理standby数据库可以以只读的方式接受和应用redo数据.物理standby数据库就可以既做数据冗余保护也可以用来做报表查询分析。
运用场景:数据保护,报表分析
*逻辑Standby数据库
逻辑standby是通过接收Primary数据库的redo数据,然后将其转换成SQL语句,写入Standby数据库中。这种技术为SQL Apply,因此底层的物理文件结构不一致。
运用场景:数据保护,报表分析和数据库升级
*快照Standby数据库
快照Standby数据库不会应用接收过来的redo数据。直到Stanby数据库切换到物理Standby数据库的时候,才会接收过来的redo数据。
1.1.3 Oracle DataGuard实例
1.2 DataGuard 服务
1.2.1 Redo传输服务Redo Transport Services
Oracle通过Redo Transport services控制redo数据,从Primary数据库发送到一个或多个归档目的地。归档目的地可以指向本地路径,也可以指向一个远端的Service Name。最常见的启动数据库归档模式,就是设置一个本地的归档路径,而架设Standby服务器,则是设置一个或多个远端的Service Name,通过这种方式发送Primary端生成的REDO数据
*按照既定配置传输Redo数据到Standby 数据库。
*处理由于网络中断等原因等导致的归档中断(Gap)。
*自动检测丢失和损坏的归档日志文件(archive log file),并自动尝试从Primary数据库或者另外的standby数据库中抽取出来
1.2.2 应用服务Apply Services
应用服务自动应用接收过来的redo数据到standby数据库来维护与Primary数据库的事务一致性。它同时可以以只读的方式读取数据
物理standby和逻辑standby数据库在应用服务(Apply Service)应用归档redo数据的主要区别:
*对于物理standby数据库,DataGuard使用Redo Apply技术。
*对于逻辑standby数据库,DataGuard使用SQL Apply技术。
1.2.3 角色转换Role Transitions
一套DG环境中只有两种角色:Primary和Standby。所谓角色转换就是让数据库在这两个角色中切换,切换有两种:switchover和failover。
switchover:是在Primary数据库和Standby数据库之间做角色转换。一个switchover操作可以确保无数据丢失。典型的应用环境是在计划内地维护DG数据库。
failover:是当主数据库无法使用,主数据库发生故障并且不能被恢复的时候,就需要使用failover将standby数据库转换成Primary数据库。在最大保护模式或最高可用模式下,failover可以保证不会丢失数据。
角色转换可以通过SQL语句手动做切换,你也可以使用Oracle Data Guard broker工具执行角色切换和使用Oracle Enterprise Manager和DGMGRL 命令行接口完成自动化切换
英语原句:The role transitions described in this documentation are invoked manually using SQL statements. You can also use the Oracle Data Guard broker to simplify role transitions and automate failovers using Oracle Enterprise Manager or the DGMGRL command-line interface, as described in Section 1.3.
1.3 Data Guard broker
Data Guard broker只一个分布式管理框架。用来创建,维护,监控Oracle Data Guard。你可以使用Oracle Enterprise Manager graphical user interface (GUI)或者Data Guard command-line interface (DGMGRL)控制。
*创建和启用Data Guard configurations,包括设置 redo传输服务(redo transport services)和应用服务(apply services)。
*管理整个Data Guard configurations包括在任何系统下的配置
*管理和监控Data Guard configurations包括Oracle RAC primary数据库和standby数据库
*你可以在OEM下一个简单的按钮或者在DGMGRL下一条简单的命令完成switchover和failover角色切换。
*启动fast-start failover,可以当primary数据库无效之后自动故障处理。Data Guard broker会判断一个failover是否是必须的,然后初始化fail over到指定的standby数据库,不需要DBA的介入。
加之,使用OEM可以更简单和自动化下列操作:
*从primary数据库的备份创建一个物理和逻辑standby数据库
*添加一个新的standby数据库到已经存在的DG集合中。
*监控日志应用比率,获取诊断信息。
1.4 Data Guard 保护模式
DG提供三种模式。
*最大保护模式(Maximum protection) ,这种模式能够确保绝无数据丢失。要实现这一步是有代价的,它要求所有的事务在提交前其REDO数据不仅要写入到本地的Online Redologs,还要同时写入Standby数据库的Standby Redologs,并确认REDO数据至少在一个Standby数据库中可用,然后才会在Primary数据库上才可提交。如果Standby数据库不可用的话,Primary数据库会被Shutdown。
*最高性能模式(Maximum performance),这是一种默认的保护模式,它在不影响Primary数据库性能的情况提供最高级别的数据保护策略。事务可以随时提交,写入到Online Redologs。Redo数据也同时会写入Standby数据库的Standby Redolog中。但是,这个过程是异步的。
这种模式会提供最低的数据保护机制,但对数据库性能的影响最小。
*最高可用性(Maximum availability),这种模式在不影响Primary数据库可用前提下,提供最高级别的数据保护策略。实现方式与最大保护模式类似,也是要求本地事务在提交前必须写入一台Standby数据库的Standby Redologs中,不过与最大保护模式不同的是,如果出现故障导致Standby数据库无法访问的时候,Primary数据库并不会Shutdown,而是自动转为最高性能模式,等Standby数据库恢复正常之后,Primary数据库又会自动转换成最高可用性模式。
参考文献:
Oracle? Data Guard Concepts and Administration 11g Release 2 (11.2)
李丙洋