执行 Oracle Data Guard 切换 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

执行 Oracle Data Guard 切换

切换是主数据库和备用数据库之间的角色反转。在切换期间,原始主数据库转换为备用角色,而原始备用数据库转换为主角色。

在 Oracle Data Guard 环境中,主数据库支持一个或多个备用数据库。您可以执行从主数据库到备用数据库的基于切换的托管式角色转换。切换是主数据库和备用数据库之间的角色反转。在切换期间,原始主数据库转换为备用角色,而原始备用数据库转换为主角色。

Oracle Data Guard 切换概述

Amazon RDS 支持 Oracle Database 副本的完全托管式、基于切换的角色转换。您只能启动到已挂载或以只读方式打开的备用数据库的切换。

副本可以位于单独的 Amazon Web Services 区域中,也可以位于单个区域的不同可用区(AZ)中。支持所有 Amazon Web Services 区域。

切换备用实例,使其成为主实例

切换与只读副本提升不同。在切换过程中,源和副本数据库实例会更改角色。在提升过程中,只读副本会成为源数据库实例,但源数据库实例不会成为副本。有关更多信息,请参阅 将只读副本提升为独立的数据库实例

Oracle Data Guard 切换的优势

就像 RDS for Oracle 只读副本一样,托管式切换依赖于 Oracle Data Guard。该操作旨在实现零数据丢失。Amazon RDS 可自动执行切换的以下各个方面:

  • 反转主数据库和指定备用数据库的角色,将新的备用数据库置于与原始备用数据库相同的状态(已挂载或只读)

  • 确保数据一致性

  • 在转换后维护您的复制配置

  • 支持重复性反转,允许您的新备用数据库恢复其原来的主角色

支持的 Oracle 数据库版本

Oracle Database 19c 支持 Oracle Data Guard 切换。

Oracle Data Guard 切换的成本

Oracle Data Guard 切换功能不会产生额外费用。Oracle Database 企业版支持挂载模式下的备用数据库。要以只读模式打开备用数据库,您需要 Oracle Active Data Guard 选项。

Oracle Data Guard 切换的工作原理

Oracle Data Guard 切换是一项完全托管式操作。您可以通过发出 CLI 命令 switchover-read-replica 启动备用数据库的切换。然后,Amazon RDS 修改您的复制配置中的主角色和备用角色。

原始备用角色原始主角色是切换前存在的角色。新备用角色新主角色是切换后存在的角色。旁观者副本是一个副本数据库,它在 Oracle Data Guard 环境中用作备用数据库,但不切换角色。

Oracle Data Guard 切换的各个阶段

要执行切换,Amazon RDS 必须执行以下步骤:

  1. 阻止原始主数据库上的新事务。在切换期间,Amazon RDS 会中断您的 Oracle Data Guard 配置中所有数据库的复制。在切换期间,原始主数据库无法处理写入请求。

  2. 将未应用的事务发送到原始备用数据库,并应用它们。

  3. 以只读或挂载模式重新启动新的备用数据库。该模式取决于切换前原始备用数据库的打开状态。

  4. 以读/写模式打开新的主数据库。

Oracle Data Guard 切换之后

Amazon RDS 切换主数据库和备用数据库的角色。您负责重新连接应用程序并执行任何其他所需的配置。

成功标准

当原始备用数据库执行以下操作时,Oracle Data Guard 切换获得成功:

  • 转换到其作为新的主数据库的角色

  • 完成其重新配置

为了限制停机时间,新的主数据库会尽快变为活动状态。由于 Amazon RDS 异步配置旁观者副本,因此这些副本可能会在原始主数据库之后变为活动状态。

与新的主数据库的连接

切换后,Amazon RDS 不会将您当前的数据库连接传播到新的主数据库。在 Oracle Data Guard 切换完成后,将您的应用程序重新连接到新的主数据库。

新的主数据库的配置

为了切换到新的主数据库,Amazon RDS 将原始备用数据库的模式更改为打开。角色的更改是对数据库的唯一更改。Amazon RDS 未设置多可用区复制等功能。

