使用 Autonomous Data Guard 保护关键数据库免受故障和灾难影响
使用 Autonomous Data Guard 功能,即使出现故障、灾难、人为错误或数据损坏,您仍可以保留关键生产数据库供关键任务应用使用。这种功能通常称为灾难恢复。
在 Autonomous Database on Dedicated Exadata Infrastructure 中,您可以在自治容器数据库级别配置和管理 Autonomous Data Guard。
关于 Autonomous Data Guard
Autonomous Data Guard 可创建和维护数据库的两个完全独立的副本:应用程序连接和使用的主数据库,以及作为主数据库的同步副本的备用数据库。然后,如果主数据库因任何原因不可用,Autonomous Data Guard 可以将备用数据库转换为主数据库,因此它将开始为应用程序提供服务。
主数据库和备用数据库通常彼此称为对等数据库。每个自治容器数据库至多可以有两个备用数据库。
注意:
应用程序必须配置为使用透明应用程序连续性 (Transparent Application Continuity,TAC),才能充分利用 Autonomous Data Guard 提供的数据库可用性功能。下图显示了如何使每个备用数据库与主数据库保持同步。
对主数据库所做的更改记录在主数据库的重做日志中。Autonomous Data Guard 将这些重做记录作为流通过网络传输到备用数据库的重做日志。然后,备用数据库会将这些记录应用于备用数据库。通过这种方式,备用数据库与主数据库保持同步。
同步几乎是瞬时的,但是,正如刚才描述的过程所暗示的那样,有两个操作消耗时间:将重做记录传输到备用数据库并将重做记录应用到备用数据库。其中第一个称为传输滞后,另一个称为应用滞后。You can view current lag values for an Autonomous Database from the database's Details page from Autonomous Data Guard under Resources. under Resources in the side menu.您可以通过容器数据库的“详细信息”页面以类似方式查看容器数据库中所有 Autonomous Database 的当前滞后值。
注意:
对于多个备用数据库,不支持级联重做传输。配置 Autonomous Data Guard
在 Autonomous Database on Dedicated Exadata Infrastructure 中,您可以在自治容器数据库 (Autonomous Container Database,ACD) 级别配置和管理 Autonomous Data Guard。您可以为已预配的 ACD 启用 Autonomous Data Guard,并使用 Oracle Cloud Infrastructure 控制台从其详细信息页面添加最多两个备用 ACD。有关说明,请参阅在自治容器数据库上启用 Autonomous Data Guard 和添加第二个备用自治容器数据库。
-
部署在 Exadata Cloud@Customer 上的 Autonomous Database 必须打开端口 1522 ,以允许 Autonomous Data Guard 设置中的主数据库与备用数据库之间的 TCP 流量。
-
无法在计划在未来三天内运行活动维护的 ACD 上启用 Autonomous Data Guard。您可以先运行活动维护,然后启用 Autonomous Data Guard,或者更改维护运行计划,以便在添加第二个备用数据库之前不会开始运行。
-
添加第二个备用数据库需要对第一个备用数据库自动执行非滚动重新启动。主数据库不受此非滚动重新启动的影响。
使用客户管理的密钥配置 Autonomous Data Guard
在 Autonomous Database on Dedicated Exadata Infrastructure 中,您可以在自治容器数据库 (ACD) 级别使用客户管理的密钥配置和管理 Autonomous Data Guard。您可以使用 Oracle Cloud Infrastructure 控制台为已预配的 ACD 启用 Autonomous Data Guard,并从其“详细信息”页面最多添加两个备用 ACD。有关说明,请参阅在自治容器数据库上启用 Autonomous Data Guard 和添加第二个备用自治容器数据库。
- 如果您使用的是 Oracle Cloud Infrastructure Key Management System (OCI KMS),并且希望启用跨区域 Autonomous Data Guard,则首先需要将 OCI Vault 复制到要添加备用数据库的区域。有关详细信息,请参见 Replicating Vaults and Keys 。
注意:
在引入跨区域 Vault 复制功能之前创建的虚拟 Vault 无法跨区域复制。如果您的 Vault 需要在其他区域中复制,并且该 Vault 不支持复制,请创建新 Vault 和新密钥。但是,所有专用 Vault 都支持跨区域复制。有关详细信息,请参见 Virtual vault cross-region replication 。 - 如果您使用的是 Oracle Key Vault (OKV),并且希望启用跨区域 Autonomous Data Guard,请确保已在密钥库中为您的 OKV 集群添加了连接 IP 地址。
Autonomous Data Guard 模型
自 2025 年 3 月起,自治容器数据库 (Autonomous Container Databases,ACD) 可以从其详细信息页面启用 Autonomous Data Guard,并创建最多两个备用 ACD。在此发行版中,以前的 Autonomous Data Guard Associations 模型和关联的 API 将过时,并替换为新的 Autonomous Data Guard Groups 模型和 API。2025 年 3 月之后从 Oracle Cloud Infrastructure (OCI) 控制台预配的所有新 ACD 将自动使用新的 Autonomous Data Guard Groups 模型。
要转换现有 ACD,客户可以通过从 OCI 控制台上的 ACD 详细信息页面单击升级到 Autonomous Data Guard 组或使用 MigrateAutonomousContainerDatabaseDataguardAssociation API 来迁移到新模型。
-
您将切换到在 Autonomous Container Database 资源上执行 Autonomous Data Guard 操作的新用户体验,而不是使用 Autonomous Container Database Data Guard Association 资源。
-
您的 Autonomous Data Guard Associations 资源将转换为具有多个备用支持的 Autonomous Data Guard Groups 资源。对现有自治数据库或 Data Guard 设置没有影响。
-
在预配 Autonomous Data Guard 功能后,必须从 ACD 的详细信息页面启用 Autonomous Data Guard。
-
您必须从要分别使用主 ACD 或故障转移切换到的角色的备用 ACD 启动切换和故障转移操作。
-
您将切换到在 API to Manage Autonomous Data Guard Configuration 上列为替换 API 的新 Autonomous Data Guard 组 API。现有的 Autonomous Data Guard Associations API 已不赞成使用,从 2026 年 3 月起将不可用。
- 您必须订阅 Autonomous Data Guard 事件类型上列出的新 Autonomous Data Guard 组事件。现有的 Autonomous Data Guard Associations 事件只能与旧的 Autonomous Data Guard Associations API 一起使用,并且会随这些 API 一起过时。
角色转换和操作
创建自治容器数据库 (Autonomous Container Database,ACD) 后,您可以使用切换或故障转移操作更改对等数据库的角色。如果启用了自动故障转移,则无论何时主数据库不可用,Autonomous Data Guard 都会自动执行故障转移操作。
切换是主数据库与其备用数据库之间的角色转换。切换可确保不会丢失数据。在切换期间,主数据库会转换为备用数据库角色,备用数据库会转换为主数据库角色。要执行切换操作,请参见 Switch Roles in an Autonomous Data Guard Configuration 。
故障转移是指主数据库不可用的情况。故障转移会导致备用数据库转换为主数据库角色。如果未启用自动故障转移,则可以按照 Fail Over to the Standby in an Autonomous Data Guard Configuration 中所述执行手动故障转移。
故障转移操作后数据库的可用性和状态具有以下两个恢复目标:
- 恢复时间目标 (Recovery Time Objective,RTO) 。RTO 是数据库在故障转移后可供应用程序使用所需的最长时间,在一定程度上与故障时的应用滞后相关。对于 Autonomous Data Guard,RTO 最多为秒,最长为两分钟。
- 恢复点目标 (Recovery Point Objective,RPO) 。RPO 是发生故障的主数据库潜在数据丢失的最大持续时间,在一定程度上与发生故障时的传输滞后相关。对于 Autonomous Data Guard,RPO 几乎为零。
故障转移后,发生故障的主数据库将变为已禁用的备用数据库,并且仍不可用于任何数据库连接。您可以通过执行 reinstate 操作重新启用它并将其转换为健康的备用数据库。将失败的主数据库恢复为备用数据库后,您可以执行切换以将其恢复为原始主数据库角色。要执行恢复操作,请参见 Reinstate the Disabled Standby in an Autonomous Data Guard Configuration 。
自动故障转移或快速启动故障转移
通过自动故障转移,只要主 ACD 因区域故障、可用性域故障、Exadata 基础设施或自治 Exadata VM 集群 (AVMC) 故障或 ACD 本身故障而变为不可用,它就会自动故障转移到备用 ACD。这也称为快速启动故障转移。
在 ACD 上配置 Autonomous Data Guard 时,无法启用自动故障转移。只能在从 ACD 详细信息页更新 Autonomous Data Guard 设置时启用或禁用自动故障转移。
注意:
无法为部署在具有跨区域 Autonomous Data Guard 设置的 Exadata Cloud@Customer 中的 Autonomous Database 启用自动故障转移。无法在为第一个备用 ACD 启用自动故障转移的情况下添加第二个备用 ACD。因此,在创建第二个备用 ACD 之前,先使用更新 Autonomous Data Guard 设置禁用自动故障转移,然后根据需要稍后重新启用它。
- 在 Maximum Availability 模式下,自动故障转移可确保零数据丢失。
- 在最高性能模式下,自动故障转移可确保备用数据库不会落后于为快速启动故障转移滞后限制指定的值。缺省情况下, Fast Start failover lag limit 设置为 30 秒,仅适用于 "Maximum performance"(最大性能)模式。在这种情况下,只有当备用数据库的应用滞后(潜在数据丢失)未超过配置的滞后限制时,才可能自动故障转移。可以将快速启动故障转移滞后限制修改为介于 5 和 3600 之间的任何值。
数据库健康条件 | 说明 |
---|---|
损坏的控制文件 | 由于磁盘出现故障,控制文件被永久损坏。 |
损坏的字典 | 关键数据库字典损坏。当前,只有在数据库处于打开状态时才能检测到此状态。 |
数据文件写入错误 | 在任何数据文件中都遇到写入错误,包括临时文件、系统数据文件和还原文件。 |
由于自动故障转移,发生故障的主数据库的角色将变为“Disabled Standby(禁用的备用)”,在短时间内,备用数据库将承担主数据库的角色。自动故障转移结束后,将在禁用的备用数据库的详细信息页上显示一条消息,告知您已发生故障转移。
- 手动将主数据库切换为备用数据库。
- 将主数据库手动故障转移到备用数据库。
- 故障转移后将主数据库恢复为备用角色。
- 终止备用数据库。
- 手动故障转移要求您手动恢复原始主数据库,该主数据库将成为新的备用数据库。
- 每当发生自动故障转移时,Autonomous Database on Dedicated Exadata Infrastructure 都会尝试将旧主数据库恢复为备用数据库。但是,如果该尝试失败,则必须手动恢复该尝试。
快照备用数据库
快照备用数据库是一种通过将备用自治容器数据库 (Autonomous Container Database,ACD) 转换为快照备用 ACD 创建的可完全更新备用数据库。有关分步说明,请参见 Convert Physical Standby to Snapshot Standby 。
快照备用数据库接收和归档(但不应用来自主数据库的重做数据)。但是,它会增加恢复时间目标 (Recovery Time Objective,RTO),因为不会应用主数据库的实时更改。
- 以读写模式将主应用程序实例和备用应用程序实例连接到主数据库和备用数据库以执行初始配置。
- 首先为快照备用数据库打补丁,然后使用备用应用程序实例进行测试以确认补丁程序稳定性。这需要先将物理备用数据库转换为快照备用数据库,以便可以在快照备用数据库上应用补丁程序。
注意:
在启用了自动故障转移的情况下,无法将物理备用自治容器数据库转换为快照备用数据库。注意:
使用快照备用数据库创建新服务时,将更新快照备用 ACD 中所有 Autonomous Database 的 Wallet。要访问数据库,请从备用 Autonomous Database 重新加载 wallet,并使用快照备用连接字符串。您可以手动将快照备用 ACD 从 Oracle Cloud Infrastructure (OCI) 转换为物理备用 ACD。有关详细说明,请参见 Convert Snapshot Standby to Physical Standby 。如果快照备用未手动转换为物理备用,则将在创建后 7 天自动将其转换回物理备用。无论如何,将快照备用数据库转换回物理备用数据库将放弃对快照备用数据库的所有本地更新,并应用从主数据库接收的重做数据。
- 创建或终止自治数据库
- 扩展或收缩自治数据库
- 恢复自治数据库
如果需要,您可以从主数据库手动故障转移到快照备用数据库。在这种情况下,故障转移通过放弃对快照备用所做的所有本地更新并应用来自主数据库的数据,将快照备用数据库转换为物理备用数据库。有关分步说明,请参见 Fail Over to the Standby in an Autonomous Data Guard Configuration 。
不允许在主数据库及其快照备用数据库之间进行切换。在尝试切换之前,必须手动将快照备用数据库转换为物理备用数据库。
从客户端应用程序访问备用数据库
在 Autonomous Data Guard 配置中,客户端应用程序通常连接到主数据库并对其执行操作。
连接到物理备用数据库
除了这种普通连接之外,Autonomous Data Guard 还提供了在备用数据库上连接执行只读操作的客户端应用程序的选项。要利用此选项,客户机应用程序将使用包含 "_RO"(表示“只读”)的数据库服务名连接到数据库,如 Predefined Database Service Names for Autonomous Databases 中所述。
连接到快照备用数据库
Autonomous Data Guard 还允许您将执行读写操作的客户端应用程序连接到快照备用数据库。这些操作是快照备用数据库的本地操作,不修改其主数据库。要连接到快照备用数据库,客户机应用程序可以使用包含 "_SS"(用于 "snapshot standby")的数据库服务名称,如 Predefined Database Service Names for Autonomous Databases 中所述。
注意:
当备用数据库处于快照备用模式时,名称中包含 "_RO" 服务的所有数据库服务都处于非活动状态,无法用于连接。监视延迟时间
使用 Autonomous Data Guard 的数据库正在运行时,您可以通过在侧边菜单中选择“资源”下的 Autonomous Data Guard 关联,从数据库的(或容器数据库的)详细信息页面监视传输滞后和应用滞后时间。您还可以使用 OCI 控制台或观测 API 监视传输滞后并配置预警和通知。有关详细信息,请参阅 Database Observability with Autonomous Database Metrics 。
随着数据库工作负载的波动和流动,您应该会看到随时间推移的微小波动。但是,如果您注意到滞后时间持续上升趋势,则可以采取以下操作解决此情况:
- 应用滞后中的向上趋势。应用滞后持续上升趋势表明备用数据库没有足够的容量来跟上来自主数据库的重做记录。要解决此问题,请向上扩展数据库的 OCPU,如 Add CPU or Storage Resources to a Dedicated Autonomous Database 中所述。
- 运输滞后上升趋势。传输滞后持续上升趋势表明存在网络性能问题。Oracle Cloud 运营人员会持续监视网络性能,因此您无需采取任何操作即可看到情况自行解决。但是,如果需要,您可以通过提出服务请求将情况提供给运营人员,如在 My Oracle Support 中创建服务请求中所述。
Autonomous Data Guard 配置选项
创建启用了 Autonomous Data Guard 的自治容器数据库时,您可以指定要在其中创建备用数据库的 Exadata 基础结构和自治 Exadata VM 集群资源,并指定要使用的数据保护模式。
指定要用于备用数据库的 Exadata 基础结构和自治 Exadata VM 集群资源时,您可以选择以下选项:
- 主数据库的 Exadata 基础结构和自治 Exadata VM 集群的其他区域:
此选择提供最高级别的防范灾难保护,包括对整个区域的外部网络连接或电源的灾难性损失。
为了充分利用此跨区域保护,还需要对应用层进行配置以支持跨区域保护。因此,如果已经以这种方式配置了应用层,或者您愿意重新配置应用层以支持跨区域保护,Oracle 建议您选择此选项。
如果选择在其他区域中查找备用数据库,Oracle 建议您使用最高性能保护模式。
- 在与主数据库的 Exadata 基础结构和自治 Exadata VM 集群不同的可用性域 (AD) 中:
此选择提供了针对灾难的高级别保护,包括区域中的可用性域断开外部网络连接或断电。
此选择在数据保护与应用层中配置的简单性之间提供了很好的平衡。
如果您选择在其他可用性域中定位备用数据库,Oracle 建议您使用高可用性保护模式。
- 与主数据库的 Exadata 基础结构和自治 Exadata VM 集群位于同一可用性域 (AD) 中:
此选择提供最少级别的防范灾难保护,Oracle 建议您不要选择它。
如果主数据库的 Exadata 基础结构和自治 Exadata VM 集群资源位于只有一个可用性域的区域中,Oracle 建议您使用“在其他区域中”选项。
如果您确实选择在同一可用性域中查找备用数据库,Oracle 建议您使用高可用性保护模式。
- 在主数据库的 Exadata 基础结构和自治 Exadata VM 集群的其他租户中:
适用于:
仅限 Oracle Public Cloud
此选择允许您从其他租户添加备用数据库,从而使数据库故障转移或切换到该跨租户备用数据库。您还可以在远程租户中创建快照备用。拥有跨租户备用数据库有助于跨租户进行数据库迁移。
跨租户备用数据库:
- 可以使用 ECPU 或 OCPU 计算模型启用。备用数据库必须使用与主数据库相同的计算模型。
- 不支持自动故障转移。只能使用手动故障转移。
- 无法使用 Oracle Cloud Infrastructure 控制台添加。您只能使用 CLI 或 REST API 添加跨租户备用数据库。
关于保护模式
Autonomous Data Guard 提供了以下数据保护模式:
-
最高可用性。此保护模式在不影响主数据库可用性的情况下尽可能提供最高级别的数据保护。
主数据库在收到确认在备用数据库上接收到数据(不将其写入磁盘)之前不会提交事务处理。如果主数据库在 30 秒内未收到此确认,则其运行方式就像处于最高性能模式一样,以保留主数据库的可用性,直到它再次及时收到确认。
此保护模式可确保零数据丢失,除非发生某些双重故障,例如备用数据库发生故障后主数据库发生故障。
-
最高性能。这是缺省保护模式。它在不影响主数据库性能的情况下,尽可能提供最高级别的数据保护。
当这些事务处理生成的所有重做数据都写入到其联机重做日志中时,主数据库会立即提交事务处理。它还会将重做数据发送到备用数据库,但是在事务处理提交方面会异步执行此操作,因此主数据库性能不受将重做数据写入备用数据库的延迟的影响。
此保护模式提供的数据保护比最高可用性模式略少,对主数据库性能的影响最小。
您可以从 Oracle Cloud Infrastructure (OCI) 控制台更改 Autonomous Data Guard 设置中的保护模式。有关分步说明,请参见 Update Autonomous Data Guard Settings 。
有关 Oracle Data Guard 中的保护模式(作为 Autonomous Data Guard 功能的基础)的更多信息,请参见Oracle Data Guard Protection Modes in Oracle Data Guard Concepts and Administration。
配置 Autonomous Data Guard 时的最佳做法
Autonomous Database 支持您使用 Autonomous Data Guard 创建最多两个备用 ACD,但您可以根据自己的需求选择使用单个或多个备用 ACD。但是,要使用 Autonomous Database 提供的最具弹性的灾难恢复选项,您可以添加一个本地备用 ACD 和一个远程或跨区域备用 ACD,并以最高可用性作为数据保护模式。
- 本地备用:
- 自动故障转移到同一区域中的本地备用数据库可显著简化本地灾难隔离和应用程序故障转移。
- 本地备用数据库的业务价值可实现零数据丢失故障转移,应用停机时间可缩短到几秒钟。
- 应用会自动透明地故障转移到本地备用数据库,从而在应用服务器与数据库之间保持相同的延迟。这对于 OLTP 和程序包应用程序尤为重要,因为更高的延迟会显著影响吞吐量和整个应用程序响应时间。
- 远程备用数据库:
- 如果区域灾难导致主备用系统和本地备用系统无法访问,则应用程序和数据库可能会故障转移到远程备用数据库。
- 尽管发生区域性灾难时数据库停机时间仍然很低,但由于需要对辅助区域的 DNS、应用和数据库故障转移操作进行额外的编排,因此应用停机时间可能会更高。
- 最高可用性:
- 如果启用了自动故障转移或快速启动故障转移 (FSFO),则无论何时主 ACD 变得不可用,Autonomous Data Guard 都会故障转移到本地备用数据库,不会丢失任何数据,也不会在应用中更改数据库延迟。
- 如果启用了自动故障转移或快速启动故障转移 (FSFO),则只要整个主区域无法访问,系统就会故障转移到远程备用数据库,并可能丢失数据。
Autonomous Data Guard 如何影响标准管理操作
在某些情况下,您在自治容器数据库上执行的标准管理操作在 Autonomous Data Guard 配置中的主容器数据库和备用容器数据库上的工作方式与标准容器数据库不同。以下列表介绍了这些差异。
- 更改维护计划
主容器数据库及其备用数据库的维护计划已链接:在主容器数据库维护之前,将在几天内对备用数据库执行维护。默认值为 7 天;您可以在创建主容器数据库时选择 1 到 7 天,或者稍后通过编辑其维护详细信息进行选择。
- 更改维护类型
主容器数据库及其备用数据库的维护类型必须相同。在创建主容器数据库时或稍后通过编辑其维护详细信息来选择主容器数据库和备用数据库的维护类型。
- 禁用自动备份
使用 Autonomous Data Guard 预配自治容器数据库 (Autonomous Container Database,ACD) 时,无法禁用自动备份。
- 管理计划的维护
您可以单独管理主容器数据库及其备用数据库的预定维护。但是,由于链接了两者的维护,因此如果您选择覆盖计划的维护时间,则必须在主数据库之前的备用数据库上执行计划的维护。
- 移至其他区间
您可以分别独立地将主容器数据库和备用容器数据库移动到不同的区间,就像它们是标准容器数据库一样。但是,与标准容器数据库一样,在移动容器数据库时应非常谨慎,以确保容器数据库仍然可供适当的云用户组访问。
- 重新启动
您可以分别独立地重新启动主容器数据库和备用容器数据库,就像它们是标准容器数据库一样。
- 轮换加密密钥
您可以从主 ACD 或主数据库轮换加密密钥。
- 终止
您可以单独终止主容器数据库和备用容器数据库。但是,终止主容器数据库和终止备用容器数据库的后果有所不同:
- 终止主容器数据库可终止主容器数据库和备用容器数据库。无法终止包含自治数据库的主容器数据库。
- 终止备用容器数据库将终止备用容器数据库,并将其从 Autonomous Data Guard 配置中删除。如果只有剩余的主数据库,则会删除 Autonomous Data Guard 配置,将主数据库转换为独立容器数据库。
分步指南
您还可以使用 API 查看和管理 Autonomous Data Guard 配置。有关更多详细信息,请参见 API to Manage Autonomous Data Guard Configuration 。