news 2026/8/28 5:27:45

oracle主库备库/主节点备节点概念含义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
oracle主库备库/主节点备节点概念含义

主库(Primary)与备库(Standby)

这是Data Guard(DG 数据卫士)架构中的概念,用于高可用和灾难恢复

┌─────────────────────────────────────────────┐ │ Oracle Data Guard 架构 │ │ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ 主库 │◄───────►│ 备库 │ │ │ │(Primary)│ 同步 │(Standby)│ │ │ │ │ 日志 │ │ │ │ │ • 读写操作 │ │ • 只读(可开)│ │ │ │ • 生产数据 │ │ • 实时同步 │ │ │ │ • 归档日志 │────────►│ • 故障切换 │ │ │ │ │ Redo │ • 灾备保护 │ │ │ └─────────────┘ └─────────────┘ │ │ │ │ 关系: │ │ • 主库是唯一的读写库,处理所有业务 │ │ • 备库通过 Redo 日志实时或异步复制主库数据 │ │ • 主库故障时,备库可切换为主库(Failover) │ │ • 主库恢复后,可作为备库重新加入 │ └─────────────────────────────────────────────┘

核心理解:两套数据库,用DG做复制。(DG 是「数据复制技术」)

备库也有两种模式

物理备库
┌─────────────────────────────────────────────┐ │ 物理备库=主库的"克隆体"│ │ │ │ 主库 备库 │ │ ┌──────┐ ┌──────┐ │ │ │数据块A│ ────► │数据块A│ ← 完全相同的块 │ │ │数据块B│ ────► │数据块B│ │ │ │数据块C│ ────► │数据块C│ │ │ └──────┘ └──────┘ │ │ │ │ 同步方式:Redo 日志应用 │ │ • 主库产生 Redo 日志 │ │ • 通过网络传输到备库 │ │ • 备库直接"回放"日志到数据块 │ │ │ │ 特点: │ │ • 数据结构、索引、表空间完全一致 │ │ • 不能打开读写(可开只读 ADG) │ │ • 切换速度快(块级恢复) │ │ • 适用于:灾备、高可用切换 │ └─────────────────────────────────────────────┘

物理备库:与主库完全一样,就是主库的备库

逻辑备库
┌─────────────────────────────────────────────┐ │ 逻辑备库=主库的"SQL 重放器"│ │ │ │ 主库操作 备库执行 │ │ INSERT INTO A... ──► INSERT INTO A... │ │ UPDATE B SET... ──► UPDATE B SET... │ │ DELETE FROM C... ──► DELETE FROM C... │ │ │ │ 同步方式:SQL 语句应用 │ │ • 主库产生 Redo 日志 │ │ • 日志被解析成原始 SQL 语句 │ │ • 备库执行这些 SQL │ │ │ │ 特点: │ │ • 数据结构可以不同(可添加本地索引、分区) │ │ • 可以打开读写,做报表、ETL │ │ • 可以只同步部分表(过滤) │ │ • 切换速度慢(需重建) │ │ • 适用于:数据分析、报表、部分数据同步 │ └─────────────────────────────────────────────┘

逻辑备库:有从主库表、字段到备库表、字段的映射关系,只要从主库同步过来的表能够成功与主库保持一致就行,可以与主库不同的地方(可以存在主库没有而备库有的表),可以做自己的索引/分区等优化,可以成为不止主库的备库的数据库。

对比
对比项物理备库逻辑备库
复制粒度数据块SQL 语句
数据结构必须完全一致可以不同
读写状态通常只读(ADG 可只读)可读写
同步速度稍慢(需解析 SQL)
切换速度
能否过滤表不能
典型用途灾备、高可用报表、数据分析

主节点与备节点

这是Real Application Clusters(RAC 真正集群应用)架构中的概念,用于负载均衡和高可用。属于共享存储架构

