使用适用于 RDS Custom for Oracle 的 Oracle 副本 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用适用于 RDS Custom for Oracle 的 Oracle 副本

您可以为 RDS Custom for Oracle 数据库实例创建 Oracle 副本。支持容器数据库(CDB)和非 CDB。创建 RDS Custom for Oracle 副本类似于创建 RDS for Oracle 副本,但有重大区别。有关创建和管理 Oracle 副本的一般信息,请参阅使用数据库实例只读副本使用 Amazon RDS for Oracle 的只读副本

RDS Custom for Oracle 复制概述

RDS Custom for Oracle 复制的架构类似于 RDS for Oracle 复制。主数据库实例异步复制到一个或多个 Oracle 副本。


                RDS Custom for Oracle 支持 Oracle 副本

最大副本数

与 RDS for Oracle 一样,您最多可以创建 RDS Custom for Oracle 主数据库实例的五个托管式 Oracle 副本。您还可以创建自己的手动配置的(外部)Oracle 副本。外部副本不计入您的数据库实例限制。它们还位于 RDS Custom 支持外围之外。有关支持外围的更多信息,请参阅 RDS Custom 支持外围

副本命名约定

Oracle 副本名称基于数据库的唯一名称。格式为 DB_UNIQUE_NAME_X,并按顺序附加字母。例如,如果您的数据库唯一名称为 ORCL,则前两个副本命名为 ORCL_AORCL_B。前六个字母 A–F 是为 RDS Custom 保留的。RDS Custom 将数据库参数从主数据库实例复制到副本。有关更多信息,请参阅 Oracle 文档中的 DB_UNIQUE_NAME

副本备份保留期

原定设置情况下,RDS Custom Oracle 副本使用与主数据库实例相同的备份保留期。您可以将备份保留期修改为 1–35 天。RDS Custom 支持备份、还原和时间点故障恢复(PITR)。有关备份和还原 RDS Custom 数据库实例的更多信息,请参阅备份和还原 Amazon RDS Custom for Oracle 数据库实例

注意

当创建 Oracle 副本时,RDS Custom 会暂时暂停清理重做日志文件。通过这种方式,RDS Custom 可确保在新的 Oracle 副本变为可用后将这些日志应用于该副本。

副本提升

您可以使用控制台、promote-read-replica Amazon CLI 命令或 PromoteReadReplica API 在 RDS Custom for Oracle 中提升托管式 Oracle 副本。如果您删除了主数据库实例,并且所有副本都运行正常,则 RDS Custom for Oracle 会自动将您的托管式副本提升为独立实例。如果副本已暂停自动化或超出支持外围,则必须先修复副本,RDS Custom 才能自动对其进行提升。您只能手动提升外部 Oracle 副本。

RDS Custom for Oracle 复制的指南和限制

创建 RDS Custom for Oracle 副本时,并非所有 RDS Oracle 副本选项都受支持。

RDS Custom for Oracle 复制的一般指南

使用 RDS Custom for Oracle 时,请遵循以下指南:

  • 请勿修改 RDS_DATAGUARD 用户。此用户保留用于 RDS Custom for Oracle 自动化。修改此用户可能会导致不希望的结果,例如无法为 RDS Custom for Oracle 数据库实例创建 Oracle 副本。

  • 不要更改复制用户密码。管理 RDS Custom 主机上的 Oracle Data Guard 配置需要使用此密码。如果您更改密码,RDS Custom for Oracle 可能会将您的 Oracle 副本置于支持外围之外。有关更多信息,请参阅RDS Custom 支持外围

    此密码存储在 Amazon Secrets Manager 中,用数据库资源 ID 进行标记。每个 Oracle 副本在 Secret Manager 中都有自己的密钥。密钥的格式如下。

    do-not-delete-rds-custom-db-DB_resource_id-6-digit_UUID-dg
  • 不要更改主数据库实例的 DB_UNIQUE_NAME。更改名称会导致任何还原操作卡住。

  • 不要在 RDS Custom CDB 的 CREATE PLUGGABLE DATABASE 命令中指定子句 STANDBYS=NONE。这样,如果发生失效转移,您的备用 CDB 将包含所有 PDB。

