使用 OCI Full Stack DR 和定制脚本自动更改 OCI Database Services 中手动配置的 Oracle Data Guard 的数据库角色

简介

Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) 只需点击一下,即可编排全球 Oracle Cloud Infrastructure (OCI) 区域之间的计算、数据库和应用转换。客户可以自动执行恢复一个或多个业务系统所需的步骤,而无需重新设计或重新构建现有基础设施、数据库或应用,也无需专门的管理或转换服务器。

OCI Full Stack DR 为基于 OCI 的各种 Oracle Database 服务提供完全集成的支持。这些数据库可以作为 OCI Full Stack DR 保护组的成员添加,从而实现协调的灾难恢复操作。

对于 Oracle Databases Managed Services in OCI ,强烈建议使用 OCI 控制台、Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 或 OCI SDK 配置 Oracle Data Guard。这样可以确保 OCI Full Stack DR 在 DR 计划中自动检测 Data Guard 配置并生成用于角色转换的内置计划组。

但是,在某些情况下,由于特定的技术或运营要求,需要手动配置 Oracle Data Guard(OCI 本机接口之外),例如:

在这种情况下,虽然 OCI 数据库服务控制层可能无法识别 Oracle Data Guard 设置,但 OCI Full Stack DR 仍然提供了灵活性。您可以通过创建定制脚本并将其集成到 DR 计划中的用户定义计划组中来处理角色转换。

请注意,此解决方案与通过 OCI 控制台、SDK 或 API 管理 Data Guard 配置的 Oracle Database Cloud 服务不兼容。

在本教程中,我们将介绍使用 OCI 数据库服务的定制数据库处理程序脚本管理 Oracle Data Guard 角色转换的标准化方法,其中 Oracle Data Guard 是手动配置的。

注:此定制脚本解决方案适用于以下 OCI 数据库服务:

体系结构描述

在本教程中,我们将 Oracle Base Database Service 与两个跨 OCI 区域部署的数据库系统结合使用,其中 Oracle Data Guard 已手动配置。

定制数据守护配置
图 A:使用 Oracle Base Database Service 的 Custom Data Guard 配置

整个教程的定义和假设

目标

本教程将介绍以下任务:

Prerequisites

我们将使用以下资源从教程开始。

资源 区域 1 - 阿什本 区域 2 - 菲尼克斯
区间 app app
数据库系统 adghol-12345 adghol-12345
数据库名称 ghol ghol
数据库的唯一名称 adghol-site0 adghol-site1
DB 角色 主要 备用
计算 VM 脚本 iad 脚本 - 双工
存储桶 IAD PHX

