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)通过光纤/网络暴露给多台服务器。没有逻辑、没有事务、不处理SQLoracle中通过软件管理层访问该外部存储。是一个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 防灾难。