RDS Custom for Oracle 复制的一般限制

RDS Custom for Oracle 副本具有以下限制:

  • 无法在只读模式下创建 RDS Custom for Oracle 副本。但是,您可以将已挂载副本的模式手动更改为只读,以及从只读更改为已挂载。有关更多信息,请参阅 create-db-instance-read-replica Amazon CLI 命令的文档。

  • 您无法创建跨区域 RDS Custom for Oracle 副本。

  • 您无法更改 Oracle Data Guard CommunicationTimeout 参数的值。对于 RDS Custom for Oracle 数据库实例,此参数设置为 15 秒。

RDS Custom for Oracle 复制的网络要求和限制

确保您的网络配置支持 RDS Custom for Oracle 副本。请考虑以下事项:

  • 确保为主数据库实例和其所有副本的虚拟私有云(VPC)内的入站和出站通信启用端口 1140。这对于只读副本之间的 Oracle Data Guard 通信是必需的。

  • RDS Custom for Oracle 会在创建 Oracle 副本时对网络进行验证。如果主数据库实例和新副本无法通过网络连接,则 RDS Custom for Oracle 不会创建副本并将其置于 INCOMPATIBLE_NETWORK 状态。

  • 对于外部 Oracle 副本,例如您在 Amazon EC2 或本地创建的只读副本,请使用另一个端口和侦听器进行 Oracle Data Guard 复制。尝试使用端口 1140 可能会导致与 RDS Custom 自动化发生冲突。

  • /rdsdbdata/config/tnsnames.ora 文件包含映射到侦听器协议地址的网络服务名称。请注意以下要求和建议:

    • 当处理 Oracle 副本操作时,tnsnames.ora 中前缀为 rds_custom_ 的条目保留用于 RDS Custom。

      tnsnames.ora 中创建手动条目时,不要使用此前缀。

    • 在某些情况下,您可能希望手动切换或故障转移,或者使用快速启动故障转移 (FSFO) 等故障转移技术。如果是这样,请确保将 tnsnames.ora 条目从主数据库实例手动同步到所有备用实例。此建议同时适用于 RDS Custom 管理的 Oracle 副本和外部 Oracle 副本。

      RDS Custom 自动化只会更新主数据库实例上的 tnsnames.ora 条目。请务必在添加或删除 Oracle 副本时也要进行同步。

      如果您不同步 tnsnames.ora 文件并且手动切换或失效转移,主数据库实例上的 Oracle Data Guard 可能无法与 Oracle 副本进行通信。

RDS Custom for Oracle 的外部副本限制

RDS Custom for Oracle 外部副本(包括本地副本)具有以下限制:

  • RDS Custom for Oracle 在手动失效转移(如 FSFO)时不会检测到外部 Oracle 副本的实例角色更改。

    RDS Custom for Oracle 的确会检测托管式副本的更改。角色更改在事件日志中进行了记录。您还可以通过使用 describe-db-instances Amazon CLI 命令查看新状态。

  • RDS Custom for Oracle 不检测到外部 Oracle 副本的高复制滞后。

    RDS Custom for Oracle 的确会检测托管式副本的滞后。高复制滞后会产生 Replication has stopped 事件。您还可以通过使用 describe-db-instances Amazon CLI 命令查看复制状态,但它的更新可能会延迟。

  • 如果您删除主数据库实例,RDS Custom for Oracle 不会自动提升外部 Oracle 副本。

    自动提升功能仅适用于托管式 Oracle 副本。有关手动提升 Oracle 副本的信息,请参阅白皮书在 Amazon RDS Custom for Oracle 上使用 Data Guard 启用高可用性

RDS Custom for Oracle 的副本提升限制

