Oracle Dataguard(主库为单节点)配置详解(1):Oracle Dataguard 工作原理
目录
Oracle Dataguard 是保证企业数据的高可用性(high availability,HA)、数据保护(data protection)与灾难恢复(disaster recovery)的集成化灾难恢复解决方案。
Oracle Dataguard 针对生产数据库创建一个或多个同步备份,由一个生产数据库和若干个备用数据库组成,形成一个独立的、易于管理的数据保护方案。
一、Oracle Dataguard 工作过程
1、当某次事务更改主库中的数据时,Oracle
在联机重做日志文件(redo log
)中记录此次更改。Oracle Dataguard
使用日志写入器进程(LGWR
)或归档器进程(ARCH
)收集重做日志信息。
2、主库除了把日志记录到本地的联机日志文件和归档日志文件中,还通过网络,把日志信息发送到远程的备库服务器。
备用日志文件写入过程可以实时同步(SYNC
,最大保护模式),以实现零数据丢失。也可以是异步(ASYNC
,最大可用性模式)的,以减少对网络带宽的压力。或者通过归档日志文件的批量传输模式(最大性能模式),以减少对生产系统的性能影响。
3、在备库上,Oracle Dataguard
使用远程文件服务器(RFS
)进程从主库接收重做日志(redo log
)信息,使用管理恢复进程 (MRP
)将重做日志信息应用到物理备库中。使用逻辑备用进程(LSP
)将经过SQL
转换的重做日志信息应用到逻辑备库中。
4、当主库打开并处于活动状态时,备库可以执行恢复操作。如果主数据出现了故障,备库即可以被激活并接管主库的工作。
下图为一个Oracle Dataguard
的模型。
上图中,主库在运行时会不断产生redo log
,这些日志会通过网络传送到备库,这个传送动作,可以由ARCH
完成,也可以由LGWR
完成,选用哪种进程,对数据库的可用性和DG
的保护能力有着很大的区别。
二、Oracle Dataguard 日志传送方式
1、使用 ARCH 进程传送日志
主库不断的产生redo log
,这些日志被LGWR
写进联机日志,当一组联机日志被写满,会发生日志切换,并且ARCH
会将其归档,ARCH
进程还会通过网络把归档日志传送给备库的一个叫做RFS
的进程,备库接受日志并写入到归档日志,然后备库的MRP
进程(redo apply
)或者LSP
进程(SQL apply
)在备库上应用这些日志,于是数据就同步了。
默认情况下,主库使用ARCH
进程传送日志,不需要特别的设置。
2、使用LGWR
进程传送日志
LGWR
又分为SYNC
(同步)和ASYNC
(异步)两种方式:
(1)使用 LGWR
进程的 SYNC
方式
主库产生redo log
要同时写入到日志文件和网络,即LGWR
把日志写到本地联机日志文件的同时,还发送给本地的LNSN
进程(Network Server Process
),然后LNSN
进程把日志内容通过网络发送到备库。
LGWR
必须等待写入本地联机日志和LNSN
进程传送成功,主库的事务才能提交,这就是实时同步的原理。
备库的RFS
进程把接收到的日志立刻写入standby redo log
中。
备库的恢复方式可以是实时恢复,也可以是完成对standb