DataGuard 架构和概念整理

news2024/11/29 1:38:57
1. DataGuard 概述
  • 定义:DataGuard 是一种保障数据安全的高可用架构,通过搭建与主数据库同步的备用数据库,提供 Oracle 数据库的容灾、数据保护、故障恢复等功能,实现数据库快速切换与灾难性恢复。
  • 原理:日志文件从主库传输到备库,然后在备库上应用这些日志,从而使备库与主库保持同步。
  • 组成:由一个 primary 数据库及一个或多个 standby 数据库组成,备库最多 9 个。
    • 主库:即被大部分应用访问的生产数据库,可以是单实例数据库或 RAC。
    • 备库:备库也支持单机或 RAC,备库正常为只读状态。
2. DataGuard 分类
  • 物理 DataGuard
    • 应用的是主库的归档日志,无论从逻辑结构和物理结构都与主库保持一致。
    • 通过块拷贝方式同步,使用数据库 recovery 恢复功能来应用主库的更改。
    • 通过接收并应用主库的 redo log 以介质恢复的方式 (Redo Apply) 实现同步。
  • 逻辑 DataGuard
    • 应用的是主库归档日志中提取的 SQL 语句,只需保证逻辑结构一致。
    • 通过接收 primary 数据库的 redo log 并转换成 SQL 语句,然后在 standby 数据库上执行 SQL 语句 (SQL Apply) 实现同步。
3. 日志传输
  • 概念:DataGuard 数据同步过程分为三个阶段:日志传输、日志接收、日志应用。
  • 传输方式
    • ARCH 进程(传归档日志)
      • 主库:产生日志后通过 LGWR 进程写入在线重做日志,当满足相关条件后在线重做日志会进行切换,ARC0 进程归档该日志至主库本地的归档目录 (log_archive_dest_1 配置),归档完成后,ARC1 进程将归档日志传输到备库 (log_archive_dest_2 配置)。
      • 备库:备库 RFS 进程负责接收日志。如果备库有 standby 重做日志,则把日志复制到 standby 重做日志,接着把 standby 重做日志归档至备库本地归档目录,最后应用归档日志;如果没有配置 standby 重做日志,RFS 进程接收日志后直接放到备库的归档目录下,再应用该日志。
    • LGWR 进程(传重做日志)
      • ASYNC 模式:
        • 主库:只要有新的重做日志产生,LGWR 进程将触发 LNSn(Log Network Server)进程把新生成的重做日志传输到备库。
        • 备库:RFS 进程负责接收日志。接收到日志后将其写入 standby 重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等 standby 重做日志归档后再应用。
      • SYNC 模式(不建议,会影响生产):
        • 主库:redo log buffer 中只要有新的变更产生,LGWR 进程将触发 LNSn 进程把新生成的重做日志传输到备库。
        • 备库:RFS 进程负责接收日志。接收到日志后将其写入 standby 重做日志,如果备库开启了实时应用,就立即做日志应用,如果没有开启,则等 standby 重做日志归档后再应用。这种方式备库需要给主库一个回复,证明传输成功,如果有问题一直不回复就会导致主库的 LGWR 进程一直挂起,影响主库。
  • FAL(Fetch Archive Log)进程
    • 用于解决主库产生的连续归档日志在备库接受时不连续的问题。
    • 通过 fal_clientfal_server 参数进行交互。
    • 当主库的某些日志没有成功发送到备库时,会发生归档裂缝(Archive Gap),缺失的日志就是裂缝(Gap)。
    • DG 能够自动检测并解决归档裂缝,不需要 DBA 的介入,但需要配置 fal_clientfal_server 参数。
4. 日志接收及应用
  • 日志接收

    • 备库使用 RFS(Remote File Server)进程接收日志,接收到日志后,就把日志写到 standby redo log(如果有这个就先写这个,没有这个就直接写 archived log 文件中)或者 archived log 文件中。
    • 如果写到 standby redo log 文件中,则当主库发生日志切换时,也会触发备库上的 standby redo log 的日志切换,并把这个 standby redo log 归档。
  • 日志应用

    • 应用接收到的主库日志,实现主备库的数据同步。
    • 物理备库:使用 MRP(Managed Recovery Process)进程应用日志。
    • 逻辑备库:使用 LSP(Logical Standby Process)进程应用日志。
  • 日志应用模式

    • Redo 应用:物理备库数据库专用,通过介质恢复的方式保持与 primary 数据库的同步。
    • SQL 应用:逻辑备库数据库专用,核心是通过 LogMiner 分析出 SQL 语句在 standby 端执行。
  • 日志应用服务

    • 实时应用(Real-time Apply):必须使用 standby redo log,每当日志被写入 standby redo log 时,就会触发恢复。这种方式可以减少数据库切换(switchover 或 failover)的时间。

      ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
      
    • 非实时应用:在主库发生日志切换,触发备库归档操作,归档完成后触发恢复。

      ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
      
