乐趣区

关于分析:使用Amazon-RDS-for-Oracle配合Oracle-Active-Data-Guard建立托管的灾难恢复与只读副本

泛滥亚马逊云科技用户都在应用 Amazon 关系数据库服务产品组合(Amazon Relational Database Service,简称 Amazon RDS)来缩小惨重繁琐且无差异化的数据库日常保护工作。其中 Amazon RDS for Oracle 也切实帮忙用户显著缩小了 Oracle 数据库的治理与保护累赘。

Amazon RDS for Oracle 提供多可用区部署计划,可针对特定区域内的数据库实例提供更杰出的可用性与持久性,同时带来高效劫难复原解决方案。当然,一部分运行要害工作数据库的客户心愿本人的劫难复原配置可能逾越多个区域,以满足非凡的业务需要。此外,这些客户还心愿利用劫难复原的投资来解决某些只读生产工作负载。

当初,大家曾经能够任选以下办法,为您的 Amazon RDS for Oracle 建设起自我管理型劫难复原解决方案:

1. 应用数据库快照为 Amazon RDS for Oracle 建设起低成本、跨区域的劫难复原计划。对于更多详细信息,请参阅 应用数据库快照与 Amazon Lambda 在 Amazon RDS for Oracle 上建设跨区域主动劫难复原机制

2. 应用亚马逊云科技 数据库迁徙服务(Amazon Database Migration Service,简称 Amazon DMS)为 Amazon RDS for Oracle 建设劫难复原机制。对于更多详细信息,请参阅 应用 Amazon DMS 在 Amazon RDS for Oracle 上建设劫难复原机制

3. 应用 Oracle GoldenGate 在 Amazon RDS for Oracle 上部署跨区域劫难复原机制。对于更多详细信息,请参阅应用 Oracle GoldenGate 在 Amazon RDS for Oracle 上实现跨区域劫难复原机制。

  • 应用数据库快照与 Amazon Lambda 在 Amazon RDS for Oracle 上建设跨区域主动劫难复原机制
    https://aws.amazon.com/cn/blo…
  • 应用 Amazon DMS 在 Amazon RDS for Oracle 上建设劫难复原机制
    https://aws.amazon.com/cn/blo…
  • 应用 Oracle GoldenGate 在 Amazon RDS for Oracle 上实现跨区域劫难复原机制
    https://aws.amazon.com/cn/blo…

借助 Amazon RDS for Oracle 区域内与跨区域只读正本性能,咱们能够应用 Oracle Active Data Guard 轻松创立多个只读正本。本文将探讨如何应用 Amazon RDS for Oracle 只读正本建设托管劫难复原与只读正本。此外,本文还将涵盖其余用例,例如 如何从主数据库实例中转移读取工作负载、通过只读正本服务扩大读取工作负载,以及优化读取提早等

📢  想要理解更多亚马逊云科技最新技术公布和实际翻新,敬请关注 2021 亚马逊云科技中国峰会!点击图片报名吧~

对于 Amazon RDS for Oracle 只读正本

Amazon RDS for Oracle 只读正本(分区域内与跨区域两类),在主数据库实例与物理备用数据库(只读正本)之间应用 Oracle Active Data Guard。Amazon RDS for Oracle 在主实例与只读正本之间配置异步 Data Guard 复制机制,保障只读正本处于只读模式且 Redo Apply 处于活动状态。主实例与只读正本运行在 Data Guard 最大性能模式,该模式应用日志写入器 (LGWR) 异步传输(ASYNC),而且只读正本 I / O 没有任何确认(NOAFFIRM)。在这种模式下,一旦产生的 redo 被写入在线 redo 日志,即提交相应事务。此外,redo 还会被异步写入至只读正本的 redo 日志。这套解决方案在最大水平晋升数据保护程度的同时,又不会对主数据库实例的性能造成任何影响。

依据数据库工作负载及其所生成 redo 日志的具体数量,咱们能够将 RPO 与 RTO 管制在不超过 10 分钟的工夫之内。Amazon RDS for Oracle 会在主实例与只读正本之间建设平安的通信通道,并通过平安组和访问控制列表,实现主实例和只读正本之间平安的 redo 传输。

区域内只读正本应用场景

