第二篇《Active Data Guard 实战:打造高可用数据库》(ADG)

《Oracle 数据迁移与备份系列》

第二篇:《Active Data Guard 实战:打造高可用数据库》

1. 概述

Active Data Guard(ADG)是一种高效、便捷的物理迁移方案,能够实现实时数据同步。它属于 Oracle Data Guard(主备库)架构的一种模式,适用于构建高可用数据库环境。

2. ADG 介绍

2.1 功能概述

ADG 主要提供以下核心功能:

  • 实时数据同步:主库数据变更后,会立即同步至备库,确保数据一致性。
  • 只读查询:备库支持查询操作(SELECT),可用于报表和分析,减少主库负担。
  • 高可用性:在主库发生故障时,备库可以快速切换为主库,保障业务连续性。
  • 备库数据应用:持续应用主库的 Redo 日志,保证数据最新。

2.2 核心特性

ADG 采用主备架构,通常由两台或多台服务器组成,具备以下特点:

主库(Primary Database)
  • 处于 READ WRITE 状态。
  • 允许所有 DML (INSERT、UPDATE、DELETE)和 DDL(CREATE、DROP)操作。
  • 生成 Redo 日志 ,并实时传输至 备库
备库(Standby Database)
  • 处于 READ ONLY WITH APPLY 状态。
  • 支持查询(SELECT),但不允许 DML/DDL 操作
  • 持续应用主库的 Redo 日志,保证数据与主库实时同步。

当主库发生故障时,备库可迅速切换为主库,确保业务连续性。

3. ADG 的优势

  • 实时同步 :主库数据写入后,会同步至 ADG 备库,保证数据一致性。
  • 负载分担 :查询操作可在 ADG 备库 上执行,降低主库压力,提高整体性能。
  • 高可用性:在主库故障时,备库可快速接管,提升数据库可靠性。

4. 环境准备

4.1 软硬件要求

  • 需部署在两台独立的服务器上。
  • 主备库的操作系统、Oracle 版本、目录结构需保持一致。

4.2 数据库要求

  • 主备库的 Oracle 版本必须一致,且主库版本必须大于或等于备库。
  • 主库需开启 归档模式(ARCHIVELOG)

5. ADG 数据迁移实施步骤

接下来,我们将详细介绍如何使用 ADG 进行数据迁移,具体包括:

5.1 环境准备

(1)确保主备库环境一致

  • 主备库必须在相同的操作系统和Oracle环境下运行。
  • 目录结构必须保持一致。
    • 示例:/u01/app/oracle/oradata/

(2)配置归档模式

  • 主库开启归档模式

    • 检查是否开启:
    sql 复制代码
    SELECT LOG_MODE FROM V$DATABASE;
    • 如未开启:
    sql 复制代码
    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;

(3)启用强制日志

sql 复制代码
ALTER DATABASE FORCE LOGGING;

5.2备库前期准备

(1)配置监听

编辑tnsnames.ora文件,主备库都要编辑。

其中HOST=SERVICE_NAME=的参数需要具体修改。

复制代码
PRIMARY_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST=主库IP)(PORT=1521))
    (CONNECT_DATA = (SERVICE_NAME=ORCL))
  )

STANDBY_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST=备库IP)(PORT=1521))
    (CONNECT_DATA = (SERVICE_NAME=ORCL))
  )

修改完毕后进行重启

bash 复制代码
lsnrctl stop
lsnrctl start

(2)修改参数

在主库的数据库中执行以下命令

其中`SERVICE=orcl为备库服务名,需根据备库具体名称进行更改。

sql 复制代码
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=orcl ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=STANDBY_DB';

5.3 复制数据文件

(1)在主库创建RMAN备份

bash 复制代码
rman target /
RUN {
    BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';
    BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';
}

命令解析

  1. rman target /

    • 连接 RMAN,target / 表示 直接连接本地数据库(以 Oracle 用户运行)。
  2. BACKUP DATABASE FORMAT '/u01/backup/db_%U.bkp';';

    • 备份 整个数据库(包括数据文件)。

    bash 复制代码
    FORMAT '/u01/backup/db_%U.bkp'

    指定备份文件路径:

    • %U:RMAN 自动生成唯一的备份文件名,避免冲突。
  3. BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/backup/standby_control.bkp';

    • 备份当前 控制文件,用于创建 Standby 备库。
    • FOR STANDBY:指定该控制文件将用于 Data Guard 备库

(2)传输数据文件到备库

bash 复制代码
scp /u01/backup/* oracle@<备库IP>:/u01/backup/

(3)在备库恢复数据库

bash 复制代码
rman target /
RUN {
    SET DBID <主库DBID>;   # 可选,确保识别正确的备份
    STARTUP NOMOUNT;
    RESTORE STANDBY CONTROLFILE FROM '/u01/backup/standby_control.bkp';
    ALTER DATABASE MOUNT;
    RESTORE DATABASE;
    RECOVER DATABASE;
}
  • SET DBID <主库DBID>;:选择数据库DBID,防止RMAN误识别数据库。
  • STARTUP NOMOUNT 先启动实例,再恢复控制文件,符合最佳实践。
  • ALTER DATABASE MOUNT 挂载数据库,使其进入 Standby 状态。
  • RECOVER DATABASE 应用归档日志,确保数据一致性。

(4) 启动 Standby 备库日志应用

在备库中运行

sql 复制代码
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

(5)确认 ADG 运行状态

sql 复制代码
SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
  • APPLIED = YES 表示日志已成功同步到 Standby。

  • SEQUENCE# 应与主库的 V$LOG 保持同步。

5.4 启动备库并启用 ADG

(1) 以 MOUNT 模式启动

sql 复制代码
STARTUP MOUNT;

(2) 启动日志应用

sql 复制代码
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

(3) 切换为 ADG 只读模式

sql 复制代码
ALTER DATABASE OPEN READ ONLY;

6.结语

至此,使用 Active Data Guard(ADG) 进行数据迁移的流程已完成。

本文旨在为初学者提供学习参考,作者仍在不断学习和探索,若有不足之处,欢迎指正交流。如遇问题,欢迎私信或在评论区讨论,共同进步!

相关推荐
简佐义的博客5 分钟前
破解非模式物种GO/KEGG注释难题
开发语言·数据库·后端·oracle·golang
爬山算法6 分钟前
MySQL(116)如何监控负载均衡状态?
数据库·mysql·负载均衡
你想考研啊29 分钟前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks32 分钟前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
饥饿的半导体2 小时前
Linux快速入门
linux·运维
老纪的技术唠嗑局3 小时前
OceanBase PoC 经验总结(二)—— AP 业务
数据库
阿里云大数据AI技术3 小时前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
还是奇怪4 小时前
Linux - 安全排查 2
linux·运维·安全
牛奶咖啡134 小时前
Linux系统的常用操作命令——文件远程传输、文件编辑、软件安装的四种方式
运维·服务器·软件安装·linux云计算·scp文件远程传输·vi文件编辑·设置yum的阿里云源
难受啊马飞2.04 小时前
如何判断 AI 将优先自动化哪些任务?
运维·人工智能·ai·语言模型·程序员·大模型·大模型学习