5. DataGuard 三种保护模式及转换
  • 最大保护(Maximum Protection)

    • 保证主库和备库的同步,任何情况下主库的损毁都不会导致已提交数据的丢失。
    • 如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库宕机。
    • 要求主库必须配置 Standby RedoLog,而备库必须使用 LGWR,SYNC,AFFIRM 方式归档到 Standby Database。
    ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
    
  • 最大可用(Maximum Availability)

    • 保证主库和备库的同步,与最大保护的区别在于当网络或备库不可用时,主库仍可以继续使用。
    • 正常情况下,主备库之间是同步的。当网络或者备库出现问题时,不会影响到主库的宕机,主库会自动转换为最高性能模式,等待备库可用时,将归档传输到备库做恢复。
    ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
    
  • 最大性能(Maximum Performance)

    • 缺省模式,主库和备库是异步的。这种模式可能在主库出现损坏时,丢失一部分数据。
    • 保证主库性能最大化,主备库之间数据是异步传输的。即主库日志归档以后才会传输到备用库,在备库上使用归档日志文件做恢复操作。
    ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
    
  • 模式转换

    • 转换为最高可用:

      ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
      
    • 转换为最大性能:

      ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
      
    • 转换为最大保护:

      ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
      
6. 总结
  • 关于 DataGuard 的架构和概念主要是需要搞懂日志的传输、接收及应用。
  • 建议阅读官方文档及《Oracle Data Guard 11g 完全参考手册》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2249432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连接共享打印机0X0000011B错误多种解决方法

打印机故障一直是一个热门话题,特别是共享打印机0x0000011b错误特别头疼,有很多网友经常遇到共享打印机0x0000011b错误。0x0000011b有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的,针对共享打印机0x0000…

spring +fastjson 的 rce

前言 众所周知&#xff0c;spring 下是不可以上传 jsp 的木马来 rce 的&#xff0c;一般都是控制加载 class 或者 jar 包来 rce 的&#xff0c;我们的 fastjson 的高版本正好可以完成这些&#xff0c;这里来简单分析一手 环境搭建 <dependency><groupId>org.spr…

jeecgbootvue2重新整理数组数据或者添加合并数组并遍历背景图片或者背景颜色

想要实现处理后端返回数据并处理&#xff0c;添加已有静态数据并遍历快捷菜单背景图 遍历数组并使用代码 需要注意&#xff1a; 1、静态数组的图片url需要的格式为 require(../../assets/b.png) 2、设置遍历背景图的代码必须是: :style"{ background-image: url( item…

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前&#xff0c;我们都在讲什么低代码/无代码平台&#xff0c;这个概念很久了&#xff0c;但是&#xff0c;一直没有很好的落地&#xff0c;整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来&#xff0c;各大科技公司也都推出了很多 AI 代码助手&#xff…

jenkins 2.346.1最后一个支持java8的版本搭建

1.jenkins下载 下载地址&#xff1a;Index of /war-stable/2.346.1 2.部署 创建目标文件夹&#xff0c;移动到指定位置 创建一个启动脚本&#xff0c;deploy.sh #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/opt/projects/jenkins # 服务名称。同时约定部…

3D建筑模型的 LOD 规范

LOD&#xff08;细节层次&#xff09; 是3D城市建模中用于表示建筑模型精细程度的标准化描述不同的LOD适用于不同的应用场景 LOD是3D建模中重要的分级标准&#xff0c;不同层级适合不同精度和用途的需求。 从LOD0到LOD4&#xff0c;细节逐渐丰富&#xff0c;复杂性和精度也逐…

解锁 Vue 项目中 TSX 配置与应用简单攻略

在 Vue 项目中配置 TSX 写法 在 Vue 项目中使用 TSX 可以为我们带来更灵活、高效的开发体验&#xff0c;特别是在处理复杂组件逻辑和动态渲染时。以下是详细的配置步骤&#xff1a; 一、安装相关依赖 首先&#xff0c;我们需要在命令行中输入以下命令来安装 vitejs/plugin-v…

【UE5 C++课程系列笔记】04——创建可操控的Pawn

根据官方文档创建一个可以控制前后左右移动、旋转视角、缩放视角的Pawn 。 步骤 一、创建Pawn 1. 新建一个C类&#xff0c;继承Pawn类&#xff0c;这里命名为“PawnWithCamera” 2. 在头文件中申明弹簧臂、摄像机和静态网格体组件 3. 在源文件中引入组件所需库 在构造函数…