┌─────────────────────────────────────────────┐ │ Oracle RAC 架构 │ │ │ │ ┌─────────┐ │ │ │ 共享存储 │ ← SAN/NAS,所有节点访问 │ │ │(ASM)│ 同一套数据文件 │ │ └────┬────┘ │ │ │ │ │ ┌─────────┼─────────┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │节点1 │ │节点2 │ │节点3 │ │ │ │()│ │()│ │()│ │ │ │Instance│ │Instance│ │Instance│ │ │ └─────┘ └─────┘ └─────┘ │ │ │ │ 关系: │ │ • 多个节点共享同一套数据库文件 │ │ • 所有节点可同时读写(Active-Active) │ │ • 客户端连接任意节点,自动负载均衡 │ │ • 某节点故障,其他节点接管,业务不中断 │ │ •"主节点"通常指当前处理特定请求的实例 │ │ RAC 中无严格主备,更多是"首选实例"概念 │ └─────────────────────────────────────────────┘

核心对比

维度主库/备库(Data Guard)主节点/备节点(RAC)
架构两套独立数据库一套数据库,多个实例
数据存储主备各有一套数据文件共享存储,一份数据文件
读写能力主库读写,备库只读(或关闭)所有节点可同时读写
距离可跨机房、跨城市(灾备)通常同机房(低延迟要求)
切换方式Switchover(计划)/ Failover(故障)自动故障转移(TAF)
核心目的灾难恢复(DR)高可用 + 负载均衡(HA)
数据延迟可能有秒级/分钟级延迟实时一致
成本较低(备库可低配)较高(共享存储 + 高速网络)

数据库的存储节点与计算节点

计算节点

  • 负责 SQL 解析、执行计划、事务处理、语法分析、连接管理(连接池,会话管理)的无状态进程
  • 不存数据,只"算"数据;可以弹性扩缩容

存储节点

  • 负责数据持久化、日志存储、副本管理的分布式存储层
  • 存数据文件和日志;保证多副本一致性和高可用

关键理解:计算和存储是物理资源角色。一个计算节点可以访问多个存储节点;存储节点之间自己做副本(如 3 副本),对计算层透明。

单机架构、耦合架构、分离架构、共享存储架构

单机架构

  • 最简单的架构,其他架构的起点和基础,没有高可用,最简单
  • 计算、存储都在一台机器上,单台机器、单个进程
  • 与其他架构的演进历程:
数据库部署形态的演进 │ ├─ Standalone(单机) │ └── 一切的起源,最简单,无高可用 │ ├─ 在 Standalone 基础上 + 复制 │ └── 主从复制 / DG 架构 │ (一台主库 + 一台或多台备库) │ ├─ 在 Standalone 基础上 + 共享存储 + 多实例 │ └── RAC 架构 │ (多台机器 + 一套共享存储,同时读写) │ └─ 把 Standalone 彻底拆开 └── 分离架构(计算存储分离) (计算层无状态 + 存储层分布式)

共享存储架构:(共享存储,多活集群)

  • 多个计算实例共享 一套外部存储,每个实例都有自己的进程。
  • 注意:外部存储不是一个独立的服务,是一块硬件设备(磁盘列阵/SAN),通过光纤/网络暴露给多台服务器。没有逻辑、没有事务、不处理SQL
  • oracle中通过软件管理层访问该外部存储。是一个oracle实例(服务/进程)
  • 可以理解,共享架构下,每个计算实例都是一个数据库实例,该实例即负责“计算”,也负责与“存储”,只不过不直接操作存储文件。
  • 数据库实例(计算实例)、软件管理层、外部设备之间的关系:
RAC节点1: ┌─────────────────────────────────────┐ │ 数据库实例(RAC Instance1)│ ← 处理 SQL、事务 │ 进程: PMON, SMON, DBWn, LGWR... │ └──────────────┬──────────────────────┘ │ 通过 ASM 接口访问 ▼ ┌─────────────────────────────────────┐ │ ASM 实例(ASM Instance1)│ ← 存储管理层,是进程/服务(每个 RAC 节点上都跑一个 ASM 实例。)│ 进程: ASM1, RBAL, ARBn... │ └──────────────┬──────────────────────┘ │ 读写磁盘块 ▼ 外部存储(磁盘阵列)
  • 关键区别