如果您使用不同的选项切换到跨区域副本,则新的主数据库会保留自己的选项。Amazon RDS 不会迁移原始主数据库上的选项。如果原始主数据库具有 SSL、NNE、OEM 和 OEM_AGENT 等选项,则 Amazon RDS 不会将它们传播到新的主数据库。

为 Oracle Data Guard 切换做准备

在启动 Oracle Data Guard 切换之前,请确保您的复制环境满足以下要求:

  • 原始备用数据库已挂载或以只读方式打开。

  • 在原始备用数据库上启用自动备份。

  • 原始主数据库和原始备用数据库处于可用状态。

  • 原始主数据库和原始备用数据库没有待处理的维护操作。

  • 原始备用数据库处于复制状态。

  • 当主数据库或备用数据库当前处于切换生命周期时,您不要尝试启动切换。如果在切换后正在重新配置副本数据库,Amazon RDS 会阻止您启动另一次切换。

    注意

    旁观者副本是 Oracle Data Guard 配置中的副本,它不是切换的目标。在切换期间,旁观者副本可以处于任何状态。

  • 原始备用数据库的配置与原始主数据库所需的配置尽可能接近。假设原始主数据库和原始备用数据库具有不同选项的场景。切换完成后,Amazon RDS 不会自动将新的主数据库重新配置为具有与原始主数据库相同的选项。

  • 在启动切换之前,您需要配置所需的多可用区部署。Amazon RDS 不将多可用区作为切换的一部分进行管理。多可用区部署保持原样。

    假设 db_maz 是多可用区部署中的主数据库,而 db_saz 是单可用区副本。您启动从 db_maz 到 db_saz 的切换。之后,db_maz 是多可用区副本数据库,而 db_saz 是单可用区主数据库。新的主数据库现在不受多可用区部署的保护。

  • 在为跨区域切换做准备时,主数据库不使用与复制配置之外的数据库实例相同的选项组。要成功进行跨区域切换,当前主数据库及其只读副本必须是仅有的使用当前主数据库的选项组的数据库实例。否则,Amazon RDS 会阻止切换。

启动 Oracle Data Guard 切换

您可以将 RDS for Oracle 只读副本切换为主角色,并将以前的主数据库实例切换为副本角色。

将 Oracle 只读副本切换为主数据库角色
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

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

    随后会显示数据库窗格。每个只读副本在角色列中显示副本

  3. 选择要切换为主角色的只读副本。

  4. 对于 Actions(操作),选择 Switch over replica(切换副本)。

  5. 选择 I acknowledge(我确认)。然后选择 Switch over replica(切换副本)。

  6. Databases(数据库)页面,监控切换的进度。

    监控 Oracle Data Guard 切换的进度。

    切换完成后,切换目标的角色将从 Replica(副本)更改为 Source(源)。

    源数据库和副本数据库会更改角色。

要将 Oracle 副本切换为主数据库角色,请使用 Amazon CLI switchover-read-replica 命令。以下示例使名为 replica-to-be-made-primary 的 Oracle 副本成为新的主数据库。

对于 Linux、macOS 或 Unix:

aws rds switchover-read-replica \ --db-instance-identifier replica-to-be-made-primary

对于 Windows:

aws rds switchover-read-replica ^ --db-instance-identifier replica-to-be-made-primary

要将 Oracle 副本切换为主数据库角色,请使用所需参数 DBInstanceIdentifier 调用 Amazon RDS API SwitchoverReadReplica 操作。此参数指定要承担主数据库角色的 Oracle 副本的名称。

监控 Oracle Data Guard 切换

要检查实例的运行状况,请使用 Amazon CLI 命令 describe-db-instances。以下命令检查数据库实例 orcl2 的状态。该数据库在切换之前是备用数据库,但在切换之后是新的主数据库。

aws rds describe-db-instances \ --db-instance-identifier orcl2

要确认切换成功完成,请查询 V$DATABASE.OPEN_MODE。检查新的主数据库的值是否为 READ WRITE

SELECT OPEN_MODE FROM V$DATABASE;

要查找与切换相关的事件,请使用 Amazon CLI 命令 describe-events。以下示例查找有关 orcl2 实例的事件。

aws rds describe-events \ --source-identifier orcl2 \ --source-type db-instance