【DATAGUARD】Oracle Dataguard体系架构详解

本文主要讲解Oracle Dataguard体系结构 — By Firsouler 2021.8.12

1.概述

备库类型

  • 物理备库(Physical standby database):常用模式,尤其Oracle11.1之后,可以只读方式打开,11.2开始可以滚动升级。
  • 逻辑备库(Logical standby database):可以跨平台,限制较多。10g中常见于升级或者只读方式使用,主要是解析日志转换成sql之后使用。
  • 快照备库(Snapshot Standby Database):主要用于测试,可临时将物理备库转换成快照数据库进行压力等业务测试,接收归档不应用,测试完成后可再转换成物理备库。

Dataguard之前,怎么保护(灾备)

  • 存储复制
  • 逻辑同步

redo 简单说明

redo_transmission

思考: LGWR/SGA/DBWn 关系,当执行commit时,怎么个流程,频繁commit的影响? Dataguard又是如何操作的,归档日志对于备端的作用是什么?

2.Redo传输服务

在主数据库LGWR进程将SGA中重做写入其ORL的同时,LNS进程从SGA中的重做缓冲区读取数据,并将重做传递给Oracle Net Services,以便传输到备用数据库。如果是RAC模式,每个数据库都有自己的LNS进程。备用数据库中,会通过Remote File Server(RFS)进程接收重做记录,并将其写入到standby log(SRL)中。如果多个备库,主库会有多个LNS进程对应相关RFS进程。

LNS支持两种传输方式,同步(sync)和异步(async), 传输架构如下图所示:
redo_transport_arch

同步传输

同步传输(SYNC)也称为“零数据丢失”方法,在LNS确认恢复事务所需的重做已写入备用数据库的磁盘之前,LGWR不允许commit成功。

redo_transport_sync

如上图所示,具体同步流程是:

  • 1.用户提交一个事务,并在SGA中创建重做记录。LGWR进程会将记录从log buffer写入到online redo日志文件中,最后等待LNS确认的消息
  • 2.LNS在log buffer读取重做记录并通过网络传输到备用数据库,然后RFS接收并写入到standby redo logfile中。
  • 3.RFS将接收的数据写入standby redo logfile完成时,它将确认消息发送给主端LNS,再通知LGWR,最后LGWR向用户提交确认消息。

思考: 这种方式优点、缺点是什么 ,会对数据库或者业务造成什么影响

异步传输

异步传输LGWR不需要从LNS进程等待确认,对主库性能几乎无影响。如果LNS无法跟上进度,并且在重做传输到备用设备之前,日志缓冲区被回收,LNS将自动转换为从ORL(数据保护11g之后)读取和发送。一旦LNS被捕获,它会自动转换回直接从日志缓冲区读取/发送。

日志缓冲区命中率在视图X$LOGBUF_READHIST中跟踪。命中率低表示LNS经常从ORL而不是日志缓冲区读取。如果重做传输即将结束,但与重做生成速率不同步,则考虑在数据保护11G中增加日志缓冲区大小以获得更有利的命中率。这将减少或消除从ORL读取LNS的I/O开销。

redo_transport_async

思考: 我们部署Dataguard经常用什么模式,同步还是异步? 有什么影响

数据压缩

Oracle 11g之后提供了日志传输压缩技术,减少带宽对传输的影响,提高了cpu使用率。在一些带宽限制较多,cpu资源空间较大情况下可以考虑使用。

自动间隙解析(Automatic Gap Resolution)

简单说,就是不实时应用了,断档了。如果备端有问题或者网络问题DG中断,主端arch进程会不断ping备端,直到正常后,将归档日志传输过去,备端会先应用归档日志。直到可追上 standby logfile,之后才会继续实时应用。 如果归档日志有丢失,只能增量恢复。

redo_auto_gap

思考: 实时应用的情况下,备端归档是怎么产生的, dg几种方式确保数据同步?

3.应用服务

我们都知道,Dataguard有两种备库应用方式,Redo Apply 和SQL Apply,也就是物理备库和逻辑备库的应用方式。

Redo Apply

主要是通过介质恢复的方式进行应用。 如下图所示,并行的介质恢复是什么意思?

redo_apply

Redo Apply 优势

  • 完整复制,无数据类型等限制
  • 高性能,管理简单
  • 最佳的物理保护,主端备端都会验证
  • 提供灾难恢复同时,可以只读查询和报告(11g)
  • 提供灾难恢复同时,提供主端备份
  • 提供灾难恢复保护同时,可提供业务对数据库做相关测试,如读写等(快照数据库)。
  • 提供滚动升级(临时转换为逻辑备库)

SQL Apply

主端传输过来的数据,重新构建成sql,应用的备库,会耗用更多资源,如cpu,内存和IO等。因为是逻辑,它本身有不支持的数据类型,如XML/TEXT
redo_sql_apply

优势:

  • 灵活,备端可做写操作相关测试(注意别影响正常同步),如数据泵导出、临时表、报表等
  • 可滚动升级

4.Dataguard保护模式

  • 最高性能模式: 常用,主要使用ASYNC方式, 不影响主库性能,该模式下,不建议arch传输方式。
  • 最高可用模式: SYNC方式,等待备库应用,如果超过NET_TIMEOUT设置秒数,不再等待,主库继续操作
  • 最大保护模式: SYNC方式,会一直等待备库应用后,主库继续后续操作。此种方式,建议配置多个备库,只要一个备库正常,对业务影响最小。

思考:Dataguard 传输和应用的要点,主要功能和区别?

5.角色管理

  • 手动切换: 常用与升级、迁移
  • 故障切换: 因主端故障,需要备端切换为主端,供业务使用

6.Dataguard管理

除了使用一些命令查看视图外,可以使用Oracle EM 或者Data Guard broker 来管理Dataguard。

7.活动的备用数据库

  • 提供了只读查询
  • RMAN快速备份(块跟踪)
  • 测试,快照数据库提供了临时测试功能

本文主要讲解Oracle Dataguard体系结构,及主要功能,具体功能特性可参见其他资料。

8.参考

  • 《Oracle Dataguard handbook》
  • 《Oracle19 Data Guard Concepts and Administration》
请使用浏览器的分享功能分享到微信等