注:请先完成所有必需的先决条件,然后再继续。这些步骤为顺利、成功的 OCI Full Stack DR 设置奠定了基础。

  1. 管理访问或必需的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略

    确保您具有管理员权限或配置必要的 OCI IAM 策略和动态组,以使用 OCI Full Stack DR。在此解决方案中,数据库处理程序脚本在内部启动 OCI 容器实例,因此您必须相应地添加策略。

    注:将出现的所有 <compartment_ocid><compartment_name> 替换为实际的 OCI 区间 OCID 和名称。

    1. 创建动态组:使用示例名称 (FullStackDR_Database_DG) 创建动态组并添加以下匹配规则:

       Any {instance.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'instance', resource.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'computecontainerinstance', resource.compartment.id = '<compartment_ocid>'}
       Any {resource.type = 'drprotectiongroup', resource.compartment.id = '<compartment_ocid>'}
      
    2. 创建 OCI IAM 策略:创建具有示例名称 (FullStackDR_Database_Group_Policies) 的策略并添加以下 allow 语句:

       Allow dynamic-group FullStackDR_Database_DG to read secret-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage virtual-network-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage instance-agent-command-execution-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage objects in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage database-family in compartment <compartment_name>
       Allow dynamic-group FullStackDR_Database_DG to manage compute-container-family in compartment <compartment_name>
      

    有关更多信息,请参见 OCI Disaster Recovery Policy – Official DocsConfiguring IAM Policies (Oracle Blog)

  2. 在这两个区域中预配 OCI 计算实例:在每个区域中创建 OCI 计算实例,以充当 Jumphost 来托管和执行 scripts.For 详细步骤,请参阅创建 OCI 实例。为了简单起见,我们将此 OCI 计算实例称为 tutorial.If 中的 Jumphost ,您已经拥有可以用作 Jumphost 的现有 OCI 计算实例,您可以跳过此步骤。请确保 Jumphost 具有正在运行的 Oracle Cloud Agent 并启用了运行命令插件。有关更多详细信息,请参阅 Oracle Cloud Agent

  3. 在 OCI 计算实例上运行命令的访问权限:请确保在 jumphost 中设置运行命令先决条件,因为我们在 DR 操作期间使用用户定义的计划组来运行脚本。有关更多信息,请参见 Running Commands on an Instance

  4. 在两个区域的 jumphost 中安装 OCI CLI:根据 jumphost 的操作系统,在这两个区域中安装 OCI CLI,并确保您可以在脚本中使用实例主用户来调用 OCI CLI 命令。有关更多信息,请参见 OCI CLI Installation

  5. 使用远程 VCN 对等连接在两个区域中设置 VCN:在主区域和备用区域中创建 VCN,并设置远程 VCN 对等连接。这是设置跨区域 Oracle Data Guard 所必需的。有关详细信息,请参阅 OCI 基本数据库网络配置

  6. 手动 Oracle Data Guard 配置:根据 Oracle Data Guard 中介的要求手动配置 Oracle Data Guard 设置。有关详细信息,请参阅 Oracle Data Guard Broker and Oracle Clusterware

  7. 在 Jumphost 中下载数据库处理程序脚本:应下载这些脚本并将其保存在两个区域的 jumphost 中。

    1. 从以下资料档案库下载 Oracle Data Guard 数据库处理程序脚本: Data Guard DB 处理程序脚本

    2. 将脚本复制到两个区域中 jumphost 上的 /home/opc/ 目录(或任何其他首选路径)。

    3. 确保脚本文件具有可执行权限。

    4. full_stack_dr_non_std_db_handler.py 是 Python 脚本,负责处理 Oracle Data Guard 角色 transitions.The 关联的 bash 脚本作为模板提供,可以根据您的特定要求进行修改。不要修改 Python 角色更改脚本本身。

  8. 创建 OCI Vault 和密钥:您必须创建 OCI Vault 并将数据库身份证明作为密钥存储在两个区域中。

    1. 使用 OCI 控制台或 CLI 在每个区域中创建 OCI Vault。
    2. 在 Vault 中创建密钥以存储数据库的 SYS 用户密码。

    有关更多信息,请参见 OCI Vaults

  9. Jumphost 中的连接检查:确保可从计算实例访问 OCI 数据库服务、OCI Vault 服务和 OCI 容器实例服务。这是必需的,因为 OCI Full Stack DR 脚本执行自测以从主要备用区域提取数据库详细信息。

    1. 连接必须从巨头开始工作。从 jumphost 运行以下命令。

        # Primary Region
        curl -v telnet://database.<primary_region>.oraclecloud.com:443
        curl -v telnet://secrets.vaults.<primary_region>.oci.oraclecloud.com:443
        curl -v telnet://iaas.<primary_region>.oraclecloud.com:443
        curl -v telnet://compute-containers.<primary_region>.oci.oraclecloud.com:443
      
        # Standby Region
        curl -v telnet://database.<standby_region>.oraclecloud.com:443
        curl -v telnet://secrets.vaults.<standby_region>.oci.oraclecloud.com:443
        curl -v telnet://iaas.<standby_region>.oraclecloud.com:443
        curl -v telnet://compute-containers.<standby_region>.oci.oraclecloud.com:443
      

      注:<primary_region><standby_region> 替换为实际 OCI 区域标识符。
      例如:

      • us-ashburn-1 —阿什本
      • us-phoenix-1(针对菲尼克斯)

      有关完整列表,请参阅 OCI 区域标识符

      预期输出:每个命令都应返回类似于 Connected to ... 的消息。

      如果任何连接失败,请检查 jumphost 的 VCN/子网的安全列表、路由表和服务网关配置。

  10. 创建对象存储存储桶:在主区域和备用区域中创建 OCI 对象存储存储桶,以存储 OCI Full Stack DR 在恢复操作期间生成的日志,如下所述:为操作日志准备日志位置

  11. Database Handler Script Usage and Customization(数据库处理程序脚本使用和定制):您可以从上述 GitHub 库下载数据库处理程序脚本。下面是数据库处理程序脚本使用情况和所需参数。

    数据库处理程序 - script.png
    图 B:数据库处理程序脚本使用情况

    支持的 --db_operation 选项包括:

    • 切换
    • SWITCHOVER_PRECHECK
    • 故障切换
    • FAILOVER_PRECHECK
    • CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY
    • CONVERT_PHYSICAL_TO_SNAPSHOT_STANDBY_PRECHECK
    • REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY_PRECHECK
    • REVERT_SNAPSHOT_TO_PHYSICAL_STANDBY

    OCI Full Stack DR 要求在运行数据库处理程序脚本时传递所有必需的参数。为了提高可用性和可重复性,建议创建包装 bash 脚本:

    • 提供所需的参数。
    • 启用日志记录以进行审计和故障排除。

    示例:数据库切换脚本 (db-switchover-iad-phx.sh)。

    #!/bin/bash
    
    # Define log file with date and time
    LOG_FILE="db-switchover-iad-phx-$(date +%Y%m%d_%H%M%S).log"
    
    # Define Python script and argument
    PYTHON_SCRIPT="full_stack_dr_non_std_db_handler.py"
    ARGUMENT="--database_ocid="ocid1.database.oc1.phx.xxxxxxxx" --vault_ocid="ocid1.vaultsecr
    et.oc1.phx.xxxxx" --region="us-phoenix-1" --primary_db_unique_name="adghol_site0" --st
    andby_db_unique_name="adghol_site1" --drpg_ocid="ocid1.drprotectiongroup.oc1.phx.axxxxxxax
    " --db_operation="SWITCHOVER" --auth_type=INSTANCE_PRINCIPAL"
    
    # Execute Python script and log output
    echo "Executing Python script: $PYTHON_SCRIPT with argument: $ARGUMENT" | tee -a $LOG_FILE
    /usr/bin/python3 $PYTHON_SCRIPT $ARGUMENT 2>&1 | tee -a $LOG_FILE
    
    echo "Execution completed. Logs saved in $LOG_FILE"
    

    注:将此包装程序脚本存储在与数据库处理程序脚本相同的位置,并确保其可执行。OCID 在脚本中是匿名的。

    chmod +x db-switchover-wrapper.sh
    

    DR 计划脚本映射,其中在区域 1 (Ashburn) 中运行的数据库为主数据库,区域 2 (Phoenix) 为备用数据库

    DR 计划类型 目标例程 脚本名 备注
    Switchover script-phx db-prechk-switchover-iad-phx.sh 预检查从 IAD 切换到 PHX 的数据库
    Switchover script-phx db-switchover-iad-phx.sh 数据库从 IAD 切换到 PHX
    Failover script-phx db-prechk-failover-iad-phx.sh 将数据库故障转移从 IAD 预检查为 PHX
    Failover script-phx db-failover-iad-phx.sh 从 IAD 到 PHX 的数据库故障转移
    Start drill script-phx db-prechk-startdrill-phx.sh PHX 中的预检查启动 DR 追溯
    Start drill script-phx db-startdrill-phx.sh 在 PHX 中启动 DR 钻取
    Stop drill script-phx db-prechk-stopdrill-phx.sh PHX 中的预检查站 DR 钻取
    Stop drill script-phx db-stopdrill-phx.sh 停止 PHX 中的 DR 钻取

    DR 计划脚本映射,其中在区域 2(菲尼克斯)中运行的数据库为主数据库,区域 2(阿什本)为备用数据库

    DR 计划类型 目标例程 脚本名 备注
    Switchover script-iad db-prechk-switchover-phx-iad.sh 预检查从 PHX 到 IAD 的数据库切换
    Switchover script-iad db-switchover-phx-iad.sh 数据库从 PHX 切换到 IAD
    Failover script-iad db-prechk-failover-phx-iad.sh 将数据库故障转移从 PHX 预检查为 IAD
    Failover script-iad db-failover-phx-iad.sh 从 PHX 到 IAD 的数据库故障转移
    Start drill script-iad db-prechk-startdrill-iad.sh IAD 中的预检查启动 DR 追溯
    Start drill script-iad db-startdrill-iad.sh 在 IAD 中启动 DR 钻取
    Stop drill script-iad db-prechk-stopdrill-iad.sh IAD 中的预检查站 DR 钻取
    Stop drill script-iad db-stopdrill-iad.sh 停止 IAD 中的 DR 钻取

