DataGuard日志传输模式

简介: 【前言】学习技术跟学习武功一样,之前整理了DataGuard的搭建和切换,这些都是武功招式,但是心法还没有学。本文档介绍DataGuard的重要心法,DataGuard的三种保护模式跟日志传输模式的关系,文章的主要内容来自于Oracle DataGuard 11G的参考手册。

【前言】学习技术跟学习武功一样,之前整理了DataGuard的搭建和切换,这些都是武功招式,但是心法还没有学。本文档介绍DataGuard的重要心法,DataGuard的三种保护模式跟日志传输模式的关系,文章的主要内容来自于Oracle DataGuard 11G的参考手册。

 

【1】DataGuard日志传输模式的介绍

DataGuard的原理简单来说就是把ORL写入本地的同时,传送一份到备库上面进行执行,日志传输是整个DataGuard的核心,就很有必要对日志传输的几种模式进行介绍;

 

DATAGUARD所有的同步模式都可以简化成下面这张图:
image 

1、主数据库的LGWR 进程将重做数据写入到自己的ORL 中,同时Log Network Server(LNS)进程从SGA的重做缓冲区中读取重做日志的信息,交由Oracle Net服务传输到备份数据库;

2、备用数据库由另一个Data Guard进程Remote File Server(RFS)接收。RFS 在备用数据库上接收重做数据,然后将其写入一个名为备用重做日志(StandbyRedo Log,SRL)文件的顺序文件中。

当了解了简单的原理之后,便可以深入的了解详细的三种传输模式了;

 

同步方式:同步传输(synchronous transport,SYNC)又称“零数据损失”方法,因为要等到LNS确认事务恢复所需的重做数据已被写入备用站点的磁盘上,才允许LGWR 认可提交操作成功。

image

(1) 用户提交一个事务,事务在SGA 中创建一个重做记录。LGWR从日志缓冲区中读取重做记录,写入ORL,然后等待LNS 的确认。
(2) LNS 从日志缓冲区中读取相同的重做记录,通过Oracle Net 服务传给备用数据库。备用数据库上的RFS 接收重做数据,然后将其写入备用重做日志文件中。
(3) 当RFS 从磁盘接收到一个写完消息时,会将一个确认消息传回给主数据库上的LNS进程,LNS 接着通知LGWR 传输完成。LGWR 接着向用户发送提交确认信息。

优点:保证了数据的安全;

缺点:影响主库的性能;

 

异步传输方式:(asynchronous transport,ASYNC)与SYNC 的不同之处在于,LGWR不必等待来自LNS 的确认消息,无论主数据库与备用数据库相距多远,都几乎不会影响到主数据库的性能。

image

原理图如上:

 

异步传输方式会根据场景的不同,调节读取日志的方式,所有的场景都在下面的原理图中,请细看

9910228

场景一:LNS的读取速度跟得上重做日志产生的速度(系统比较空闲或者网络带宽比较高),这种情况下异步传输的链路跟同步传输的情景是一样的。LNS进程从日志缓冲池中读取重做日志,然后通过Oracle Net服务传给备用数据库。

 

场景二:当LNS赶不上SGA重做日志的产生速度(可以联想到一个水池,其注水速度比排水速度快)。在将重做数据传给备用数据库前就回收了日志缓冲区,LNS 将自行转为从ORL 读取和发送重做数据(从Data Guard 11g 开始提供此项功能)。当LNS 赶上进度后,将自行转回到直接从日志缓冲区中读取/发送。

 

场景三:(这种情况比较复杂,这边也是摘录了Data Guard的完全参考手册整理而成)

在极少数情况下,(ORL产生的速率非常快,或者网络出现故障的情况下),LNS还在发送第一个ORL文件的时候,但是系统已经发生了多次日志切换,LNS发送的完当前的文件,下个要传送的文件已经被归档。

这时候Data Guard在主数据库上使用ARCH 进程连续ping备用数据库来确定其状态。当还原与备用数据库的通信后,ARCH ping 进程会查询备用控制文件(通过其RFS 进程),来确定备用数据库从主数据库收到的最后一个完整日志文件。Data Guard 确定需要哪些日志文件来重新同步备用数据库,然后立即开始使用其他ARCH 进程传输相应文件。

接下来执行日志切换时,LNS 会试图连接备用数据库,成功后开始传输当前重做数据,而ARCH 进程在后台处理间隔。一旦备用应用进程能赶上当前重做记录的进度,应用进程就自行转换,不再读取归档重做日志,改而读取当前SRL(假定用户已经配置了Data Guard“实时应用”)。

最后需要注意的一点是,从Data Guard 10g 开始,主数据库的一个ARCH进程一直专门负责本地归档,从而确保在处理间隔期间,远程归档操作不影响主数据库回收;

为使备用数据库赶上进度,主数据库必须以远超平时生成重做数据的速度传输数据。Data Guard 架构允许使用多个后台ARCH 进程来快速处理间隔,与此同时,LNS 进程像通常一样执行当前日志流的SYNC 或者ASYNC 传输。

 

总结异步传输方式:

1、LNS首先会读取SGA中的重做日志缓存,这种情况下是最佳情况;

2、当LNS从第1个操作里面读取不到数据的情况下就去获取当前联机重做日志的数据;

3、当LNS从第1、2个操作里面均获取不到数据的情况下就要去查看备库上面日志的传输情况,查看完成后主库通过返回的信息进行传输数据;

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
运维
SAP ABAP 系统记录传输请求处理过程的日志存放目录
SAP ABAP 系统记录传输请求处理过程的日志存放目录
58 0
|
2月前
|
算法 测试技术 C++
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
【数据结构】模式匹配之KMP算法与Bug日志—C/C++实现
36 0
|
4月前
|
SQL 消息中间件 缓存
Flink SQL中使用DEBUG模式来输出详细的日志信息,
Flink SQL中使用DEBUG模式来输出详细的日志信息,
134 0
|
7月前
|
弹性计算 监控 应用服务中间件
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
244 0
|
7月前
|
存储 监控
日志服务SLS全新发布按写入数据量计费模式节省计划
按写入数据量计费模式节省计划是一种“比按量计费更划算,比包年包月更灵活”的全新计费模式。支持0预付、全预付,您可以通过承诺在一定期限内消费一定的金额,获取比按量计费低至 50% 的价格。
205 0
|
7月前
|
存储 SQL 运维
阿里云日志服务SLS全面升级:秒级处理数千亿行日志、新计费模式可省32%
数据更安全、计费更灵活  阿里云日志服务SLS内核全面升级
809 0
阿里云日志服务SLS全面升级:秒级处理数千亿行日志、新计费模式可省32%
|
9月前
|
消息中间件 存储 Kafka
MQ 学习日志(六) 保证消息的可靠性传输
消息的可靠性传输 简述
74 0
|
9月前
|
存储 监控 数据可视化
日志服务 SLS 全新发布按写入数据量计费模式
日志服务 SLS 全新推出的按写入数据量计费模式让 SLS 更普惠、更易用!仅收取原始数据(非压缩)写入费用、存储费用以及外网数据流量费用,帮助用户购买更简单、费用可预期、轻松拓展更丰富场景。
1857 0
|
11月前
|
Oracle 关系型数据库 数据库
使用日志传输的方法在两个数据库之间同步数据
源 oracle18:oracle18c-standby 192.168.17.26 目标 oracle18-2:oracle18c-primary 192.168.17.109
110 0
|
11月前
处理Dataguard日志传输gap一例
制造gap 在主库上停止向备库传输日志