温馨提示×

Oracle在Linux上如何实现容灾备份

小樊
37
2025-12-26 08:10:59
栏目: 云计算

在 Linux 上构建 Oracle 容灾备份的可落地方案


一、方案总览与选型建议

  • 生产上常用且可验证的两类方案:
    • Data Guard Physical Standby:基于重做日志的同步,支持零数据丢失(RPO=0)快速切换/故障转移(RTO 分钟级),适合高可用与异地容灾。
    • RMAN 物理备份:以RMAN为核心,定期全量+增量+归档日志备份,支持时间点恢复(PITR)异机/跨平台恢复,适合合规备份与长期留存。
  • 辅助与补充:
    • 逻辑备份(Data Pump):用于迁移、开发/测试与有限时点恢复,不建议作为主容灾手段(性能与实时性不足)。
    • 第三方 CDP/无代理备份:如备特佳(CDP、任意点回退、业务接管、跨平台)与云祺(面向 Oracle Linux Virtualization Manager 的无代理备份、瞬时恢复),可作为补充增强手段。

二、方案一 Data Guard Physical Standby 高可用/异地容灾

  • 适用目标:同城/异地机房的高可用与容灾切换,要求RPO=0RTO 分钟级
  • 核心步骤(Linux + Oracle 19c 示例):
    1. 前置准备
      • 主备库均安装 Oracle 19c,配置 /etc/hosts、主机名、防火墙/SELinux、Oracle 用户环境与目录。
      • 主库创建数据库时建议启用归档模式(示例 DBCA 参数:-archiveLogMode yes)。
    2. 主库关键配置
      • 开启强制日志:ALTER DATABASE FORCE LOGGING;
      • 配置归档与 DG 参数(示例):
        ALTER SYSTEM SET log_archive_config='DG_CONFIG=(orcl_primary,orcl_standby)';
        ALTER SYSTEM SET log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl_primary';
        ALTER SYSTEM SET log_archive_dest_2='SERVICE=standby ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_standby';
        ALTER SYSTEM SET fal_server='standby';
        ALTER SYSTEM SET standby_file_management='AUTO';
        
      • 建议添加 Standby Redo Log(组数比在线日志多 1 组)。
      • 配置 TNS(PRIMARY/STANDBY 条目互相可达),并拷贝主库密码文件到备库:scp $ORACLE_HOME/dbs/orapworcl standby:/u01/app/oracle/product/19c/dbhome_1/dbs/
    3. 备库搭建
      • 仅安装软件,创建 pfileSTARTUP NOMOUNT
      • 使用 RMAN Duplicate 从主库创建备库(示例):
        rman target sys/Oracle123@primary auxiliary /
        duplicate target database for standby from active database
          spfile
          set db_unique_name='orcl_standby'
          set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl_standby'
          set log_archive_dest_2='SERVICE=primary ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl_primary'
          set fal_server='primary'
          set standby_file_management='AUTO'
          nofilenamecheck;
        
      • 备库启动 MRP 进程应用日志:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
    4. 验证与切换
      • 在主备库查询 V$DATAGUARD_STATSV$ARCHIVED_LOG 验证同步延迟与归档应用;
      • 演练Switchover/Failover,确认应用可快速切换至备库。

三、方案二 RMAN 物理备份与时间点恢复

  • 适用目标:合规备份、长期留存、跨机/跨平台恢复时间点恢复(PITR),作为 Data Guard 的补充或无法部署备库时的主方案。
  • 核心步骤(Linux 环境):
    1. 开启归档模式(示例)
      sqlplus / as sysdba
      ARCHIVE LOG LIST;
      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
      
      • 归档默认路径为 $ORACLE_BASE/fast_recovery_area(默认大小常为 4 GB),建议按需扩容或调整 LOG_ARCHIVE_DEST_n
    2. 备份策略与命令
      • 全量(每周)+ 增量(每日)+ 归档日志持续备份;示例 RMAN:
        RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG DELETE INPUT;
        RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
        
      • 定期校验与保留策略(如 DELETE OBSOLETE)按需配置。
    3. 时间点恢复(PITR)
      • 还原至最近全量备份后,基于 SCN/时间点 应用归档与重做日志:
        RMAN> RUN {
          SET UNTIL TIME '2025-12-26 10:00:00';
          RESTORE DATABASE;
          RECOVER DATABASE;
        }
        
      • RESETLOGS 打开数据库:ALTER DATABASE OPEN RESETLOGS;
    4. 限制与注意
      • RMAN 备份元数据由控制文件管理,避免为同一库配置多个备份计划;按时间点恢复时,勿删除指定时间点之前的最近一份全量备份集

四、补充与对比

方案 典型场景 关键能力 优点 注意点
Data Guard Physical Standby 高可用、同城/异地容灾 日志同步、零数据丢失、快速切换 RTO/RPO 指标优秀、可演练切换 需额外主机与网络带宽,参数与角色切换需规范
RMAN 物理备份 合规留存、PITR、跨机恢复 全量/增量/归档、PITR 成熟可靠、灵活恢复 恢复为整库级别,RTO 取决于数据量与备份位置
逻辑备份(Data Pump) 迁移/测试/轻量恢复 expdp/impdp 简单易用、跨平台 实时性与一致性有限,非主容灾手段
第三方 CDP/无代理 增强型实时保护与接管 CDP、任意点回退、无代理 快速接管、降低代理维护 需评估与现有体系兼容性及成本
  • 补充实践:
    • Oracle Linux Virtualization Manager(oVirt/KVM) 场景,可采用无代理备份与瞬时恢复,缩短停机时间。
    • 国产 CDP 产品(如备特佳)支持 Oracle/RAC、任意点回退与业务接管,可作为传统方案的增强选项。

0