注:为了提高清晰度和可用性,我们创建了针对特定 DR 计划类型和区域的多个散列包装脚本。这些脚本使用共享 Python 脚本进行数据库角色转换,您可以根据自己的要求和环境进行定制。

任务 1:验证 Oracle Data Guard 配置并更新标记

在此任务中,我们将使用 Oracle Base Database Service 验证 Oracle Data Guard 手动配置。我们将在数据库上创建 *tag** 以指示非标准 Oracle Data Guard 设置。这允许 OCI Full Stack DR 创建 DR 计划,而无需依赖任何内置计划组。

  1. 登录到 OCI 控制台并导航到 Oracle Database ,然后单击 Oracle Base Database Service

  2. 确保 OCI 区域上下文设置为 Region 1 (Ashburn)

  3. 选择 DB 系统,在我们的示例中为 adghol0-12345

    iad-db-system.png
    图 1.1:区域 1 中的数据库系统

  4. 导航到 Databases(数据库)选项卡,然后选择数据库 adghol

    iad-db-system-db.png
    图 1.2:区域 1 中的数据库

  5. 验证 Data Guard Status 是否为 Not enabled ,这将确认 Oracle Data Guard 未使用 OCI 控制台进行设置。

    iad-db-dataguard-cp-status.png
    图 1.3:区域 1 中的 Data Guard 控制层状态

  6. 导航到 Tags(标记)选项卡并创建自由形式标记。您必须根据您的设置替换 Peer DB OCID 的值。在此示例中,必须添加凤凰城区域的数据库 OCID。

    标记键
    FsdrNonStandardDataGuardPeerDatabaseId Peer DB OCID
    FsdrNonStandardDataGuardFlag True

    iad-db-dataguard- 标签
    图 1.4:区域 1 中的数据库标记

  7. 转到 DB Systems(数据库系统)并选择 Nodes(节点)

    iad-db-node.png
    图 1.5:区域 1 中的数据库节点

    注:这是 Non-RAC 设置,因此您将看到单个数据库节点。如果这是 Oracle Real Application Clusters 设置,您将看到两个节点。

  8. 连接到数据库节点并切换到 oracle 用户。使用 Oracle Data Guard 中介验证角色。

    dgmgrl
    show configuration
    

    iad-db-dataguard-status.png
    图 1.6:区域 1 中的 Data Guard 状态

    预期输出:

    • adghol_site0 应显示为主数据库
    • adghol_site1 应显示为物理备用数据库
    • Configuration Status 应显示成功

    如果存在错误并且数据库角色不符合预期,则必须使用 Oracle Data Guard 文档修复错误。

  9. 登录到 OCI 控制台并导航到 Oracle Database ,然后单击 Oracle Base Database Service

  10. 确保 OCI 区域上下文设置为 Region 2 (Phoenix)

  11. 选择 DB 系统,在我们的示例中为 adghol1-12345

    phx-db-system.png
    图 1.7:区域 2 中的数据库系统

  12. 导航到 Databases(数据库)选项卡,然后选择数据库 adghol

    phx-db-system-db.png
    图 1.8:区域 2 中的数据库

  13. 验证 Data Guard Status 是否为 Not enabled ,这将确认 Oracle Data Guard 未使用 OCI 控制台进行设置。

    phx-db-dataguard-cp-status.png
    图 1.9:区域 2 中的 Data Guard 控制层状态

  14. 导航到 Tags(标记)选项卡并创建自由形式标记。您必须根据您的设置替换 Peer DB OCID 的值。在此示例中,必须添加阿什本区域的数据库 OCID。

    标记键
    FsdrNonStandardDataGuardPeerDatabaseId Peer DB OCID
    FsdrNonStandardDataGuardFlag True

    phx-db-dataguard 标记
    图 1.10:区域 2 中的数据库标记

  15. 重复步骤 7 和 8,但这次连接到区域 2(备用区域)中的数据库节点。

    • 确保您以 oracle 用户身份在区域 2 数据库节点上登录。
    • 使用 dgmgrl 验证 Oracle Data Guard 角色,就像在步骤 8 中一样。

