Standby Redo Logs的前世今生与最佳实践

编辑手记:使用过Data Guard的人应该对于Standby Redo Logs都不陌生,在配置了 Standby Redo Logs的standby中,能够进行日志的实时应用,同时Standby Redo Logs能够给主库传输过来的日志增加一层安全保护。然而在很多的生产环境中,大家都很少使用Standby Redo Logs。本文将会深入剖析Standby Redo Logs的前世今生,工作机制以及一些最佳实践。

本文翻译自BPeaslandDBA的博客。

原文链接:https://community.oracle.com/docs/DOC-1007036

Introduction

在生产环境中,我发现大部分的Data Guard的standby上没有配置Standby Redo Logs,这让我感到很惊讶。我认为配置Standby Redo Logs是非常必要的,在我的环境中,我从来都会配置Standby Redo Logs。 当然配置Standby Redo Logs的确对于DBA来说,是增加了一项需要维护的内容,但这是完全值得的,并且Standby Redo Logs在配置并投入使用之后,后期基本上不需要花太多心思维护的。

我想大部分人不使用SRLs的原因是,他们不理解SRLs能够带来的好处,本文将会详解SRLs的优势,其创建维护方式及最佳实践。

为什么使用SRLs?

如果standby配置的是最大保护模式,那么必须配置Standby Redo Logs

通过SRLs对几乎实时传输过来的日志进行存储并及时应用。当然,如果是最大性能模式,配置SRLs也同样会有很多好处,为了让读者更好地理解这一点,

首先我们来看一下在没有SRLs的情况下,日志的传输是怎么进行的。

在上图中,staandby中没有配置SRLs,因此Redo传输和应用的过程如下:

1、事务将日志条目写入SGA中的Redo Log buffer。

2、LGWR进程将Redo 条目从Redo Log buffer写入到online Redo logs.

3、当online Redo logs发生切换(一般是由于当前日志写满了),ARC0进程会将online Redo logs中的内容写入到Archived Redo log.

4、在standby数据库存在的情况下,归档进程会多启用一条子进程ARC1,读取archived Redo log的内容,并传输到对端的RS进程(remote file server)。

5、RFS将主库接受过来的日志发送给standby库的ARCn进程。

6、standby的ARCn进程将日志写入到standby的archived redo log。

7、当日志成功发送到archived redo log之后,MRP0进程在备库进行日志应用。

以上过程虽然看着复杂,但逻辑是比较简单和清晰的。

那么如果在配置了SRLs的环境中,日志的传输过程又是怎么样的呢?

在配置了SRLs的情况下,日志的传输中不仅增加了新的元素,还增加了许多新的选择。

1、跟没有配置SRLs的时候一样,第一步仍然是事务产生的Redo条目写入。

2、LGWR进程将Redo写入到online Redo log。

3、明确是最大保护模式还是最大性能模式

     a、在最大保护模式下,进行的是同步的日志传输(SYNC),网络服务器同步进程(NSSn)是LGWR的slave进程。它的作用是将Redo传输给standby的RFS进程。

    b、在最大性能模式下,进行的是Redo的异步传输(ASYNS),网络服务器异步传输进程(NSAn)从主库的online Redo log中读取数据,并传输给standby库的RFS进程。

4、standby服务器上的RFS进程将Redo流 直接写入到SRLs。

5、日志的应用方式取决于系统是否配置了实时应用。

a、如果配置了实时应用,MRP0进程将直接将SRLs的日志读取并应用到standby数据库。

b、如果没有配置实时的日志应用的话,MRP0进程将等待SRLs中的日志完成归档之后,再将归档后的日志应用到standby数据库。

在上述的步骤中,步骤三基本上解释了我们为什么要使用SRLs,在DG的最大保护模式下,也就是日志的同步传输模式下,必须要配置SRLs,否则同步的机制就不能生效。

在最大性能模式下,配置SRLs仍然是有必要的,因为SRLs能够将数据的丢失从小时降低到秒级别。在最大性能模式下配置SRLs能够实现几乎零数据丢失的数据传输。

使用SRLs的另外一个比较重要的原因是当配置了实时的日志应用,能够带来很大的好处。只要将Redo传输到了SRLs里面,就能够立即应用到standby数据库当中,不需要等待日志切换。只有配置了SRLs,才能保证在实时应用日志的时候,failover的切换和恢复时间降到最低。

很多用户在基于日志的异步传输的情况下的操作都有这样一个误区。

