DataGuard 架构和概念整理

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.rhkb.cn/news/479693.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux文件基础

目录 一、文件类型 二、文件权限 三、权限修改 Linux中一切皆文件,文件目录分布呈树状数据结构,/是根目录,目录的源头 一、文件类型 类型字符说明普通-Linux中最多的一种文件类型,包括 纯文本文件(ASCII)、二进制文件(binary…

自然语言处理基础之文本预处理

一. NLP介绍 1957年, 怛特摩斯会议 二. 文本预处理 文本预处理及作用 将文本转换成模型可以识别的数据 文本转化成张量(可以利用GPU计算), 规范张量的尺寸. 科学的文本预处理可以有效的指导模型超参数的选择, 提升模型的评估指标 文本处理形式 分词 词性标注 命名实体识别…

外卖点餐系统小程序

目录 开发前准备 项目展示项目分析项目初始化封装网络请求 任务1 商家首页 任务分析焦点图切换中间区域单击跳转到菜单列表底部商品展示 任务2 菜单列表 任务分析折扣信息区设计菜单列表布局请求数据实现菜单栏联动单品列表功能 任务3 购物车 任务分析设计底部购物车区域添加商…

彻底理解如何保证ElasticSearch和数据库数据一致性问题

一.业务场景举例 需求: 一个卖房业务,双十一前一天,维护楼盘的运营人员突然接到合作开发商的通知,需要上线一批热门的楼盘列表,上传完成后,C端小程序支持按楼盘的名称、户型、面积等产品属性全模糊搜索热门…

单片机将图片数组调出来显示MPU8_8bpp_Memory_Write

界面显示图片是很常见的需求,使用外挂的FLASH是最常用的方法。但是如果图片需求不大,比如说我们只要显示一个小图标,那么为了节省硬件成本,是不需要外挂一颗FLASH芯片的,我们可以将图标转成数组,存在单片机…

VS的安装和配置

目录 概述 安装Visual Studio 下载引导安装包 在线安装(推荐) 使用Visual Studio进行开发 创建项目 配置项目 项目 VS 解决方案(重要) 命名 完成项目创建 创建源文件 编写代码 VS项目目录的说明(补充&…

linux模拟HID USB设备及wireshark USB抓包配置

文章目录 1. 内核配置2. 设备配置附 wireshark USB抓包配置 linux下模拟USB HID设备的简单记录&#xff0c;其他USB设备类似。 1. 内核配置 内核启用USB Gadget&#xff0c;使用fs配置usb device信息。 Device Drivers ---> [*] USB support ---><*> USB …

【C++】vector的使用

1. vector的构造 (constrator)构造函数声明 接口说明 vector(); (重点) 无参构造 vector (const vector& x); &#xff08;重点&#xff09; 拷贝构造 vector (InputIterator first, InputIterator last); 使用迭代器区间进行初始化构造 vector (size_type n, co…

Easy Excel 通过【自定义批注拦截器】实现导出的【批注】功能

目录 Easy Excel 通过 【自定义批注拦截器】实现导出的【批注】功能需求原型&#xff1a;相关数据&#xff1a;要导出的对象字段postman 格式导出对象VO 自定义批注拦截器业务代码&#xff1a; 拦截器代码解释&#xff1a;详细解释&#xff1a;格式优化&#xff1a; Easy Excel…

Qt/C++基于重力模拟的像素点水平堆叠效果

本文将深入解析一个基于 Qt/C 的像素点模拟程序。程序通过 重力作用&#xff0c;将随机分布的像素点下落并水平堆叠&#xff0c;同时支持窗口动态拉伸后重新计算像素点分布。 程序功能概述 随机生成像素点&#xff1a;程序在初始化时随机生成一定数量的像素点&#xff0c;每个…

矩阵重构——sortrows函数

s o r t r o w s sortrows sortrows函数依据某列的属性对其元素所在的行进行排序从而进行矩阵的排序 s o r t r o w s sortrows sortrows函数常用方法&#xff1a; 1. 1. 1. s o r t r o w s ( a , [ c 1 , c 2 ] ) sortrows(a,[c_1,c_2]) sortrows(a,[c1​,c2​])&#xff0c…

Linux之网络基础

网络发展 网络的发展可以从人与人之间的工作模式开始谈起, 人与人的工作模式反应了机器与机器的工作模式: 1. 独立模式: 在网络发展的早期计算机间处于独立模式, 计算机之间相互独立 最开始计算机之间是独立运行的, 数据之间的交互需要人用软盘等存储介质拷贝过去, 一般涉及…

【pyspark学习从入门到精通22】机器学习库_5

训练-验证分割 TrainValidationSplit 模型为了选择最佳模型&#xff0c;会对输入数据集&#xff08;训练数据集&#xff09;进行随机分割&#xff0c;分成两个子集&#xff1a;较小的训练子集和验证子集。分割只执行一次。 在这个例子中&#xff0c;我们还将使用 ChiSqSelect…

【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言

目录 3.3 变迁发生序列与Petri网语言定义 3.4定义 3.5定义 3.6定理 3.5例 3.9定义 3.7例 3.10定理 3.6定理 3.7 有界Petri网泵引理推论 3.5定义 3.9定理 3.8定义 3.10定义 3.11定义 3.12定理 3.93.3 变迁发生序列与Petri网语言 对于 Petri 网进行分析的另一种方法是考察网系统…

IDEA:配置Serializable class without ‘serialVersionUID’ 找不到

在使用Java原生序列化的时候&#xff0c;serialVersionUID起到了一个类似版本号的作用&#xff0c;在反序列化的时候判断serialVersionUID如果不相同&#xff0c;会抛出InvalidClassException。 File -> Settings -> Editor -> Inspections -> 搜索 Serialization …

win10 禁止更新

一、winR 输入 regedit 二、输入注册列表路径&#xff1a; &#xff08;1&#xff09;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings &#xff08;2&#xff09;按照格式&#xff0c;创建文件命名: FlightSettingsMaxPauseDays &#xff08;3&…

OpenAI Whisper 语音识别 模型部署及接口封装

环境配置: 一、安装依赖&#xff1a; pip install -U openai-whisper 或者&#xff0c;以下命令会从这个存储库拉取并安装最新的提交&#xff0c;以及其Python依赖项&#xff1a; pip install githttps://github.com/openai/whisper.git 二、安装ffmpeg&#xff1a; cd …

springboot视频网站系统的设计与实现(代码+数据库+LW)

摘 要 使用旧方法对视频信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在视频信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的视频网站系统管理员功…

安装QT6.8(MSVC MinGW)+QT webengine+QT5.15.2

本篇主要针对只使用过QT5的qmake&#xff0c;没有用过MSVC&#xff0c;VS的老同学。 建议一部分一部分安装&#xff0c;全部勾选安装遇到问题会中断&#xff0c;前功尽弃。 我自己需要的是QT5&#xff0c;编出的软件用在公司设备上。 QT6&#xff1a;建议也安装学习&#xf…

自动驾驶目标检测融合全貌

1、early fusion 早期融合&#xff0c;特点用到几何空间转换3d到2d或者2d到3d的转换&#xff0c;用像素找点云或者用点云找像素。 2、deep fusion 深度融合&#xff0c;也是特征级别融合&#xff0c;也叫多模态融合&#xff0c;如bevfusion范式 3、late fusion 晚融合&#x…