任务 2:创建和关联 DR 保护组

如果此应用程序堆栈的保护组尚不存在,请在区域 1 和区域 2 中创建 DR 保护组。

任务 2.1:在区域 1 中创建保护组

  1. 转到 OCI 控制台并导航到 DR 保护组,如图 2.1 所示。

    1. 确保将 OCI 区域上下文设置为区域 1 (Ashburn)。
    2. 单击 Migration & Disaster Recovery
    3. 单击 DR 保护组

    dg-iad-drpg.png
    图 2.1:导航到 DR 保护组

  2. 在区域 1 中创建一个基本 DR 保护组,如图 2.2 所示。将在后面的步骤中分配对等节点、角色和成员。

    1. 选择要在其中创建 DR 保护组的区间。
    2. 单击 Create DR protection group
    3. 为 DR 保护组使用有意义的名称。
    4. 为 OCI Full Stack DR 日志选择 OCI Object Storage 桶
    5. 单击创建

    dg-drpg-create-iad-finish.png
    图 2.2:在区域 1 中创建 DR 保护组所需的参数

任务 2.2:在区域 2 中创建保护组

  1. 转到 OCI 控制台,导航到 DR 保护组,如图 2.3 所示。

    1. 确保将 OCI 区域上下文设置为区域 2 (Phoenix)。
    2. 单击 Migration & Disaster Recovery
    3. 单击 DR 保护组

    dg-iad-drpg.png
    图 2.3:导航到 DR 保护组

  2. 在区域 2 中创建一个基本 DR 保护组,如图 2.4 所示。将在后面的步骤中分配对等节点、角色和成员。

    1. 选择要在其中创建 DR 保护组的区间。
    2. 单击 Create DR protection group
    3. 为 DRPG 使用有意义的名称。
    4. 为 OCI Full Stack DR 日志选择 OCI Object Storage 桶
    5. 单击创建

    dg-drpg-create-phx-finish.pn
    图 2.4:在区域 2 中创建 DR 保护组所需的参数

