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 的副本提升问题。