一、系统基本原理
在主数据库上,Oracle Data Guard使用归档进程(ARCn)或日志写入进程(LGWR)收集事务重做数据并将其传输到standby database(备用数据库)。虽然不能同时使用归档器和日志写入器进程将重做数据发送到相同的目的地,但是可以选择对某些目的地使用日志写入进程,而其他目的地使用归档进程发送重做数据。
默认情况下,重做传输服务使用ARCn进程在主数据库上归档联机重做日志文件。Oracle Data Guard使用归档进程(ARCn),需要等待联机重做日志在主数据库上切换成功后,然后一次在远程目标上写入整个归档重做日志。在数据保护配置中,ARCn归档处理只支持数据保护的最大性能级别。
如果需要配置为最大保护和最大可用级别,我们只能使用LGWR进程将重做数据传输到目标端归档日志的位置。使用LGWR过程不同于ARCn处理,它不需要等待联机重做日志在主数据库上切换,LGWR进程在备用站点上选择一个备用重做日志文件,该日志文件的日志序列号和大小与主数据库当前联机重做日志文件的日志序列号和大小是一致的。然后,当在主数据库上生成redo时,它也被传输到远程目标。
从Oracle 11g开始,出现了active data guard,所谓的active data guard,也就是物理备库可以open到read-only状态。
二、Data guard主要组件
1.日志传输
日志传输服务控制REDO数据的传输(传输日志,实施数据库保护模式),primary(主库)上通过LGWR或者ARCH进程获取日志数据,STANDBY(备库)上通过RFS进程接收REDO数据。
2.日志应用
日志应用服务自动将redo应用于备用数据库,以维护与主数据库的同步,并允许以事务方式一致地访问数据。
默认情况下,log apply服务在将完整归档的重做日志文件应用到备用数据库之前,会等待该文件到达备用数据库
日志应用服务则一方面自动应用日志,另一方面自动检测STANDBY缺少的REDO,并从主数据库或其它STANDBY中自动查询出丢失的REDO。
3.角色转换
进行主备库角色切换(此处不做过多解读)。
三、Data guard三种保护模式
1.最大保护
这种模式主备库之间数据是同步的。即主库提交的同时,备库会做相应的恢复。最大限度的保证了数据完整性。不允许数据的丢失。主库要等待备库提交完毕后,才提示写完成。
如果主备库之间网络,或者备库出现问题,主库会自动停止工作。
2.最大可用性
这种模式和"最大保护"基本上差不多。正常情况下,主备库之间是实时同步的。主库要等待备库提交完毕后,才提示写完成。
当网络或者备库出现问题时,不会影响到主库的宕机,主库会自动转换到"最大性能"模式,等待备库可用时,再将归档传输到备库做恢复。
可以把这种模式理解为"最大保护"和"最大性能"两种模式的中间体。
3.最大性能
这种模式保证主库性能最大化,主备库之间数据是异步传输的。即,主库日志归档以后才会传输到备用库,在备库上使用归档日志文件做恢复操作。
四、Data guard日志传输模式
日志传输可以选择实时同步传输或异步传输,主要在于LOG_ARCHIVE_DEST_n参数值设置的是SYNC或ASYNC。
1. SYNC(实时同步)
SYNC(实时同步)值:primary database联机重做日志文件的每个写操作,都要等待standby database执行完成所有I/O,并返回执行成功的消息后才算完成。
LGWR SYNC Archival to a Remote Destination with Standby Redo Log Files
● Real-Time Apply
如果启用了实时应用功能,日志应用服务可以在接收到重做数据时应用重做数据,而无需等待当前备库上的重做日志文件归档。
如果使用备用重做日志文件,则可以启用real-time apply,当远程文件服务器(RFS)进程将重做数据写入备用数据库上的备用重做日志文件时,log apply服务可以在填充备用重做日志文件时从中恢复重做数据。
2. ASYNC(异步传输)
ASYNC(异步传输)属性异步执行所有的网络I/O,只要在主库执行完后立即返回给正在执行的应用程序或用户,而无需等待备库网络I/O完成。
LGWR ASYNC Archival with Network Server (LNSn) Processes
如果将目标配置为使用LGWR进程,但由于某些原因LGWR进程无法向目标存档,那么重做传输将恢复到使用ARCn进程来完成归档操作。
● 延迟同步
可以使用LOG_ARCHIVE_DEST_n初始化参数的delay =minutes属性设置主数据库和备用数据库的时间延迟,以延迟将归档的重做日志文件应用到备用数据库。默认情况下,没有时间延迟。如果指定DELAY属性而不指定值,则默认的延迟间隔为30分钟。
五、Data guard物理备库和逻辑备库
DataGuard Standby创建时,逻辑standby与物理standby一样,使用主库copy。DataGuard Standby数据库通常分两类:分为"物理standby"和"逻辑standby"。
1.物理standby
物理standby是通过接收并应用primary数据库的redo log以介质恢复的方式实现同步,不仅文件的物理结构相同,连块在磁盘上的存储位置都是一模一样的。对于物理备用数据库,Data Guard使用Redo Apply技术,该技术使用Oracle数据库的标准介质恢复技术在备用数据库上应用Redo数据。
物理STANDBY可能的模式:只读模式(OPEN READONLY)和恢复模式(MANANGED RECOVERY)
主备库之间物理结构,逻辑结构都保持一致。通常情况下备用库通过主库传输过来的归档日志做介质恢复,相当于主库与备库之间基于"块对块"复制。
物理standby等同于生产库。物理standby能以read only(只读)方式打开(或者在flashback数据库下以"读写方式打开")。
物理standby一旦以"读写"方式打开,备用库将不会从主数据库接受重做数据。只有当备库flashback到过去的点,当备用库flashback到"读写"打开时间点前的状态时,DataGuard会自动同步备库与主库。才能恢复standby角色。
2.逻辑standby
逻辑standby是通过接收primary数据库的redo log并转换成sql语句,然后在standby数据库上执行SQL语句实现同步。
对于逻辑备用数据库,Data Guard使用SQL Apply技术,该技术首先将接收到的重做数据转换为SQL语句,然后在逻辑备用数据库上执行生成的SQL语句。
只保证逻辑结构与主库一致。备用库要处于打开状态,逻辑备库通过执行SQL语句来更新。DataGuard转换日志文件中的数据为SQL语句,然后在逻辑standby上执行SQL语句.因为逻辑standby是通过SQL语句来实现数据同步,那么在同步期间其必须保持打开状态。
3.物理备库与逻辑备库的本质区别
物理standby使用的Redo apply技术与主库保持同步,Redo apply使用介质恢复保持主数据库和物理备用数据库同步。
然而,逻辑standby使用SQL apply技术与主库保持同步。SQL apply 从主数据库接收的重做日志中重新构造SQL语句,并对逻辑standby数据库执行这些SQL语句。
六、Data guard的安全措施
Data Guard数据保护机制为数据同步提供了一个安全的环境,防止在将重做数据传输到备用数据库时可能发生的篡改。
重做传输服务使用经过身份验证的网络会话来传输重做数据。这些会话使用密码文件中包含的SYS用户密码进行身份验证。Data Guard配置中的所有数据库都必须使用一个密码文件,该密码文件中包含的SYS密码在所有系统上必须相同。即使没有安装Oracle Advanced Security,也可以执行此身份验证,并在重新执行时提供一定级别的安全性。
七、Data guard的优势
DataGuard数据同步技术有以下优势:
1) Oracle数据库自身内置的功能,与每个Oracle新版本的新特性都完全兼容,且不需要另外付费。Active data guard是需要付费的。
2) 配置管理较简单,不需要熟悉其他第三方的软件产品。
3) 物理Standby数据库支持任何类型的数据对象和数据类型。
4) 逻辑Standby数据库处于打开状态,可以在保持数据同步的同时执行查询等操作。
5) 在最大保护模式下,可确保数据的零丢失