任务 2.3:关联区域 1 和区域 2 中的保护组

将每个区域中的 DRPG 关联为彼此的对等节点,并分配主数据库和备用数据库的对等角色。在任何 DR 操作/DR 计划执行过程中,OCI Full Stack DR 会自动更改主数据库和备用数据库的角色;您无需随时手动管理角色。

  1. 转到 DR 保护组详细信息页面。

    1. 确保 OCI 区域上下文设置为区域 1 (Ashburn)。
    2. 单击操作下拉菜单,然后单击关联以开始处理。

    drpg-assoc-begin-iad.png
    图 2.5:开始 DRPG 关联

  2. 输入以下信息。

    1. 角色:选择主要角色。OCI Full Stack DR 将自动将备用角色分配给区域 2。
    2. 对等区域:选择创建其他 DR 保护组的区域 2(凤凰城)。
    3. 对等灾难恢复保护组:选择已创建的对等灾难恢复保护组。
    4. 单击 Associate

    drpg-assoc-finish-iad.png
    图 2.6:关联 DRPG 所需的参数

关联完成后,OCI Full Stack DR 将显示如下图中所示。

drpg-assoc-completed-iad.png
图 2.7:从单个 DRPG 角度显示对等关系

每当上下文/视图从全局视角显示所有 DR 保护组时,都可以找到相同的信息,如下图中所示。

drpg-assoc-completed-dxb.png
图 2.8:从全球 DRPG 角度显示对等关系

任务 3:向 DR 保护组添加成员

在此任务中,我们将以下 OCI 资源添加到区域 1 中的主 DR 保护组。

  1. 托管数据库处理程序脚本的 OCI 计算实例将添加为非移动 VM。
  2. 主数据库系统将。

任务 3.1:将成员添加到区域 1 中的 DR 保护组

  1. 选择区域 1 中的 DR 保护组,如下图中所示。

    1. 确保 OCI 区域上下文为区域 1 (Ashburn)。
    2. 在区域 1 中选择 DR 保护组。
    3. 定位至成员标签。
    4. 单击 Manage members(管理成员)

    drpg-add-nav-iad.png
    图 3.1:如何开始向区域 1 中的 DR 保护组添加成员

  2. 为数据库处理程序脚本添加计算实例。

    1. 选择添加成员
    2. 选择 Compute(计算)下的 Instance(实例)作为成员资源类型
    3. 选择承载数据库处理程序脚本的计算实例
    4. 选择非移动实例
    5. 单击添加

    drpg-add-compute-iad.png
    图 3.2:计算实例添加到区域 1 中的 DRPG

    验证添加的计算实例。

    drpg-add-compute-iad-added.png
    图 3.2:添加到区域 1 中的 DRPG 中的计算实例

  3. 添加主数据库。单击 Add Member

    1. 选择添加成员
    2. 选择 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作为成员资源类型
    3. 选择 Oracle Base Database 作为数据库类型
    4. 选择 Database system(数据库系统)
    5. 选择 Database home(数据库主目录)
    6. 选择数据库
    7. 选择数据库密码密钥
    8. 请单击添加

    drpg-add-db-iad.png
    图 3.3:添加主数据库所需的参数

    验证添加的主数据库并发布这两个成员。

    drpg-add-db-iad-complete.png
    图 3.4:已将主数据库添加到区域 1 中的 DRPG

    drpg-add-db-iad-complete1.png
    图 3.5:将成员发布到区域 1 中的 DRPG

    几分钟后,两个成员都可以在成员下使用。

    drpg-add-db-iad-published.png
    图 3.6:成员已添加到区域 1 中的 DRPG