上面来看区域只读正本的几种常见用例:

  • 转移读取工作负载——客户能够将读取工作负载从主数据库实例转移至只读正本数据库实例,借此进步运行在主数据库上的读取与写入事务的性能体现。
  • 读取工作负载横向扩大——客户最多能够创立 5 个只读正本,借此实现读取工作负载的横向扩大。
  • 可用性——客户能够将指定的只读正本晋升为新的独立数据库保障在主数据库产生故障时带来更高的可用性。

下图所示,为 Amazon RDS for Oracle 区域内只读正本的根本架构。

跨区域只读正本应用场景

上面来看跨区域只读正本的几种常见场景:

  • 托管劫难复原——应用托管劫难复原计划,客户能够将其余区域内的只读正本晋升为新的独立生产数据库。
  • 优化数据邻近度——客户能够将正本部署在更凑近应用程序用户的特定区域内,借此升高读取提早。
  • 转移读取工作负载——客户能够将读取工作负载从主数据库实例转移至只读正本数据库实例。只读正本能够部署在任意服务区域内。
  • 读取工作负载横向扩大——客户能够在任意区域中部署最多 5 个只读正本,借此实现读取工作负载的横向扩大。

下图所示,为 Amazon RDS for Oracle 跨区域只读正本的根本架构。

在 Amazon RDS 管制台上创立只读正本

Amazon RDS for Oracle 只读正本为各数据库实例提供弱小的性能与持久性。Amazon RDS 可应用源数据库实例的快照创立第二个数据库实例。要启用只读正本,大家须要首先启用主动备份选项(将备份保留周期的值设置为大于 0),并在源数据库实例上启用强制日志记录。要启用强制日志记录模式,请连贯数据库实例并输出以下代码:

exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);

对于创立只读正本以及相干限度的更多详细信息,请参阅 Oracle 数据库只读正本 限度阐明

  • 限度阐明
    https://docs.aws.amazon.com/A…

在本章节中,咱们将独特理解如何创立跨区域只读正本。

创立主(源数据库)实例。

为了单纯展现只读正本的创立过程,咱们曾经在“us-west-2”区域内创立了名为“mydbinstance”的主数据库实例,具体操作命令如下:

aws rds create-db-instance \
  --db-instance-identifier mydbinstance \
  --db-name MYDB \
  --allocated-storage 20 \
  --storage-type gp2 \
  --db-instance-class db.m5.xlarge \
  --engine oracle-ee  \
  --port 1521 \
  --backup-retention-period 1 \
  --license-model byol \
  --master-user-password XXXXXXXXXX \
  --master-username admin \
  --engine-version 19.0.0.0.ru-2020-01.rur-2020-01.r1

对于更多详细信息,请参阅 创立一个 Oracle 数据库实例,及如何连贯 Oracle 数据库实例上的数据库。当主数据库实例状态显示为 Available 后,您即可创立只读正本了(请确保在 Amazon RDS 控制台中返回 Region 局部,并选定主数据库实例)。

  • 创立一个 Oracle 数据库实例,及如何连贯 Oracle 数据库实例上的数据库
    https://docs.aws.amazon.com/A…
  • 在 Amazon RDS 控制台中,抉择 Databases。
  • 抉择 mydbinstance。
  • 在 Actions 下拉菜单中,抉择 Create read replica。

  • 在 Instance specifications 局部的 DB instance class 中,抉择 m5.xlarge。
  • 在 Multi-AZ deployment 局部,抉择 No。
  • 在 Storage type 局部,抉择 General Purpose(SSD)。

  • 在 Network & Security 局部的 Destination region 处,抉择 US East (N. Virginia)。
  • 在 Destination DB subnet group 处,抉择 default。
  • 在 Availability zone 处,抉择 No preference。
  • 在 Publicly accessible 局部,抉择 Yes。
  • 在 VPC security groups 局部,抉择 default。

  • 在 Settings 局部的 Read replica source 处,抉择 mydbinstance。
  • 在 DB instance identifier 局部,输出 mydbinstance-ro。

  • 在 Monitoring 局部的 Enhanced monitoring 处,抉择 Disable enhanced monitoring。
  • 在 Log exports 局部,勾销所有选中的日志类型。

  1. 在 Performance Insights 局部,抉择 Disable Performance Insights。
  2. 在 Maintenance 局部的 Auto minor version upgrade 处,抉择 No。

  • 抉择 Create read replica。整个创立过程大略须要 10 到 15 分钟,创立实现后您的主数据库实例将在 us-west-2 中显示为 Master。

在 Role 一栏中,读取 Replica将显示其在 us-east-1.

在 Amazon CLI 创立只读正本