多目标优化算法——多目标粒子群优化算法(MOPSO)

Handling Multiple Objectives With Particle Swarm Optimization&#xff08;多目标粒子群优化算法&#xff09; 一、摘要&#xff1a; 本文提出了一种将帕累托优势引入粒子群优化算法的方法&#xff0c;使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…

HTML5好看的音乐播放器多种风格(附源码)

文章目录 1.设计来源1.1 音乐播放器风格1效果1.2 音乐播放器风格2效果1.3 音乐播放器风格3效果1.4 音乐播放器风格4效果1.5 音乐播放器风格5效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&…

通用网络安全设备之【防火墙】

概念&#xff1a; 防火墙&#xff08;Firewall&#xff09;&#xff0c;也称防护墙&#xff0c;它是一种位于内部网络与外部网络之间的网络安全防护系统&#xff0c;是一种隔离技术&#xff0c;允许或是限制传输的数据通过。 基于 TCP/IP 协议&#xff0c;主要分为主机型防火…

c++趣味编程玩转物联网:基于树莓派Pico控制有源蜂鸣器

有源蜂鸣器是一种简单高效的声音输出设备&#xff0c;广泛应用于电子报警器、玩具、计时器等领域。在本项目中&#xff0c;我们结合树莓派Pico开发板&#xff0c;通过C代码控制有源蜂鸣器发出“滴滴”声&#xff0c;并解析其中涉及的关键技术点和硬件知识。 一、项目概述 1. 项…

jar包打成exe安装包

打包exe并设置管理员权限 前言打包可执行文件exe准备jre环境运行exe4j并配置 设置执行文件exe管理员权限设置打包工具管理员权限打包exe安装包创建脚本打包 前言 准备安装包&#xff1a; jar包&#xff1a;自己的程序&#xff1b;exe4j&#xff1a;将jar打包可执行的exe&…

NAT:连接私有与公共网络的关键技术(4/10)

一、NAT 的工作原理 NAT 技术的核心功能是将私有 IP 地址转换为公有 IP 地址&#xff0c;使得内部网络中的设备能够与外部互联网通信。其工作原理主要包括私有 IP 地址到公有 IP 地址的转换、端口号映射以及会话表维护这几个步骤。 私有 IP 地址到公有 IP 地址的转换&#xff1…

多模态大型语言模型(MLLM)综述

目录 多模态大语言模型的基础 长短期网络结构(LSTM) 自注意力机制 基于Transformer架构的自然语言处理模型 多模态嵌入概述 多模态嵌入关键步骤 多模态嵌入现状 TF-IDF TF-IDF的概念 TF-IDF的计算公式 TF-IDF的主要思路 TF-IDF的案例 训练和微调多模态大语言模…

学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示&#xff0c;其中properties参数的主要属性已在前篇文章中学习&#xff0c;本文学习scheme和principal的意义及用法。 public static …

C++设计模式-模板模式,Template Method

动机&#xff08;Motivation&#xff09; 在软件构建过程中&#xff0c;对于某一项任务&#xff0c;它常常有稳定的整体操作结构&#xff0c;但各个子步骤却有很多改变的需求&#xff0c;或者由于固有的原因&#xff08;比如框架与应用之间的关系&#xff09;而无法和任务的整…

Jenkins流水线 Allure JUnit5 自动化测试

目录 一、Jenkins Allure配置 1.1 安装Allure插件 1.2 安装Allure工具 1.3 配置测试报告路径 1.4 JenkinsFile 二、Jenkins 邮箱配置 2.1 安装Email Extension Plugin插件 2.2 邮箱配置 2.3 JenkinsFile 三、项目pom.xml 配置 3.1 引入allure-junit5依赖 3.2 引入m…

计算机网络 实验七 NAT配置实验

一、实验目的 通过本实验理解网络地址转换的原理和技术&#xff0c;掌握扩展NAT/NAPT设计、配置和测试。 二、实验原理 NAT配置实验的原理主要基于网络地址转换&#xff08;NAT&#xff09;技术&#xff0c;该技术用于将内部私有网络地址转换为外部公有网络地址&#xff0c;从…

shell脚本基础学习_总结篇(完结)

细致观看可以&#xff0c;访问shell脚本学习专栏&#xff0c;对应章节会有配图https://blog.csdn.net/2201_75446043/category_12833287.html?spm1001.2014.3001.5482 导语 一、shell脚本简介 1. 定义&#xff1a; 2. 主要特点&#xff1a; 3. shell脚本的基本结构 4. S…