任务 3.2:将成员添加到区域 2 中的 DR 保护组

  1. 选择区域 2 中的 DR 保护组,如下图中所示。

    1. 确保 OCI 区域上下文为区域 2 (Phoenix)。
    2. 在区域 2 中选择 DR 保护组。
    3. 定位至成员标签。
    4. 单击 Manage members(管理成员)

    drpg-add-nav-phx.png
    图 3.7:如何开始向区域 2 中的 DR 保护组添加成员

  2. 为数据库处理程序脚本添加计算实例。

    1. 选择添加成员
    2. 选择 Compute(计算)下的 Instance(实例)作为成员资源类型
    3. 选择承载数据库处理程序脚本的计算实例
    4. 选择非移动实例
    5. 单击添加

    drpg-add-compute-phx.png
    图 3.8:计算实例添加到区域 2 中的 DRPG

    验证添加的计算实例。

    drpg-add-compute-phx-added.png
    图 3.9:计算实例已添加到区域 2 中的 DRPG 中

  3. 添加备用数据库。单击 Add Member

    1. 选择添加成员
    2. 选择 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作为成员资源类型
    3. 选择 Oracle Base Database 作为数据库类型
    4. 选择 Database system(数据库系统)
    5. 选择 Database home(数据库主目录)
    6. 选择数据库
    7. 选择数据库密码密钥
    8. 请单击添加

    drpg-add-db-phx.png
    图 3.10:添加备用数据库所需的参数

    验证添加的备用数据库并发布这两个成员。

    drpg-add-db-phx-complete.png
    图 3.11:已将备用数据库添加到区域 2 中的 DRPG

    drpg-add-db-phx-complete1.png
    图 3.12:将成员发布到区域 2 中的 DRPG

    几分钟后,两个成员都可以在成员下使用。

    drpg-add-db-phx-published.png
    图 3.13:成员已添加到区域 2 中的 DRPG

任务 4:创建和自定义区域 2 中的 DR 计划

在此任务中,我们将创建与区域 2 (Phoenix) 中的备用 DR 保护组关联的初始 SwitchoverFailoverStart Drill 计划。

这些计划旨在将工作量从主要区域(区域 1)无缝转换为备用区域(区域 2)。

始终在具有备用角色的保护组中创建 DR 计划。

由于区域 2 (Phoenix) 当前是备用,因此我们将在那里创建所有初始 DR 计划。

任务 4.1:创建 DR 计划

  1. 通过在区域 2 中选择 DRPG 创建 DR 计划(菲尼克斯)

    1. 确保 OCI 区域上下文为区域 2 (Phoenix)。
    2. 在区域 2 中选择备用 DRPG。
    3. 导航到价格计划选项卡。
    4. 单击创建计划

    plan-create-nav-phx.png
    图 4.1:如何在区域 2 中开始创建基本 DR 计划

  2. 创建切换计划。

    1. 为切换计划输入一个简单但有意义的名称。这个名字应该尽可能短,但很容易理解,以帮助减少危机期间的混乱和人为错误。
    2. 选择计划类型作为切换(已计划)

    plan-create-so-phx-png
    图 4.2:创建 DR 切换计划所需的参数

  3. 创建故障转移计划。

    按照相同的过程创建基本故障转移计划,如下图中所示。

    1. 输入故障转移计划的名称,该名称简单但有意义。
    2. 选择计划类型作为故障转移(未计划)

    plan-create-fo-phx.png
    图 4.3:创建 DR 故障转移计划所需的参数

  4. 创建开始钻取计划。

    按照相同的过程创建基本故障转移计划,如下图中所示。

    1. 输入启动钻取计划的名称,该名称简单但有意义。
    2. 选择计划类型作为故障转移(未计划)

    plan-create-startdrill-phx.png
    图 4.4:创建 DR 启动钻取计划所需的参数

    区域 2 中的备用 DR 保护组现在应具有三个 DR 计划,如下图中所示。这些将处理从区域 1 到区域 2 的转换工作量。您将在区域 1 创建类似的计划,以便在以后的任务中将工作量从区域 2 转换回区域 1。

    plan-create-phx-completed.png
    图 4.5:显示区域 2 中必须存在的三个 DR 计划,然后再继续

注: OCI Full Stack DR 允许您在成功执行启动钻取计划并且 DR 保护组处于无效(正在钻取)状态之后创建停止钻取计划。

任务 4.2:使用用户定义的计划组定制 DR 计划

在任务 4.1 中创建的 DR 计划不会为 Oracle 数据库角色转换生成任何内置计划组,因为 Oracle Data Guard 设置是手动完成的。

在本任务,您将:

这可确保 DR 计划可以完全处理涉及手动配置的 Data Guard 环境的故障转移、切换和钻取方案。

  1. 定位至在任务 4.1 中创建的切换计划,然后选择计划组

    plan-custom-so-phx-nav.png
    图 4.6:如何在区域 2 中开始自定义切换计划

  2. 首先添加定制的用户定义的 DR 计划组,以根据 Oracle 数据库角色更改的特定需求定制 DR 工作流。此计划组将从区域 1 中的 jumphost script-iad 调用必要的脚本。

  3. 将用户定义的计划组添加到 DB Switchover

    1. 单击 Add group
    2. 输入一个简单但描述性的计划组名称。在此示例中,我们将使用 DB Switchover
    3. 单击添加步骤以打开对话框,我们将在其中指定用于执行数据库角色更改的脚本。

      plan-custom-so-phx-grp-db-role-change.png
      图 4.7:用于创建计划组以执行数据库角色更改的参数

      添加计划组步骤中,输入以下信息。

    4. 输入简单但描述性的 Step name 。在本示例中,我们将使用 DB Switchover from IAD to PHX
    5. 选择实例区域,该区域包含将在其上运行此步骤的实例。在此示例中,脚本将在区域 2 中的 jumphost 上执行,因此选择 Phoenix
    6. 选择运行本地脚本
    7. 选择 Target instance(目标实例),这是区域 2 中的 jumphost script-phx
    8. 脚本参数中,输入包含参数的脚本的完整路径。例如:/home/opc/db-switchover-iad-phx.sh
    9. 以用户身份运行中,输入 opc
    10. 单击添加步骤

      plan-custom-so-phx-grp-db-role-change-step.png
      图 4.8:用于为数据库角色更改添加步骤的参数

    11. 验证添加的步骤。

      plan-custom-so-phx-grp-db-role-change-step-added.png
      图 4.9:为数据库角色更改添加

    12. 单击添加

      plan-custom-so-phx-grp-db-role-change-add
      图 4.10:添加数据库角色更改组

      计划组将立即可用。

      plan-custom-so-phx-grp1.png
      图 4.11:数据库切换计划组

  4. 将用户定义的预检查步骤添加到切换 DR 计划。用户定义的预检查将与内置的预检查步骤一起执行。

    1. 转到 Plan Groups ,单击 Prechecks-Built 前面的 ,然后选择 Add user defined preheck

      plan-custom-so-phx-grp-db-role-precheck-change.png
      图 4.12:为数据库切换添加定制预检查

    2. 输入简单但描述性的 Step name 。在本示例中,我们将使用 DB Switchover precheck from IAD to PHX
    3. 选择实例区域,该区域包含将在其上运行此步骤的实例。在此示例中,脚本将在区域 2 中的 jumphost 上执行,因此选择 Phoenix
    4. 选择运行本地脚本
    5. 选择 Target instance(目标实例),即区域中的 jumphost script-phx
    6. 脚本参数中,输入包含参数的脚本的完整路径。例如:/home/opc/db-prechk-switchover-iad-phx.sh
    7. 以用户身份运行中,输入 opc
    8. 单击添加步骤

      plan-custom-so-phx-grp-db-precheck-role-change-step.png
      图 4.13:用于为数据库角色更改添加自定义预检查步骤的参数

    9. 验证添加的步骤。

      plan-custom-so-phx-grp-db-role-precheck-change-step-added.png
      图 4.14:为数据库角色更改添加了定制预检查步骤

      已成功完成切换计划的自定义。

      plan-custom-so-phx-complete.png
      图 4.15:最终切换计划

  5. 类似地,使用先决条件中提供的表格详细信息定制故障转移启动钻取计划,使用正确的目标实例脚本数据库处理程序脚本使用和定制

  6. 添加用户定义的计划组和自定义预检查步骤后,故障转移开始追溯计划将如下所示。

    plan-custom-fo-phx-complete.png
    图 4.16:最终故障转移计划

    plan-custom-startdrill-phx-complete.png
    图 4.17:最终开始钻取计划

任务 5:为区域 2 中的 DR 计划运行预检查

通过切换和故障转移,已成功在备用区域 2 中创建启动钻取 DR 计划。这些计划支持 OCI Full Stack DR 将工作负载从区域 1 迁移到区域 2 或执行 DR 钻取。后续任务涉及运行 DR 计划的预检查,以确保准备就绪并验证转换过程。

任务 5.1:开始切换计划的预检查

为切换 DR 计划运行预检查。

  1. 确保将区域上下文设置为备用区域 2。
  2. 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
  3. 单击操作下拉菜单。
  4. 单击运行预检查
  5. Select the DB Switchover from IAD to PHX plan.
  6. 输入计划执行名称(如果不是),它将自动生成。
  7. 单击运行预检查

    预检查 -so-phx-begin.png
    图 5.1:显示如何运行切换计划的预检查

  8. Plan executions 选项卡中验证 Succeeded 状态。

    预检查 -so-phx-complete.png
    图 5.2:显示切换计划的已完成预检查