另外,大家也能够在 Amazon CLI 中或者应用 create-db-instance-read-replica Amazon RDS API 创立只读正本。要在 us-east- 1 中创立跨区域只读正本(mydbinstance-ro),并在us-west-2 区域中运行主数据库实例(mydbinstance),请输出以下操作代码:

  • create-db-instance-read-replica
    https://docs.aws.amazon.com/c…
aws rds create-db-instance-read-replica \
--source-db-instance-identifier arn:aws:rds:us-west-2:xxxxxxxxxx:db:mydbinstance\
--source-region us-west-2\
--db-instance-identifier mydbinstance-ro\
--region us-east-1
-- kms-key-id  kms-key-id xxxxxxxxxx: xxxxxxxxxx:

如果您心愿在其余区域中创立加密的只读正本,则须要为指标区域指定一个 Amazon KMS 密钥。您在区域内创立的 Amazon KMS 加密密钥,将只能在该区域中应用;咱们无奈在某一区域中应用其余区域内创立的加密密钥。

连贯只读正本

您能够应用首选客户端连贯只读正本实例;本文将应用 SQL * Plus,具体如下所示。对于更多接入 Amazon RDS Oracle 数据库的详细信息,请参阅接入您的示例 Oracle 数据库 实例

  • 实例
    https://docs.aws.amazon.com/A…

要应用 SQL * Plus 接入只读正本,请输出以下操作代码:

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> set lines 250 pages 10000
SQL> show parameter db_uniq

NAME                        TYPE        VALUE
------------------------------------ -----------
db_unique_name                 string MYDB_B

SQL> select open_mode,database_role from v$database;

OPEN_MODE                DATABASE_ROLE
-------------------- ----------------
READ ONLY WITH APPLY     PHYSICAL STANDBY

监控只读正本上的复制提早

您能够在 Amazon CloudWatch 控制台、Amazon RDS 控制台、Oracle Enterprise Manager)OEM)或者 Oracle Data Guard 视图 (v$archived_log, v$dataguard_stats, v$dataguard_status) 上监控复制提早。

如果心愿在 Amazon RDS 控制台中进行监控,请在 Databases 页面下抉择您的只读正本实例。

在 Monitoring 选项卡中,搜寻 replica lag。

您也能够应用首选客户端连贯只读正本实例;本文将应用 SQL Deverloper。对于接入 Amazon RDS Oracle 数据库的更多详细信息,请参阅接入您的示例 Oracle 数据库 实例。具体操作代码如下:

  • 实例
    https://docs.aws.amazon.com/A…

您也能够在只读正本实例上运行以下查问,应用 Oracle Active Data Gurad 视图查看对于正本提早的更多详细信息。以下为应用 SQL Deverloper 并通过管理员用户连贯只读正本的输入后果:

SQL>  Select * from v$standby_event_histogram where upper(name)='APPLY_LAG';

SQL> Select name,value,datum_time,time_computed from v$dataguard_stats where upper(name)='APPLY_LAG';

晋升只读正本

一旦产生劫难,请实现以下步骤,将特定的跨区域只读正本晋升为新的独立生产数据库:

  1. 进行仍在拜访旧有生产数据库的应用程序。
  2. 保障所有可用的 redo 日志都已被正确利用于跨区域只读正本,且不存在复制滞后。
  3. 晋升该跨区域只读正本。
  4. 将应用程序指向晋升后数据库的监听器端点。
  5. 为晋升后的新独立数据库从新创立只读正本。

要手动晋升只读正本,请实现以下操作步骤:

  • 在 Databases 页面中,抉择 mydbinstance-ro。
  • 在 Actions 下拉菜单中,抉择 Promote。

  • 在 Promote Read Replica 页面中的 Enable automatic backups 地位,抉择 Yes。
  • 在 Backup retention period 局部,抉择 1 days。
  • 在 Backup window 局部,抉择 No preference。

  • 抉择 Continue。当初,您会看到确认页面。
  • 抉择 Promote Read Replica。

整个过程大略须要 5 分钟。在胜利实现后,您能够在 Amazon RDS 管制台上验证主实例与正本实例的状态。二者的角色都应显示为 Instance。

如果须要批改数据库实例标识符,您能够选定该实例并抉择 Modify。

通过 Amazon CLI 晋升只读正本

要在 Amazon CLI 上晋升只读正本,请输出以下操作代码:

aws rds promote-read-replica \
 --db-instance-identifier mydbinstance-ro\

打算内保护

