暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Amazon RDS for Oracle进行托管Oracle Data Guard切换

原创 eternity 2022-09-20
766

Amazon Relational Database Service(Amazon RDS)for Oracle现在支持使用Oracle Data Guard对Oracle数据库副本进行完全管理、基于切换的角色转换。您可以启动到装载或以只读方式打开的复制副本的切换,并且复制副本可以驻留在区域的可用性区域内、跨区域的可用区或跨区域。Amazon RDS提供从主数据库到副本的完全自动化切换,以最小化计划维护期间的停机时间。

在本文中,我们讨论了Amazon RDS for Oracle上Data Guard切换的用例,并展示了数据库管理员(DBA)和数据库架构师如何执行托管切换,以实现RDS for Oracle主数据库及其副本之间的角色转换。

Amazon RDS for Oracle切换

Amazon RDS for Oracle支持创建Oracle Data Guard副本。有关更多信息,请参阅使用Managed disaster recovery and managed reader farm with Amazon RDS for Oracle using Oracle Active Data Guard.。它完全管理Oracle Data Guard的配置,并通过安全的网络连接在主数据库实例及其副本之间异步复制数据。要检查创建Oracle复制副本的要求,请参阅Oracle的复制副本要求。

Data Guard切换是一个计划好的事件,其中原始主数据库转换为备用角色,而原始副本转换为主角色。此功能允许将新复制副本置于与原始复制副本相同的状态(已装载或只读)。它颠倒了从新主数据库到新副本(旧主数据库)的复制方向,以零数据丢失维护您的复制配置,并提供数据一致性。它还更新了不属于切换的其他复制副本的配置,以通过恢复从新主数据库到复制副本的日志传送并重新启动复制副本上的重做应用程序,重新建立与新主数据库的复制。Amazon RDS for Oracle Data Guard切换支持重复的角色反转,允许您的新副本返回其原始主角色。

下图描述了一个Oracle Data Guard设置示例,其中orcl1是主数据库实例,orcl2是在Data Guard切换之前进行异步复制的副本。

image.png

下图描述了一个Oracle Data Guard设置示例,其中orcl2是主数据库实例,orcl1是在Data Guard切换完成后异步复制的副本。

image.png

支持的Oracle数据库版本

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

支持的AWS地区

Oracle Data Guard切换在所有支持RDS for Oracle副本实例的商业地区都可用。有关更多信息,请访问区域可用性。

AWS定价注意事项

RDS for Oracle Data Guard切换功能与读取或装载副本的成本相比,不会产生任何额外成本。有关更多信息,请参阅Amazon RDS for Oracle定价。

Oracle许可选项

您应该确保符合Oracle Data Guard许可,以便为RDS for Oracle数据库建立读取或装载的副本。Amazon RDS for Oracle Data Guard只读数据库副本的配置需要Oracle Database Enterprise Edition(EE)和Oracle Active Data Guard许可证。Amazon RDS for Oracle上装载的复制副本需要Oracle Database Enterprise Edition(EE)许可证(包括Oracle Data Guard重做应用)。有关详细信息,请参阅许可信息。

用例

正如测试从备份中恢复数据很重要一样,能够以经济高效的方式进行恢复演练有助于让您确信,如果需要恢复,您可以满足您的目标和客户的期望。以下是RDS for Oracle数据库上Data Guard切换的常见用例:

  • 使用有计划停机的按需或计划灾难恢复演练,为应用程序做好灾难恢复准备。对于计划的灾难恢复演练,主和副本应与Data Guard切换角色同步。

  • 计划从一个区域到另一个区域或不同数据库配置的定期维护活动,以切换写入流量。定期计划维护活动的一些示例包括修改实例类型、更改数据库参数配置和增加存储大小。

  • 随着应用程序的增长及其用户群在地理位置上的分散和数据库通信模式的变化,扩展到全球受众。作为此过程的一部分,您可能需要切换数据库,以减少到不同区域的写入流量的延迟。

