泛滥亚马逊云科技用户都在应用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 – ProductionWith the Partitioning, OLAP, Advanced Analytics and Real Application Testing optionsSQL> set lines 250 pages 10000SQL> show parameter db_uniqNAME                        TYPE        VALUE------------------------------------ -----------db_unique_name                 string MYDB_BSQL> 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
亚马逊云科技首席产品经理