认为只有ARCn进程才可以将主库的日志传输到备库。这样的观点在早期的版本中是对的。

但是从10g,甚至是9i开始,只有在没有配置SRLs的情况下,才由ARCn进程来传输日志。如果配置了SRLs,12c之前,是由LNS进程传输,而12c以后,传输日志的任务是由NSAn进程完成的。NSAn的传输几乎实时实时的。

在没有配置SRLs的情况下,日志的传输必须要等待主库的日志的切换,如果在主库日志一个小时切换一次,那么就有可能产生一个小时的数据的损失风险,如果主库日志切换频率更低,那么面临的数据损失的概率就更高。

当然,这种情况可以通过主库的初始化参数 ARCHIVE_LAG_TARGET的设置来改善,如果DBA将该参数设置为3600秒,那么一个小时最多可能发生一次日志切换。但即使是这样,一个小时的数据损失仍然是很大的,而且对于大部分的企业用户来说,这种损失都是不可接受的。

为了减少等待日志切换带来的数据损失的风险,你需要做的只是配置一下SRLs,非常简单,但是却能给你的系统带来很大的性能和安全保障。

如何创建SRLs

创建SRLs的方式跟创建普通的online redo logs的方式是很相近的,在alter Database命令中多添加一个属性的设置就好,也就是增加关键字 “Standby”。

首先我们来看当前系统中online Redo logs的大小设置。

对于上面的结果,我曾看到有人将它理解为“50MB”,然后他们就将SRLs的大小设置为50MB,这样是不精确的。

我在操作的过程中,都是完全按照online Redo Log的大小精确设置SRLs的大小的。还有一点是,有时候我们看到ORL的不同的组里面,日志的大小设置是不一样的,在这种情况下,不能直接配置SRLs。

建议先将所有的online Redo Log大小是指一样,然后再配置SRLs。

接下来我们进行SRLs的配置。

lSRLs的创建语句跟普通的online Redo logd 的创建唯一不同的地方在于多了一个关键字 standby。 并且在我创建的时候,SRLs的大小是完全按照ORL 的大小设置的。

由于系统当前有三组online Redo Log,在创建SRLs 的时候,如果不指定组数的话,系统默认会写成 group 4-6。那么后续如果需要增加日志组的话,就可能产生混乱。因此我从group 10开始配置SRLs.

接下来我们通过数据字典来查看SRLs

我们看到SRLs对应的thread# 为0,在配置SRLs的时候,尽量避免将SRLs制定到特定的thread上,这样就能够被主库中的所有节点的ORLs使用。

接下来我们查看所有的日志类型的组。

由于在创建的时候,group的编号是分开的。因此,这样在查询的时候,结果就可以按照日志的类型排列。

最佳实践

其实在介绍SRLs的时候,已经设计到了一些最佳实践。这部分,将会更全面地介绍SRLs的最佳实践。

1

确保所有配置的SRLs的组,其日志大小是一致的。

2

确保所有的SRLs的组中的日志跟ORL的大小一致。保证所有从主库传输过来的日志能够在SRLs中有足够的空间保存。当然,如果实在没有办法保证SRLs跟ORLs的大小一致的,可以设置SRLs的大小大于ORLs的大小。

3

在SRLs中不要配置任何thread,这样,SRLs就能够被所有的节点使用,包含在RAC中的主节点。

4

当在standby数据库上配置SRLs的时候,也需要同时在Primary数据库上配置,正常情况下,在主库上配置的SRLs是不会被使用的,但如果某一天你需要执行switchover的话,提前配置好SRLs会带来很大的便利。

5

对于Oracle RAC的主备方案来说,最好是在standby上配置SRLs数量跟所有Primary节点上的一样多。 比如说,如果你有一个3个节点的Oracle RAC数据库,并在每一个节点上配置了4组SRLs的话,那么在standby的节点上就需要配置3*4=12组的SRLs,不管你的standby上有多少个实例,standby数据库必须要保证能够能够容纳所有Primary数据库节点上的ORLs。

原文地址:https://www.cnblogs.com/vmsysjack/p/12322508.html

时间: 2024-10-29 13:25:13

Standby Redo Logs的前世今生与最佳实践的相关文章

【翻译自mos文章】Standby Redo Logs (SRL)的用途,益处与限制