升级RDS for Oracle副本与Data Guard切换

许多AWS客户将RDS用于Oracle装载或只读副本,以用于其恢复解决方案的灾难。直到今天,使用RDS for Oracle读取和装载副本,为了执行灾难恢复演练,您需要将副本升级为新的独立数据库,然后创建新的副本来维护复制配置。托管Oracle Data Guard Switchover通过简单地颠倒数据库的角色而无需重新创建副本,从而增强了客户体验。

您可以通过发出适当的AWS命令行界面(AWS CLI)命令或从Amazon RDS控制台启动目标备用数据库的切换。Amazon RDS for Oracle在复制配置中颠倒了主角色和备用角色。如前一节所述,Amazon RDS for Oracle上的托管Data Guard切换消除了升级到新的独立主数据库后重建副本的需要。Oracle Data Guard在切换期间保持事务一致性,因此在切换后不需要在新的主副本和备用副本之间进行数据验证。

解决方案概述

下图显示了一个RDS for Oracle Multi-AZ主数据库,在区域1和区域2中具有区域内和跨区域副本。在区域1中的RDS for Oracle主数据库和区域2中的副本之间跨区域启动切换。Amazon RDS for Oracle的自动备份功能在用户指定的保留期内,在Amazon Simple Storage Service(Amazon S3)中安全地备份数据库和归档重做日志。

image.png

Amazon RDS Multi-AZ使用同步存储复制维护数据的冗余和一致备用副本。Amazon RDS Multi-AZ部署选项使您能够在同一地区以高可用性运行任务关键型工作负载,并在发生故障时自动从主数据库故障切换到同步复制的辅助数据库。Amazon RDS for Oracle上Multi-AZ设置中的备用服务器没有读访问权限,而主服务器可用于读/写。

Amazon RDS for Oracle上的切换是使用Oracle Data Guard代理执行的,该代理验证主副本是否已准备好进行切换。在Amazon RDS for Oracle上的Data Guard切换期间,原始主数据库停止处理写入请求,新事务被阻止。它还会中断读副本配置中所有副本的复制。未应用的重做更改将发送并应用到备用数据库,以确保主数据库和副本之间的数据一致性。切换后,新的主数据库将以读/写模式重新启动,新的复制副本将以以前的复制配置(只读或装载模式)启动。我们将在本文后面详细介绍启动切换的步骤。

下图描述了在区域2中使用Amazon RDS for Oracle上的新主数据库和区域1中Multi-AZ配置中的新副本切换后的角色转换。切换后,不属于切换的其他旁观者副本将重新配置为从新主数据库继续异步复制。

image.png

Oracle Data Guard切换完成后,将应用程序重新连接到新的主数据库。在RDS for Oracle主实例和副本的两个端点上添加TNS别名有助于简化切换后的应用程序连接重新配置。

灾难恢复目标

恢复时间目标(RTO)是服务中断和恢复服务之间的最大可接受延迟。这决定了当服务不可用时,什么是可接受的时间窗口。

在RDS for Oracle上计划的Data Guard切换期间,确保所有事务都应用于主事务和副本,以确保数据一致性。在RDS for Oracle数据库上完成Data Guard切换的RTO通常以分钟为单位,但可能会因切换时主数据库和副本之间的复制延迟而有所不同。复制延迟的常见原因是源数据库实例上的大量事务活动,这可能会导致在源数据库实例中生成大量归档日志。这会导致由于网络延迟而延迟将归档日志传送到复制副本。

先决条件

确保您具备以下先决条件:

  • 必须在原始复制副本上启用自动备份。当切换完成时,将复制主服务器的自动备份配置,并在新的主服务器上运行。

  • 最好在所有RDS for Oracle主数据库和副本数据库上使用相同的参数组和选项组。

  • 切换是一个计划好的按需事件,因此选择一个RDS for Oracle复制副本,使切换的副本延迟最小。在RDS for Oracle复制副本上启动切换之前,验证switchover_status from v$database的结果是否为to PRIMARY或SESSIONS ACTIVE。请参阅以下代码:

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE; 
(Confirm result is TO PRIMARY or SESSIONS ACTIVE)
复制