无论是大降级与小降级,与引擎相干的降级操作将首先作用于主数据库实例,而后再并行将引擎降级利用于所有正本(请留神,所有正本都将在主数据库实例的保护容器期间降级实现)。对于为 Amazon RDS for Oracle 降级数据库引擎的更多详细信息,请参阅 降级 Oracle 数据库引擎

  • 降级 Oracle 数据库引擎
    https://docs.aws.amazon.com/A…

许可要求

要应用 Amazon RDS for Oracle 反对的区域内与跨区域只读正本性能,您须要应用 Oracle Database Enterprise Edition 中的自带许可(BYOL)模式,同时领有一份 Oracle Active Data Guard 选项的应用许可。在主数据库实例及各只读正本数据库实例中,您都须要 Oracle Enterprise Edition 以及 Oracle Active Data Guard 选项的应用许可。

兼容性

Amazon RDS for Oracle 反对 Oracle Enterprise Edition 的 12.1 及更高版本(从 12.1.0.2.v10 起)。

计费规范

只读正本的计费规范与规范数据库实例雷同。与规范数据库实例一样,数据库实例的每小时运行费用,由只读正本所应用的具体数据库实例类型决定。

对于跨区域只读正本,主数据库实例与只读正本数据库实例之间的往来传输数据须要计费,具体取决于源区域与指标区域之间的数据传输速率。对于实例计费、存储、数据传输以及可用区域相干的更多详细信息,请参阅Amazon RDS for Oracle 计费规范

  • Amazon RDS for Oracle 计费规范
    https://aws.amazon.com/cn/rds…

实现只读正本的高可用性

您能够启用多可用区,为运行在只读正本上的要害业务报告类工作负载提供高可用性保障。在进行多可用区故障转移时(主环境或只读正本环境),Data Guard 将主动在源与指标实例之间执行复制与重新配置,无需任何人为干涉。

以下 CLI 代码所示,为如何在只读正本上启用多可用区。

## Modify read replica: convert SAZ to MAZ:

aws rds modify-db-instance \
--db-instance-identifier mydbinstance-ro\
--apply-immediately\
-- multi-az

咱们为只读正本抉择的实例类型与存储类型,不用与主实例的实例类型与存储类型雷同。例如,您能够在区域内只读正本中应用配置较低的实例类型、大小与存储类型,只有足够解决读取工作负载即可。如果须要应用跨区域只读正本实现劫难复原,则应保障只读正本间接应用主实例的实例类型、大小与存储类型镜像,保障在将跨区域只读正本晋升至主实例后,可间接解决所有生产工作负载。

多可用区部署与只读正本

Amazon RDS for Oracle 只读正本属于 Amazon RDS 多可用区部署的一种重要补充。Amazon RDS 多可用区机制将带来高可用性与弱小的数据保护能力,区域内只读正本则负责为只读类工作负载提供可扩展性反对。跨区域只读正本在可扩展性之外,又进一步实现了劫难复原性能。再有,如果心愿在只读正本上运行要害业务报告类工作负载,则应在只读正本数据库实例上启用多可用区选项。下表所示,为 Amazon RDS 多可用区与 Amazon RDS for Oracle 只读正本之间的比拟后果:

总结

Amazon RDS for Oracle 可能在只读正本之上反对托管劫难复原与托管读取工作负载的可扩大能力。如果您身为 Oracle BYOL 客户且须要建设一套劫难复原策略,能够将您自行治理的要害工作数据库迁徙至 Amazon RDS for Oracle,借此享受托管劫难复原与只读正本带来的各种收益。

在转换为托管数据库服务模式之后,您能够应用 Amazon RDS for Oracle 托管服务提供的高可用性、劫难复原、可扩展性以及多种丰盛性能,解脱沉重的日常经营累赘。以此为根底,大家可能专一于对组织业务更为重要的事务,例如优化数据库设计、调整容量以及调整性能等等。对于 Amazon RDS for Oracle 只读正本的更多详细信息,请参阅 应用 Amazon RDS for Oracle 只读正本与 Amazon RDS 只读正本使用指南

  • 应用 Amazon RDS for Oracle 只读正本
    https://docs.aws.amazon.com/A…
  • Amazon RDS 只读正本使用指南
    https://docs.aws.amazon.com/A…

本篇作者


Sameer Malik
亚马逊云科技
首席数据库解决方案架构师


Srinagesh Battula
亚马逊云科技首席产品经理

退出移动版