提升 RDS Custom for Oracle 托管式 Oracle 副本的过程与提升 RDS 托管式副本的过程相同,但有一些区别。注意 RDS Custom for Oracle 副本的以下限制:

  • 当 RDS Custom for Oracle 正在备份副本时,您无法提升副本。

  • 提升 Oracle 副本时,不能将备份保留期更改为 0

  • 当副本未处于正常运行状态时,您无法提升它。

    如果您在主数据库实例上发出 delete-db-instance,RDS Custom for Oracle 会验证每个托管式 Oracle 副本是否正常运行以及是否可供提升。副本可能不符合提升资格,因为自动化已暂停或它不在支持外围内。在这种情况下,RDS Custom for Oracle 会发布一个事件来解释此问题,以便您可以手动修复 Oracle 副本。

RDS Custom for Oracle 的副本提升指南

提升副本时,请注意以下指南:

  • 在 RDS Custom for Oracle 提升您的副本时不要启动失效转移。否则,提升工作流可能会卡住。

  • 在 RDS Custom for Oracle 提升 Oracle 副本时,不要切换主数据库实例。否则,提升工作流可能会卡住。

  • 在 RDS Custom for Oracle 提升 Oracle 副本时,不要关闭主数据库实例。否则,提升工作流可能会卡住。

  • 不要尝试将新提升的数据库实例作为目标来重新开始复制。在 RDS Custom for Oracle 提升 Oracle 副本后,它将成为一个独立的数据库实例,不再具有副本角色。

有关更多信息,请参阅排查 RDS Custom for Oracle 的副本提升问题

将 RDS Custom for Oracle 副本提升为独立的数据库实例

就像使用 RDS for Oracle 一样,您可以将 RDS Custom for Oracle 副本提升为独立的数据库实例。提升 Oracle 副本时,RDS Custom for Oracle 会在数据库实例变为可用之前重新启动数据库实例。有关提升 Oracle 副本的更多信息,请参阅将只读副本提升为独立的数据库实例

以下步骤说明将 Oracle 副本提升为数据库实例的一般过程:

  1. 停止将任何事务写入到主数据库实例。

  2. 等待 RDS Custom for Oracle 将所有更新应用到 Oracle 副本。

  3. 通过在 Amazon RDS 控制台上选择 Promote(提升)选项、Amazon CLI 命令 promote-read-replicaPromoteReadReplica Amazon RDS API 操作来提升 Oracle 副本。

提升一个 Oracle 副本需要几分钟才能完成。在此过程中,RDS Custom for Oracle 会停止复制并重启您的副本。完成重启后,Oracle 副本即可用作独立的数据库实例。

将 RDS Custom for Oracle 副本提升为独立的数据库实例
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS 控制台中,选择数据库

    随后会显示数据库窗格。每个 Oracle 副本在 Role(角色)列中显示 Replica(副本)。

  3. 选择您要提升的 RDS Custom for Oracle 副本。

  4. 对于操作,请选择提升

  5. Promote Oracle replica(提升 Oracle 副本)页面上,输入新提升的数据库实例的备份保留期和备份时段。您不能将此值设置为 0

  6. 根据需要完成设置后,选择 Promote Oracle replica(提升 Oracle 副本)。

要将 RDS Custom for Oracle 副本提升为独立的数据库实例,请使用 Amazon CLI promote-read-replica 命令。

对于 Linux、macOS 或 Unix:

aws rds promote-read-replica \ --db-instance-identifier my-custom-read-replica \ --backup-retention-period 2 \ --preferred-backup-window 23:00-24:00

对于 Windows:

aws rds promote-read-replica ^ --db-instance-identifier my-custom-read-replica ^ --backup-retention-period 2 ^ --preferred-backup-window 23:00-24:00

要将 RDS Custom for Oracle 副本提升为独立的数据库实例,请调用具有必要参数 PromoteReadReplica 的 Amazon RDS API DBInstanceIdentifier 操作。