使用 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
- 专用基础结构上的 Oracle Exadata Database Service
- Oracle Exadata Database Service on Exascale Infrastructure
- Cloud@Customer 上的 Oracle Exadata Database Service
体系结构描述
在本教程中,我们将 Oracle Base Database Service 与两个跨 OCI 区域部署的数据库系统结合使用,其中 Oracle Data Guard 已手动配置。
图 A:使用 Oracle Base Database Service 的 Custom Data Guard 配置
整个教程的定义和假设
-
区域:
-
第 1 区域(阿什本):阿什本最初将作为主要区域。
-
第 2 区域(凤凰城):凤凰城最初将作为备用区域运行。
-
-
区间:您可以将此部署和 OCI Full Stack DR 组织到符合 IT 监管标准的区间方案中。我们已选择将本教程的所有 OCI 资源组织在一个区间中。
目标
本教程将介绍以下任务:
- 任务 1:验证 Oracle Data Guard 配置并更新标记。
- 任务 2:创建并关联 DR 保护组。
- 任务 3:将成员添加到 DR 保护组。
- 任务 4:在区域 2 中创建和自定义 DR 计划。
- 任务 5:在区域 2 中运行 DR 计划的预检查。
- 任务 6:在区域 2 中运行切换计划。
- 任务 7:在区域 2 中创建和自定义 DR 计划。
Prerequisites
我们将使用以下资源从教程开始。
| 资源 | 区域 1 - 阿什本 | 区域 2 - 菲尼克斯 |
|---|---|---|
| 区间 | app | app |
| 数据库系统 | adghol-12345 | adghol-12345 |
| 数据库名称 | ghol | ghol |
| 数据库的唯一名称 | adghol-site0 | adghol-site1 |
| DB 角色 | 主要 | 备用 |
| 计算 VM | 脚本 iad | 脚本 - 双工 |
| 存储桶 | IAD | PHX |
注:请先完成所有必需的先决条件,然后再继续。这些步骤为顺利、成功的 OCI Full Stack DR 设置奠定了基础。
-
管理访问或必需的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略。
确保您具有管理员权限或配置必要的 OCI IAM 策略和动态组,以使用 OCI Full Stack DR。在此解决方案中,数据库处理程序脚本在内部启动 OCI 容器实例,因此您必须相应地添加策略。
注:将出现的所有
<compartment_ocid>和<compartment_name>替换为实际的 OCI 区间 OCID 和名称。-
创建动态组:使用示例名称 (
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>'} -
创建 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 Docs 和 Configuring IAM Policies (Oracle Blog) 。
-
-
在这两个区域中预配 OCI 计算实例:在每个区域中创建 OCI 计算实例,以充当 Jumphost 来托管和执行 scripts.For 详细步骤,请参阅创建 OCI 实例。为了简单起见,我们将此 OCI 计算实例称为 tutorial.If 中的 Jumphost ,您已经拥有可以用作 Jumphost 的现有 OCI 计算实例,您可以跳过此步骤。请确保 Jumphost 具有正在运行的 Oracle Cloud Agent 并启用了运行命令插件。有关更多详细信息,请参阅 Oracle Cloud Agent 。
-
在 OCI 计算实例上运行命令的访问权限:请确保在 jumphost 中设置运行命令先决条件,因为我们在 DR 操作期间使用用户定义的计划组来运行脚本。有关更多信息,请参见 Running Commands on an Instance 。
-
在两个区域的 jumphost 中安装 OCI CLI:根据 jumphost 的操作系统,在这两个区域中安装 OCI CLI,并确保您可以在脚本中使用实例主用户来调用 OCI CLI 命令。有关更多信息,请参见 OCI CLI Installation 。
-
使用远程 VCN 对等连接在两个区域中设置 VCN:在主区域和备用区域中创建 VCN,并设置远程 VCN 对等连接。这是设置跨区域 Oracle Data Guard 所必需的。有关详细信息,请参阅 OCI 基本数据库网络配置。
-
手动 Oracle Data Guard 配置:根据 Oracle Data Guard 中介的要求手动配置 Oracle Data Guard 设置。有关详细信息,请参阅 Oracle Data Guard Broker and Oracle Clusterware 。
-
在 Jumphost 中下载数据库处理程序脚本:应下载这些脚本并将其保存在两个区域的 jumphost 中。
-
从以下资料档案库下载 Oracle Data Guard 数据库处理程序脚本: Data Guard DB 处理程序脚本。
-
将脚本复制到两个区域中 jumphost 上的
/home/opc/目录(或任何其他首选路径)。 -
确保脚本文件具有可执行权限。
-
full_stack_dr_non_std_db_handler.py是 Python 脚本,负责处理 Oracle Data Guard 角色 transitions.The 关联的 bash 脚本作为模板提供,可以根据您的特定要求进行修改。不要修改 Python 角色更改脚本本身。
-
-
创建 OCI Vault 和密钥:您必须创建 OCI Vault 并将数据库身份证明作为密钥存储在两个区域中。
- 使用 OCI 控制台或 CLI 在每个区域中创建 OCI Vault。
- 在 Vault 中创建密钥以存储数据库的
SYS用户密码。
有关更多信息,请参见 OCI Vaults 。
-
Jumphost 中的连接检查:确保可从计算实例访问 OCI 数据库服务、OCI Vault 服务和 OCI 容器实例服务。这是必需的,因为 OCI Full Stack DR 脚本执行自测以从主要和备用区域提取数据库详细信息。
-
连接必须从巨头开始工作。从 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/子网的安全列表、路由表和服务网关配置。
-
-
创建对象存储存储桶:在主区域和备用区域中创建 OCI 对象存储存储桶,以存储 OCI Full Stack DR 在恢复操作期间生成的日志,如下所述:为操作日志准备日志位置。
-
Database Handler Script Usage and Customization(数据库处理程序脚本使用和定制):您可以从上述 GitHub 库下载数据库处理程序脚本。下面是数据库处理程序脚本使用情况和所需参数。
图 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.shDR 计划脚本映射,其中在区域 1 (Ashburn) 中运行的数据库为主数据库,区域 2 (Phoenix) 为备用数据库
DR 计划类型 目标例程 脚本名 备注 Switchoverscript-phxdb-prechk-switchover-iad-phx.sh预检查从 IAD 切换到 PHX 的数据库 Switchoverscript-phxdb-switchover-iad-phx.sh数据库从 IAD 切换到 PHX Failoverscript-phxdb-prechk-failover-iad-phx.sh将数据库故障转移从 IAD 预检查为 PHX Failoverscript-phxdb-failover-iad-phx.sh从 IAD 到 PHX 的数据库故障转移 Start drillscript-phxdb-prechk-startdrill-phx.shPHX 中的预检查启动 DR 追溯 Start drillscript-phxdb-startdrill-phx.sh在 PHX 中启动 DR 钻取 Stop drillscript-phxdb-prechk-stopdrill-phx.shPHX 中的预检查站 DR 钻取 Stop drillscript-phxdb-stopdrill-phx.sh停止 PHX 中的 DR 钻取 DR 计划脚本映射,其中在区域 2(菲尼克斯)中运行的数据库为主数据库,区域 2(阿什本)为备用数据库
DR 计划类型 目标例程 脚本名 备注 Switchoverscript-iaddb-prechk-switchover-phx-iad.sh预检查从 PHX 到 IAD 的数据库切换 Switchoverscript-iaddb-switchover-phx-iad.sh数据库从 PHX 切换到 IAD Failoverscript-iaddb-prechk-failover-phx-iad.sh将数据库故障转移从 PHX 预检查为 IAD Failoverscript-iaddb-failover-phx-iad.sh从 PHX 到 IAD 的数据库故障转移 Start drillscript-iaddb-prechk-startdrill-iad.shIAD 中的预检查启动 DR 追溯 Start drillscript-iaddb-startdrill-iad.sh在 IAD 中启动 DR 钻取 Stop drillscript-iaddb-prechk-stopdrill-iad.shIAD 中的预检查站 DR 钻取 Stop drillscript-iaddb-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 计划,而无需依赖任何内置计划组。
-
登录到 OCI 控制台并导航到 Oracle Database ,然后单击 Oracle Base Database Service 。
-
确保 OCI 区域上下文设置为 Region 1 (Ashburn) 。
-
选择 DB 系统,在我们的示例中为
adghol0-12345。
图 1.1:区域 1 中的数据库系统 -
导航到 Databases(数据库)选项卡,然后选择数据库
adghol。
图 1.2:区域 1 中的数据库 -
验证 Data Guard Status 是否为 Not enabled ,这将确认 Oracle Data Guard 未使用 OCI 控制台进行设置。
图 1.3:区域 1 中的 Data Guard 控制层状态 -
导航到 Tags(标记)选项卡并创建自由形式标记。您必须根据您的设置替换
Peer DB OCID的值。在此示例中,必须添加凤凰城区域的数据库 OCID。标记键 值 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
图 1.4:区域 1 中的数据库标记 -
转到 DB Systems(数据库系统)并选择 Nodes(节点)。
图 1.5:区域 1 中的数据库节点注:这是 Non-RAC 设置,因此您将看到单个数据库节点。如果这是 Oracle Real Application Clusters 设置,您将看到两个节点。
-
连接到数据库节点并切换到
oracle用户。使用 Oracle Data Guard 中介验证角色。dgmgrl show configuration
图 1.6:区域 1 中的 Data Guard 状态预期输出:
adghol_site0应显示为主数据库。adghol_site1应显示为物理备用数据库。Configuration Status应显示成功。
如果存在错误并且数据库角色不符合预期,则必须使用 Oracle Data Guard 文档修复错误。
-
登录到 OCI 控制台并导航到 Oracle Database ,然后单击 Oracle Base Database Service 。
-
确保 OCI 区域上下文设置为 Region 2 (Phoenix) 。
-
选择 DB 系统,在我们的示例中为
adghol1-12345
图 1.7:区域 2 中的数据库系统 -
导航到 Databases(数据库)选项卡,然后选择数据库
adghol。
图 1.8:区域 2 中的数据库 -
验证 Data Guard Status 是否为 Not enabled ,这将确认 Oracle Data Guard 未使用 OCI 控制台进行设置。
图 1.9:区域 2 中的 Data Guard 控制层状态 -
导航到 Tags(标记)选项卡并创建自由形式标记。您必须根据您的设置替换
Peer DB OCID的值。在此示例中,必须添加阿什本区域的数据库 OCID。标记键 值 FsdrNonStandardDataGuardPeerDatabaseIdPeer DB OCIDFsdrNonStandardDataGuardFlagTrue
图 1.10:区域 2 中的数据库标记 -
重复步骤 7 和 8,但这次连接到区域 2(备用区域)中的数据库节点。
- 确保您以
oracle用户身份在区域 2 数据库节点上登录。 - 使用
dgmgrl验证 Oracle Data Guard 角色,就像在步骤 8 中一样。
- 确保您以
任务 2:创建和关联 DR 保护组
如果此应用程序堆栈的保护组尚不存在,请在区域 1 和区域 2 中创建 DR 保护组。
任务 2.1:在区域 1 中创建保护组
-
转到 OCI 控制台并导航到 DR 保护组,如图 2.1 所示。
- 确保将 OCI 区域上下文设置为区域 1 (Ashburn)。
- 单击 Migration & Disaster Recovery 。
- 单击 DR 保护组。
图 2.1:导航到 DR 保护组 -
在区域 1 中创建一个基本 DR 保护组,如图 2.2 所示。将在后面的步骤中分配对等节点、角色和成员。
- 选择要在其中创建 DR 保护组的区间。
- 单击 Create DR protection group 。
- 为 DR 保护组使用有意义的名称。
- 为 OCI Full Stack DR 日志选择 OCI Object Storage 桶。
- 单击创建。
图 2.2:在区域 1 中创建 DR 保护组所需的参数
任务 2.2:在区域 2 中创建保护组
-
转到 OCI 控制台,导航到 DR 保护组,如图 2.3 所示。
- 确保将 OCI 区域上下文设置为区域 2 (Phoenix)。
- 单击 Migration & Disaster Recovery 。
- 单击 DR 保护组。
图 2.3:导航到 DR 保护组 -
在区域 2 中创建一个基本 DR 保护组,如图 2.4 所示。将在后面的步骤中分配对等节点、角色和成员。
- 选择要在其中创建 DR 保护组的区间。
- 单击 Create DR protection group 。
- 为 DRPG 使用有意义的名称。
- 为 OCI Full Stack DR 日志选择 OCI Object Storage 桶。
- 单击创建。
图 2.4:在区域 2 中创建 DR 保护组所需的参数
任务 2.3:关联区域 1 和区域 2 中的保护组
将每个区域中的 DRPG 关联为彼此的对等节点,并分配主数据库和备用数据库的对等角色。在任何 DR 操作/DR 计划执行过程中,OCI Full Stack DR 会自动更改主数据库和备用数据库的角色;您无需随时手动管理角色。
-
转到 DR 保护组详细信息页面。
- 确保 OCI 区域上下文设置为区域 1 (Ashburn)。
- 单击操作下拉菜单,然后单击关联以开始处理。
图 2.5:开始 DRPG 关联 -
输入以下信息。
- 角色:选择主要角色。OCI Full Stack DR 将自动将备用角色分配给区域 2。
- 对等区域:选择创建其他 DR 保护组的区域 2(凤凰城)。
- 对等灾难恢复保护组:选择已创建的对等灾难恢复保护组。
- 单击 Associate 。
图 2.6:关联 DRPG 所需的参数
关联完成后,OCI Full Stack DR 将显示如下图中所示。
- 当前的主要对等数据库 DRPG 是阿什本(区域 1)。
- 当前的备用对等数据库 DRPG 是凤凰城(区域 2)。
图 2.7:从单个 DRPG 角度显示对等关系
每当上下文/视图从全局视角显示所有 DR 保护组时,都可以找到相同的信息,如下图中所示。
- 当前的主要对等数据库 DRPG 是阿什本(区域 1)。
- 当前的备用对等数据库 DRPG 是凤凰城(区域 2)。
图 2.8:从全球 DRPG 角度显示对等关系
任务 3:向 DR 保护组添加成员
在此任务中,我们将以下 OCI 资源添加到区域 1 中的主 DR 保护组。
- 托管数据库处理程序脚本的 OCI 计算实例将添加为非移动 VM。
- 主数据库系统将。
任务 3.1:将成员添加到区域 1 中的 DR 保护组
-
选择区域 1 中的 DR 保护组,如下图中所示。
- 确保 OCI 区域上下文为区域 1 (Ashburn)。
- 在区域 1 中选择 DR 保护组。
- 定位至成员标签。
- 单击 Manage members(管理成员)。
图 3.1:如何开始向区域 1 中的 DR 保护组添加成员 -
为数据库处理程序脚本添加计算实例。
- 选择添加成员
- 选择 Compute(计算)下的 Instance(实例)作为成员资源类型。
- 选择承载数据库处理程序脚本的计算实例。
- 选择非移动实例。
- 单击添加。
图 3.2:计算实例添加到区域 1 中的 DRPG验证添加的计算实例。
图 3.2:添加到区域 1 中的 DRPG 中的计算实例 -
添加主数据库。单击 Add Member
- 选择添加成员
- 选择 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作为成员资源类型。
- 选择 Oracle Base Database 作为数据库类型。
- 选择 Database system(数据库系统)。
- 选择 Database home(数据库主目录)。
- 选择数据库。
- 选择数据库密码密钥
- 请单击添加
图 3.3:添加主数据库所需的参数验证添加的主数据库并发布这两个成员。
图 3.4:已将主数据库添加到区域 1 中的 DRPG
图 3.5:将成员发布到区域 1 中的 DRPG几分钟后,两个成员都可以在成员下使用。
图 3.6:成员已添加到区域 1 中的 DRPG
任务 3.2:将成员添加到区域 2 中的 DR 保护组
-
选择区域 2 中的 DR 保护组,如下图中所示。
- 确保 OCI 区域上下文为区域 2 (Phoenix)。
- 在区域 2 中选择 DR 保护组。
- 定位至成员标签。
- 单击 Manage members(管理成员)。
图 3.7:如何开始向区域 2 中的 DR 保护组添加成员 -
为数据库处理程序脚本添加计算实例。
- 选择添加成员
- 选择 Compute(计算)下的 Instance(实例)作为成员资源类型。
- 选择承载数据库处理程序脚本的计算实例。
- 选择非移动实例。
- 单击添加。
图 3.8:计算实例添加到区域 2 中的 DRPG验证添加的计算实例。
图 3.9:计算实例已添加到区域 2 中的 DRPG 中 -
添加备用数据库。单击 Add Member
- 选择添加成员
- 选择 Oracle Database -> Database (Base DB,ExaDB-D,ExaCC,ExaXS) 作为成员资源类型。
- 选择 Oracle Base Database 作为数据库类型。
- 选择 Database system(数据库系统)。
- 选择 Database home(数据库主目录)。
- 选择数据库。
- 选择数据库密码密钥
- 请单击添加
图 3.10:添加备用数据库所需的参数验证添加的备用数据库并发布这两个成员。
图 3.11:已将备用数据库添加到区域 2 中的 DRPG
图 3.12:将成员发布到区域 2 中的 DRPG几分钟后,两个成员都可以在成员下使用。
图 3.13:成员已添加到区域 2 中的 DRPG
任务 4:创建和自定义区域 2 中的 DR 计划
在此任务中,我们将创建与区域 2 (Phoenix) 中的备用 DR 保护组关联的初始 Switchover 、 Failover 和 Start Drill 计划。
这些计划旨在将工作量从主要区域(区域 1)无缝转换为备用区域(区域 2)。
- OCI Full Stack DR 根据之前添加的成员资源,使用内置步骤预填充这些计划。
- 但是,在本教程中,由于 Oracle Data Guard 是手动配置的(在数据库控制层外部),因此没有内置规划组可用于 Oracle 数据库角色转换。
- 因此,我们将:
- 使用用户定义的规划组定制 DR 计划。
- 添加用于在每种规划类型(切换、故障转移、钻取)期间处理角色转换的数据库处理程序脚本。
始终在具有备用角色的保护组中创建 DR 计划。
由于区域 2 (Phoenix) 当前是备用,因此我们将在那里创建所有初始 DR 计划。
任务 4.1:创建 DR 计划
-
通过在区域 2 中选择 DRPG 创建 DR 计划(菲尼克斯)
- 确保 OCI 区域上下文为区域 2 (Phoenix)。
- 在区域 2 中选择备用 DRPG。
- 导航到价格计划选项卡。
- 单击创建计划。
图 4.1:如何在区域 2 中开始创建基本 DR 计划 -
创建切换计划。
- 为切换计划输入一个简单但有意义的名称。这个名字应该尽可能短,但很容易理解,以帮助减少危机期间的混乱和人为错误。
- 选择计划类型作为切换(已计划)。
图 4.2:创建 DR 切换计划所需的参数 -
创建故障转移计划。
按照相同的过程创建基本故障转移计划,如下图中所示。
- 输入故障转移计划的名称,该名称简单但有意义。
- 选择计划类型作为故障转移(未计划)。
图 4.3:创建 DR 故障转移计划所需的参数 -
创建开始钻取计划。
按照相同的过程创建基本故障转移计划,如下图中所示。
- 输入启动钻取计划的名称,该名称简单但有意义。
- 选择计划类型作为故障转移(未计划)。
图 4.4:创建 DR 启动钻取计划所需的参数区域 2 中的备用 DR 保护组现在应具有三个 DR 计划,如下图中所示。这些将处理从区域 1 到区域 2 的转换工作量。您将在区域 1 创建类似的计划,以便在以后的任务中将工作量从区域 2 转换回区域 1。
图 4.5:显示区域 2 中必须存在的三个 DR 计划,然后再继续
注: OCI Full Stack DR 允许您在成功执行启动钻取计划并且 DR 保护组处于无效(正在钻取)状态之后创建停止钻取计划。
任务 4.2:使用用户定义的计划组定制 DR 计划
在任务 4.1 中创建的 DR 计划不会为 Oracle 数据库角色转换生成任何内置计划组,因为 Oracle Data Guard 设置是手动完成的。
在本任务,您将:
- 了解如何添加自定义、用户定义的 DR 计划组。
- 定义管理 Oracle Data Guard 角色转换所需的步骤。
这可确保 DR 计划可以完全处理涉及手动配置的 Data Guard 环境的故障转移、切换和钻取方案。
-
定位至在任务 4.1 中创建的切换计划,然后选择计划组。
图 4.6:如何在区域 2 中开始自定义切换计划 -
首先添加定制的用户定义的 DR 计划组,以根据 Oracle 数据库角色更改的特定需求定制 DR 工作流。此计划组将从区域 1 中的 jumphost
script-iad调用必要的脚本。 -
将用户定义的计划组添加到 DB Switchover 。
- 单击 Add group 。
- 输入一个简单但描述性的计划组名称。在此示例中,我们将使用
DB Switchover。 -
单击添加步骤以打开对话框,我们将在其中指定用于执行数据库角色更改的脚本。
图 4.7:用于创建计划组以执行数据库角色更改的参数在添加计划组步骤中,输入以下信息。
- 输入简单但描述性的 Step name 。在本示例中,我们将使用
DB Switchover from IAD to PHX。 - 选择实例区域,该区域包含将在其上运行此步骤的实例。在此示例中,脚本将在区域 2 中的 jumphost 上执行,因此选择
Phoenix。 - 选择运行本地脚本。
- 选择 Target instance(目标实例),这是区域 2 中的 jumphost
script-phx。 - 在脚本参数中,输入包含参数的脚本的完整路径。例如:
/home/opc/db-switchover-iad-phx.sh。 - 在以用户身份运行中,输入
opc。 -
单击添加步骤。
图 4.8:用于为数据库角色更改添加步骤的参数 -
验证添加的步骤。
图 4.9:为数据库角色更改添加 -
单击添加。
图 4.10:添加数据库角色更改组计划组将立即可用。
图 4.11:数据库切换计划组
-
将用户定义的预检查步骤添加到切换 DR 计划。用户定义的预检查将与内置的预检查步骤一起执行。
-
转到 Plan Groups ,单击 Prechecks-Built 前面的 …,然后选择 Add user defined preheck 。
图 4.12:为数据库切换添加定制预检查 - 输入简单但描述性的 Step name 。在本示例中,我们将使用
DB Switchover precheck from IAD to PHX。 - 选择实例区域,该区域包含将在其上运行此步骤的实例。在此示例中,脚本将在区域 2 中的 jumphost 上执行,因此选择
Phoenix。 - 选择运行本地脚本。
- 选择 Target instance(目标实例),即区域中的 jumphost
script-phx。 - 在脚本参数中,输入包含参数的脚本的完整路径。例如:
/home/opc/db-prechk-switchover-iad-phx.sh。 - 在以用户身份运行中,输入
opc。 -
单击添加步骤。
图 4.13:用于为数据库角色更改添加自定义预检查步骤的参数 -
验证添加的步骤。
图 4.14:为数据库角色更改添加了定制预检查步骤已成功完成切换计划的自定义。
图 4.15:最终切换计划
-
-
类似地,使用先决条件中提供的表格详细信息定制故障转移和启动钻取计划,使用正确的目标实例和脚本:数据库处理程序脚本使用和定制。
-
添加用户定义的计划组和自定义预检查步骤后,故障转移和开始追溯计划将如下所示。
图 4.16:最终故障转移计划
图 4.17:最终开始钻取计划
任务 5:为区域 2 中的 DR 计划运行预检查
通过切换和故障转移,已成功在备用区域 2 中创建启动钻取 DR 计划。这些计划支持 OCI Full Stack DR 将工作负载从区域 1 迁移到区域 2 或执行 DR 钻取。后续任务涉及运行 DR 计划的预检查,以确保准备就绪并验证转换过程。
任务 5.1:开始切换计划的预检查
为切换 DR 计划运行预检查。
- 确保将区域上下文设置为备用区域 2。
- 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
- 单击操作下拉菜单。
- 单击运行预检查。
- Select the DB Switchover from IAD to PHX plan.
- 输入计划执行名称(如果不是),它将自动生成。
-
单击运行预检查。
图 5.1:显示如何运行切换计划的预检查 -
从 Plan executions 选项卡中验证 Succeeded 状态。
图 5.2:显示切换计划的已完成预检查
任务 5.2:开始故障转移计划的预检查
运行故障转移 DR 计划的预检查。
- 确保将区域上下文设置为备用区域 2。
- 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
- 单击操作下拉菜单。
- 单击运行预检查。
- 选择 DB Failover from IAD to PHX 计划。
- 输入计划执行名称(如果不是),它将自动生成。
-
单击运行预检查。
图 5.3:显示如何运行故障转移计划的预检查 -
从 Plan executions 选项卡中验证 Succeeded 状态。
图 5.4:显示故障转移计划的已完成预检查
任务 5.3:开始追溯计划的预检查
运行启动钻取 DR 计划的预检查。
- 确保将区域上下文设置为备用区域 2。
- 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
- 单击操作下拉菜单。
- 单击运行预检查。
- 选择在 PHX 中启动钻取计划。
- 输入计划执行名称(如果不是),它将自动生成。
-
单击运行预检查。
图 5.5:显示如何运行开始钻取计划的预检查 -
从 Plan executions 选项卡中验证 Succeeded 状态。
图 5.6:显示故障转移计划的已完成预检查
任务 6:在区域 2 中运行切换计划
运行切换 DR 计划以启动从区域 1(主要)到区域 2(备用)的 Oracle 数据库角色转换。
- 确保将区域上下文设置为备用区域 2。
- 确保在区域 2 中选择了正确的 DR 保护组,它应该是备用角色。
- 单击操作下拉菜单。
-
单击执行计划。
图 6.1:显示如何运行切换计划 - Select the DB Switchover from IAD to PHX plan.
- 此任务在区域 2 中运行切换计划。
- 取消选择 Enable prehecks(启用预检查),因为预检查已在任务 5 中执行。如果要再次运行,可以启用它。
- 输入计划执行名称(如果不是),它将自动生成。
-
单击执行计划。
图 6.2:显示如何执行切换计划 -
导航到计划执行选项卡,然后选择切换计划执行。
图 6.3:显示正在进行的切换计划 -
监视切换计划,直到完整的工作量从区域 1 完全转换到区域 2。切换计划的执行在大约 8 分钟内成功完成。
图 6.4:显示已完成的切换计划执行。 -
您可以使用任务 1.8 中提供的详细信息验证数据库角色状态。
图 6.5:切换后的 Data Guard 状态预期输出:
adghol_site1应显示为主数据库。adghol_site0应显示为物理备用数据库。Configuration Status应显示成功。
-
DR 保护组中的角色将被交换,区域 2 将显示为主,区域 1 将显示为备用。
图 6.6:切换后 DR 保护角色发生更改
任务 7:创建和自定义区域 1 中的 DR 计划
随着从区域 1 切换到区域 2 的 DR 计划成功执行,区域 2 现在承担了主数据库角色,而区域 1 已转换为备用数据库角色。
按照任务 4 中详细介绍的方法,在区域 1 的 DR 保护组中创建和自定义切换、故障转移和 DR 钻取计划,该组现在用作备用对等区域。
使用用户定义的计划组和定制预检查步骤创建和更新这些计划后,它们将如下所示。
图 7.1:在区域 1 中创建了借项计划
图 7.2:区域 1 中的切换计划
图 7.3:区域 1 中的故障转移计划
图 7.4:在区域 1 中启动钻取计划
如果需要,您可以运行切换计划以将区域 1 中的数据库提升回主要角色,而区域 2 中的数据库则成为备用。
同样,您可以运行启动钻取计划以模拟灾难恢复事件,然后创建并执行停止钻取计划以将系统恢复到其原始状态。
-
在启动钻取计划期间,数据库将从物理备用转换为快照备用。这允许应用程序临时访问备用数据库并与之交互以进行测试。
-
在停止钻取计划期间,数据库将从快照备用转换回物理备用,确保它与主数据库重新同步。
后续步骤
有关详细信息,请参阅 Related Links 部分中的 OCI Full Stack DR、Oracle Base Database Service 和 Oracle Data Guard 文档。
相关链接
确认
- 作者 — Suraj Ramesh(OCI Full Stack DR 高级首席产品经理)
- 贡献者 — Santhosh Shankaramanchi(OCI Full Stack DR 技术人员顾问成员)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Automate Role Changes for Manually Configured Oracle Data Guard in OCI Database Services Using OCI Full Stack DR and Custom Scripts
G45730-03