使用AWS CLI启动Data Guard切换

要使用AWS CLI启动切换,请在原始副本的Region中运行rds switchover read-replica命令。指定以下选项:

aws rds switchover-read-replica --db-instance-identifier <orig-standby>
复制

值是原始复制副本的实例ID。切换后,此数据库成为新的主数据库。

以下示例使用AWS CLI命令切换名为orcl2的原始副本和名为orcl1的原始主数据库:

aws rds switchover-read-replica --db-instance-identifier orcl2
复制

以下代码是我们的示例输出:

{
"DBInstance": {
"DBInstanceIdentifier": "orcl2",
"DBInstanceClass": "db.r5.xlarge",
"Engine": "oracle-ee",
"DBInstanceStatus": "available",
"MasterUsername": "netuser",
"DBName": "ORCL",
………..
"StatusInfos": [
{
"StatusType": "read replication",
"Normal": true,
"Status": "replicating"
}
],
……….
}
复制

成功切换后,Data Guard broker将orcl2数据库实例的角色更改为新的主数据库,并打开以进行读/写操作,恢复日志传送,并将重做应用于配置中的所有副本。它还将orcl1数据库的角色切换到以前复制配置中的新副本。

监测

要检查实例的状态,请使用AWS CLI命令description db instances。以下命令检查数据库实例orcl2的状态。此数据库在切换之前是副本,但在切换之后是新的主数据库。

aws rds describe-db-instances --db-instance-identifier orcl2
复制

我们得到以下示例输出:

{
    "DBInstances": [
        {
            "DBInstanceIdentifier": "orcl2",
            "DBInstanceClass": "db.r5.xlarge",
            "Engine": "oracle-ee",
            "DBInstanceStatus": "available",
……….
}
复制

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

SQL> SELECT OPEN_MODE FROM V$DATABASE;
复制

我们得到以下输出:

OPEN_MODE
--------------------
READ WRITE
复制

要查找与切换相关的事件,请使用AWS CLI命令描述事件。以下示例查找orcl2实例上的事件:

aws rds describe-events --source-identifier orcl2 --source-type db-instance
复制

我们得到以下输出:

{
    "Events": [
        {
            "SourceIdentifier": "orcl2",
            "SourceType": "db-instance",
            "Message": "The Switchover to the read replica started.",
            "EventCategories": [
                "read replica"
            ],
			……………
        },
        {
            "SourceIdentifier": "orcl2",
            "SourceType": "db-instance",
            "Message": "The Switchover to the read replica finished successfully.",
            ………….
}
复制

结论

在本文中,我们演示了如何使用Data Guard执行托管切换,以实现RDS for Oracle主数据库和副本之间的角色转换。通过托管Oracle Data Guard切换,您可以在Amazon RDS for Oracle上快速设计解决方案,以执行定期角色转换,从而最大限度地减少计划维护期间的停机时间。

欢迎您的反馈。在评论中分享您的经验和任何问题。

关于作者

image.png
Nethravathi Muddarajaiah是高级数据库专家解决方案架构师。她与大型企业、ISV和DNB客户合作,重新构建其数据平台,以在AWS上构建创新、弹性和经济高效的解决方案。

image.png
Sachin Vaidya是数据库专家解决方案架构师。他与AWS客户合作,为数据库项目提供指导和技术援助,帮助他们在使用AWS时提高其解决方案的价值。

原文标题:Managed Oracle Data Guard Switchover with Amazon RDS for Oracle
原文作者:Nethravathi Muddarajaiah and Vaidya Sachin
原文链接:https://aws.amazon.com/cn/blogs/database/managed-oracle-data-guard-switchover-with-amazon-rds-for-oracle/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论