层级是什么是不是进程/服务
外部存储(磁盘阵列)硬件设备❌ 不是
ASM 实例Oracle 的存储管理软件✅ 是进程/服务
数据库实例处理 SQL 和事务✅ 是进程/服务

耦合架构

  • 计算+存储节点在同一台机器上,没有计算节点和存储节点概念;
  • 只有一个数据库实例=计算 + 存储,绑在一台机器上,存储不共享
  • 相当于把计算节点与存储节点的功能放到了一起。

分离架构

  • 计算节点和存储节点是不同的服务/不同的应用进程,通过网络协议交互,存储层自己管理多副本

架构组合关系

可能的命名实际含义
ALONE纯单机,无高可用
ALONE_DG单机 + Data Guard 备库
RAC多节点共享存储集群
RAC_DGRAC 集群 + Data Guard 备库

数据库存储的内容是什么

存储节点/共享存储 中实际存储的文件: ┌─────────────────────────────────────────────┐ │ Oracle 数据库文件 │ │ │ │1. 数据文件(Data Files) │ │ • .dbf 文件 │ │ • 实际存储表数据、索引数据 │ │ • 一个表空间对应一个或多个数据文件 │ │ │ │2. 控制文件(Control Files) │ │ • 记录数据库物理结构 │ │ • 数据文件位置、日志序列号等 │ │ │ │3. 重做日志文件(Redo Log Files) │ │ • 记录所有变更操作 │ │ • 用于恢复、备库同步 │ │ │ │4. 归档日志(Archive Logs) │ │ • Redo 日志的历史备份 │ │ • Data Guard 同步就靠它 │ │ │ │5. 参数文件(SPFILE/PFILE) │ │ • 数据库启动参数 │ │ │ │6. 临时文件(Temp Files) │ │ • 排序、哈希等临时数据 │ └─────────────────────────────────────────────┘

一句话总结

主库/备库是 Data Guard 架构,两套独立数据库通过日志同步,用于灾难恢复;主节点/备节点是 RAC 架构,多个实例共享一份数据,用于高可用和负载均衡。前者是"数据复制",后者是"实例集群"。生产环境常两者结合:RAC 防单点,DG 防灾难。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 5:26:47

医疗病历系统设计:SpringBoot下的临床数据建模与工程实践

简介:电子病历系统是医疗信息化的核心载体,其本质是将非结构化临床文本转化为可计算、可追溯、可质控的结构化数据。理解病历的数据分层逻辑(实体层/内容层/审计层)是构建高可用系统的基础;掌握基于MySQL的关系建模方法…

作者头像 李华
网站建设 2026/8/28 5:25:57

从艺术批判到AI数字自我:构建可调试的身份系统

从Barbara Kruger到AI:自我构建的演变,表面上是一条艺术史与技术史的交叉线,实际上直指一个更根本的工程问题:当“我是谁”被外部系统批量生产时,我们如何识别、调试并重建自己的身份结构。Barbara Kruger用八十年代的…

作者头像 李华
网站建设 2026/8/28 5:18:44

字符vs字符串

字符vs字符串 比较字符和字符串 1.对于一个字母,数字,符号,它可以是字符,也可以是字符串。如果是字符的话,就只包含本个事物,但如果是字符串的话,他后面会有一个\0结尾。 单引号用于字符&#x…

作者头像 李华
网站建设 2026/8/28 5:15:50

陇剑杯部分

目录标题[陇剑杯]签到应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP)传输层: (典型设备: 进程和端口) 数据单元:数据段 (Segment)网络层: (典型设备:路由器,防火墙、多层交换机) 数据单元&#…

作者头像 李华
网站建设 2026/8/28 5:14:24

CH32H417小系统开发板

CH32H417小系统开发板 本项目是基于CH32H417Q的开发板。PCB为两层板,追求低成本实现。目前除了UHSIF和SerDes功能没有验证,板卡集成所有功能都做了验证。主板的结构参考了树莓派的结构。   详细信息可以访问我的仓库:https://github.com/Tr…

作者头像 李华