任务 5.2:开始故障转移计划的预检查

运行故障转移 DR 计划的预检查。

  1. 确保将区域上下文设置为备用区域 2。
  2. 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
  3. 单击操作下拉菜单。
  4. 单击运行预检查
  5. 选择 DB Failover from IAD to PHX 计划。
  6. 输入计划执行名称(如果不是),它将自动生成。
  7. 单击运行预检查

    预检查 -fo-phx-begin.png
    图 5.3:显示如何运行故障转移计划的预检查

  8. Plan executions 选项卡中验证 Succeeded 状态。

    预检查 -fo-phx-complete.png
    图 5.4:显示故障转移计划的已完成预检查

任务 5.3:开始追溯计划的预检查

运行启动钻取 DR 计划的预检查。

  1. 确保将区域上下文设置为备用区域 2。
  2. 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
  3. 单击操作下拉菜单。
  4. 单击运行预检查
  5. 选择在 PHX 中启动钻取计划。
  6. 输入计划执行名称(如果不是),它将自动生成。
  7. 单击运行预检查

    预检查 -stadr-phx-begin.png
    图 5.5:显示如何运行开始钻取计划的预检查

  8. Plan executions 选项卡中验证 Succeeded 状态。

    预检查 -stardr-phx-complete.png
    图 5.6:显示故障转移计划的已完成预检查

任务 6:在区域 2 中运行切换计划

运行切换 DR 计划以启动从区域 1(主要)到区域 2(备用)的 Oracle 数据库角色转换。

  1. 确保将区域上下文设置为备用区域 2。
  2. 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
  3. 单击操作下拉菜单。
  4. 单击执行计划

    execute-so-phx-begin.png
    图 6.1:显示如何运行切换计划

  5. Select the DB Switchover from IAD to PHX plan.
  6. 此任务在区域 2 中运行切换计划。
  7. 取消选择 Enable prehecks(启用预检查),因为预检查已在任务 5 中执行。如果要再次运行,可以启用它。
  8. 输入计划执行名称(如果不是),它将自动生成。
  9. 单击执行计划

    exec-so-phx-begin.png
    图 6.2:显示如何执行切换计划

  10. 导航到计划执行选项卡,然后选择切换计划执行。

    exec-so-phx-in-progress.png
    图 6.3:显示正在进行的切换计划

  11. 监视切换计划,直到完整的工作量从区域 1 完全转换到区域 2。切换计划的执行在大约 8 分钟内成功完成。

    exec-so-phx-complete.png
    图 6.4:显示已完成的切换计划执行。

  12. 您可以使用任务 1.8 中提供的详细信息验证数据库角色状态。

    iad-db-dataguard-status-afterso.png
    图 6.5:切换后的 Data Guard 状态

    预期输出:

    • adghol_site1 应显示为主数据库
    • adghol_site0 应显示为物理备用数据库
    • Configuration Status 应显示成功
  13. DR 保护组中的角色将被交换,区域 2 将显示为,区域 1 将显示为备用

    drpg-roles-after-so-phx
    图 6.6:切换后 DR 保护角色发生更改

任务 7:创建和自定义区域 1 中的 DR 计划

随着从区域 1 切换到区域 2 的 DR 计划成功执行,区域 2 现在承担了主数据库角色,而区域 1 已转换为备用数据库角色。

按照任务 4 中详细介绍的方法,在区域 1 的 DR 保护组中创建和自定义切换、故障转移和 DR 钻取计划,该组现在用作备用对等区域。

使用用户定义的计划组定制预检查步骤创建和更新这些计划后,它们将如下所示。

plan-create-iad.png
图 7.1:在区域 1 中创建了借项计划

plan-so-customize-iad.png
图 7.2:区域 1 中的切换计划

plan-fo-customize-iad.png
图 7.3:区域 1 中的故障转移计划

plan-sd-customize-iad.png
图 7.4:在区域 1 中启动钻取计划

如果需要,您可以运行切换计划以将区域 1 中的数据库提升回主要角色,而区域 2 中的数据库则成为备用

同样,您可以运行启动钻取计划以模拟灾难恢复事件,然后创建并执行停止钻取计划以将系统恢复到其原始状态。

后续步骤

有关详细信息,请参阅 Related Links 部分中的 OCI Full Stack DR、Oracle Base Database Service 和 Oracle Data Guard 文档。

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心