RDS Custom for Oracle 复制的指南和限制 - Amazon Relational Database Service

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

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

RDS Custom for Oracle 复制的一般指南

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

  • 您只能在 Oracle Enterprise Edition 中使用 RDS Custom for Oracle 复制。不支持 Standard Edition 2。

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

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

    此密码存储在 AWS 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 AWS 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 AWS CLI 命令查看新状态。

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

    RDS Custom for Oracle 的确会检测托管式副本的滞后。高复制滞后会产生 Replication has stopped 事件。您还可以通过使用 describe-db-instances AWS 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 的副本提升问题