

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 通过使用兼容 PostgreSQL 的 Aurora 全局数据库来模拟 Oracle 灾难恢复
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database"></a>

*HariKrishna Boorgadda，Amazon Web Services*

## Summary
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-summary"></a>

企业灾难恢复 (DR) 的最佳实践基本上包括设计和实施容错硬件和软件系统，这些系统可以在灾难中幸存下来（*业务连续性*）并恢复正常运营（*业务恢复*），干预最少，理想情况下不会丢失数据。构建容错环境以满足企业灾难恢复目标，这可能既昂贵又耗时，并且需要企业的坚定承诺。

Oracle Database 提供了三种不同的灾难恢复方法，与任何其他保护 Oracle 数据的方法相比，这些方法可提供最高级别的数据保护和可用性。
+ Oracle 零数据丢失恢复设备
+ Oracle Active Data Guard
+ 甲骨文 GoldenGate

这种模式提供了一种使用 Amazon Aurora 全球数据库模拟 Oracle GoldenGate 灾难恢复的方法。参考架构使用 Oracle 在三个 AWS 区域 GoldenGate 进行灾难恢复。该模式将源架构重塑为基于 Amazon Aurora PostgreSQL–Compatible Edition 的云原生 Aurora 全局数据库。

Aurora 全局数据库专为遍布全球的应用程序而设计。一个 Aurora 数据库跨越多个 AWS 区域以及多达五个辅助区域。Aurora 全局数据库提供以下功能：
+ 物理存储级复制
+ 低延迟全局读取
+ 从区域范围内的中断中快速灾难恢复
+ 快速跨区域迁移
+ 跨区域复制延迟低
+ Little-to-no 对数据库的性能影响

有关 Aurora 全局数据库功能和优势的更多信息，请参阅[使用 Amazon Aurora 全局数据库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-overview)。有关计划外和托管失效转移的更多信息，请参阅[在 Amazon Aurora Global Database 中使用失效转移](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-disaster-recovery.html#aurora-global-database-failover)。

## 先决条件和限制
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account 
+ 用于应用程序连接 Java 数据库连接 (JDBC) PostgreSQL 驱动程序
+ Aurora 全局数据库基于 Amazon Aurora PostgreSQL-Compatible Edition
+ 基于 Aurora PostgreSQL-Compatible 的 Oracle Real Application Clusters (RAC) 数据库迁移到 Aurora 全局数据库

**Aurora 全局数据库的限制**
+ Aurora 全局数据库不适用于所有 AWS 区域。有关支持的区域列表，请参阅 [含 Aurora PostgreSQL 的 Aurora 全局数据库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.GlobalDatabase.apg)。
+ 有关不支持的功能和 Aurora 全局数据库的其他限制的信息，请参阅 [Amazon Aurora 全局数据库的限制](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database.limitations)。

**产品版本**
+ Amazon Aurora PostgreSQL–Compatible Edition 10.14 或更高版本

## 架构
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-architecture"></a>

**源技术堆栈****  **
+ Oracle RAC 四节点数据库
+ 甲骨文 GoldenGate

**源架构******

下图显示了使用 Oracle 在不同的 AWS 区域中使用四节点 Oracle RAC 复制的三个集群。 GoldenGate

![Oracle RAC 位于一个主要区域和两个次要区域。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/9fc740fc-d339-422e-beaf-1f65690c9d14.png)


**目标技术堆栈**
+ 基于 Aurora PostgreSQL–Compatible 的三集群 Amazon Aurora Global Database，其中一个集群位于主区域，两个集群位于不同的辅助区域

**目标架构**

![Amazon Aurora 位于一个主要区域和两个次要区域。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/11d4265b-31af-4ebf-a766-24196193ee01/images/8e3deca9-03f2-437c-9341-795ac17e2b42.png)


## 工具
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-tools"></a>

**Amazon Web Services**
+ [Amazon Aurora PostgreSQL 兼容版](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)是一个完全托管的、与 ACID 兼容的关系数据库引擎，可帮助您建立、运行和扩展 PostgreSQL 部署。
+ [Amazon Aurora 全局数据库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html)跨越多个 AWS 区域，可实现低延迟的全局读取，并可从可能影响整个 AWS 区域 的罕见停机事件中快速恢复。

## 操作说明
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-epics"></a>

### 通过读取器数据库实例添加区域
<a name="add-regions-with-reader-db-instances"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 连接一个或多个 Aurora 辅助集群。 | 在 AWS 管理控制台 上，选择 Amazon Aurora。选择主集群，选择**操作**，然后从下拉列表选择**添加区域**。 | 数据库管理员 | 
| 选择实例类。 | 您可更改辅助集群的实例类。但是我们建议将其与主集群实例类保持相同。 | 数据库管理员 | 
| 添加第三个区域。 | 重复此操作说明中的步骤，在第三个区域中添加集群。 | 数据库管理员 | 

### 对 Aurora 全局数据库进行失效转移
<a name="fail-over-the-aurora-global-database"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 从 Aurora 全局数据库删除主集群。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database.html) | 数据库管理员 | 
| 重新配置应用程序，以使写入流量转向新提升的集群。 | 使用新升级的集群的端点修改应用程序中的端点。 | 数据库管理员 | 
| 停止向不可用的集群发出任何写操作。 | 停止您删除的集群的应用程序和任何数据操作语言 (DML) 活动。 | 数据库管理员 | 
| 创建一个新的 Aurora 全局数据库。 | 现在您可以创建一个 Aurora 全局数据库，并将新提升的集群用作主集群。 | 数据库管理员 | 

### 启动主集群
<a name="start-the-primary-cluster"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 从全局数据库中选择要启动的主集群。 | 在 Amazon Aurora 控制台的全局数据库设置，选择主集群。 | 数据库管理员 | 
| 启动集群。 | 在**操作**下拉列表，选择**开始**。此过程可能需要一些时间。操作完成后，刷新屏幕以查看状态，或者在**状态**列中查看集群的当前状态。 | 数据库管理员 | 

### 清理资源
<a name="clean-up-the-resources"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 删除剩余辅助集群。 | 失效转移试点完成后，从全局数据库中删除辅助集群。 | 数据库管理员 | 
| 删除主集群。 | 删除集群。 | 数据库管理员 | 

## 相关的资源
<a name="emulate-oracle-dr-by-using-a-postgresql-compatible-aurora-global-database-resources"></a>
+ [使用 Amazon Aurora 全局数据库](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html#aurora-global-database-detaching)
+ [使用 Amazon Aurora Global Database 的 Aurora PostgreSQL 灾难恢复解决方案](https://aws.amazon.com/blogs/database/aurora-postgresql-disaster-recovery-solutions-using-amazon-aurora-global-database/)（博客文章）