Standby Redo Logs (SRL)的用途,益处与限制 来源于: Usage, Benefits and Limitations of Standby Redo Logs (SRL) (文档 ID 219344.1) 目的: 本文显示了Standby Redo Logs (SRL)的用途,益处与限制,适用于 Oracle 9i/10g/11g中带有SRL的dataguard环境. 范围: 所有DBA以及希望实施9i/10g/11g (9.x-11.x) DataGuard的人 1. S

oracle dataguard网络最佳实践一

oracle dataguard redo 网络最佳实践(简译) oracle dataguard好处: 1 对系统性能影响最小 这里有两个最高可用架构(MAA)场景配置,在有足够带宽的情况下,得出如下结论: 1 DG在纽约和蒙特利尔(300英里的距离,10MS的往返延迟),使用实时模式,在redo 4MB/s生成速率下,可以做到对生产系统5%的性能影响和零数据丢失: 2 在波士顿和伦敦之间(3300英里,100MS往返延迟),使用异步模式,在20MB/s的日志生成速率下,可以做到对系统5%以下

决胜大数据时代:Hadoop&Yarn&Spark企业级最佳实践(8天完整版脱产式培训版本)

Hadoop.Yarn.Spark是企业构建生产环境下大数据中心的关键技术,也是大数据处理的核心技术,是每个云计算大数据工程师必修课. 课程简介 大数据时代的精髓技术在于Hadoop.Yarn.Spark,是大数据时代公司和个人必须掌握和使用的核心内容. Hadoop.Yarn.Spark是Yahoo!.阿里淘宝等公司公认的大数据时代的三大核心技术,是大数据处理的灵魂,是云计算大数据时代的技术命脉之所在,以Hadoop.Yarn.Spark为基石构建起来云计算大数据中心广泛运行于Yahoo!.阿

(转)iOS 最佳实践

本文转自http://www.jianshu.com/p/b0bf2368fb95 感谢作者和译者 iOS最佳实践 iOS最佳实践 译者注 本文翻译自 futurice 公司的 iOS Good Practices,译文在 Github 上进行维护,同时在简书 上进行发布. 本文发出几天后发现网上也有了另外一个翻译版本:http://ios.jobbole.com/81830/ 原标题是iOS Good Practices,应该翻译成 iOS 良好实践/优秀实践的,不过好拗口,而且已经发出去了,

Android最佳实践之性能 - 电池续航时间优化

Doze和App Standby的优化(API23) 参考地址:http://developer.android.com/training/monitoring-device-state/doze-standby.html 从Android 6.0 (API level 23)开始,Android提供了两个节电功能用来增加电池的续航时间.Doze 可以在设备长时间不使用时,通过延迟后台CPU和网络的活动来减少电池的消耗:App Standby将延迟没有交互的app网络活动. Doze和App S

Spark深入浅出企业级最佳实践

课程介绍 本课程是世界上第一Spark企业级最佳实践课程,课程包含: Spark的架构设计: Spark编程模型: Spark内核框架源码剖析: Spark的广播变量与累加器: Shark的原理和使用: Spark的机器学习: Spark的图计算GraphX: Spark SQL: Spark实时流处理: Spark程序的测试: Spark的优化: Spark on Yarn: JobServer: 培训对象 1, 云计算大数据从业者: 2, Hadoop使用者: 3,  系统架构师.系统分析师

Spark企业级开发最佳实践

课程介绍 本课程是世界上第一Spark企业级最佳实践课程,课程包含: Spark的架构设计: Spark编程模型: Spark内核框架源码剖析: Spark的广播变量与累加器: Shark的原理和使用: Spark的机器学习: Spark的图计算GraphX: Spark SQL: Spark实时流处理: Spark程序的测试: Spark的优化: Spark on Yarn: JobServer: 最后以一个商业级别的Spark案例为基础,实战展示商业级别Spark项目的架构设计.实现和优化:

编写Shell脚本的最佳实践

前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用.因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视.同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一. 考虑到上面的这些原

《开源安全运维平台OSSIM最佳实践》

经多年潜心研究开源技术,历时三年创作的<开源安全运维平台OSSIM最佳实践>一书即将出版.该书用80多万字记录了,作者10多年的IT行业技术积累,重点展示了开源安全管理平台OSSIM在大型企业网运维管理中的实践.国内目前也有各式各样的开源安全运维系统,经过笔者对比分析得出这些工具无论在功能上.性能上还是在安全和稳定性易用性上都无法跟OSSIM系统想媲美,而且很多国内的开源安全运维项目在发布1-2年后就逐步淡出了舞台,而OSSIM持续发展了十多年.下面就看看这本书中涉及OSSIM主要讲解那些内容