首页 > 解决方案 > 避免RDS实例跨地域调用

问题描述

我正在使用一个使用 AWS RDS 数据库的 Web 应用程序,目前,它仅在印度(孟买起源)可用,现在形成,我想让它可用于多个区域(美国-俄亥俄州和孟买)。在那种情况下,是否有可能为以下场景配置我的 RDS

请求来自美国-俄亥俄州,它由俄亥俄州地区的 RDS 实例切断,请求来自印度,然后数据将由孟买地区的 RDS 实例提供服务器,两个 RDS 实例相互复制意味着两个实例都充当单个数据库

提前致谢

标签: amazon-web-servicesamazon-rds

解决方案


典型的(单服务器)数据库将所有信息保存在一个位置(例如孟买)。

您可以在另一个区域(例如俄亥俄州)添加只读副本。这会将信息复制到俄亥俄州,但俄亥俄州的副本只能用于查询(读取)数据。所有更新都需要对孟买的主数据库进行。这使得查询更快,而不需要“多个主人”。

使用 Amazon Aurora 全球数据库开始:

一个Aurora 全球数据库由一个主 AWS 区域组成,您可以在其中掌握您的数据,以及最多五个只读的辅助 AWS 区域。Aurora 以低于一秒的典型延迟将数据复制到辅助 AWS 区域。您直接向主要 AWS 区域中的主要数据库实例发出写入操作。Aurora 全局数据库使用专用基础架构来复制您的数据,使数据库资源完全可用于服务应用程序工作负载。具有全球足迹的应用程序可以使用辅助 AWS 区域中的读取器实例进行低延迟读取。万一您的数据库在 AWS 区域中降级或隔离,您可以提升其中一个辅助 AWS 区域在一分钟内完成完整的读写工作负载。

主控您的数据的主要 AWS 区域中的 Aurora 集群执行读取和写入操作。次要区域中的集群支持低延迟读取。您可以通过添加多个数据库实例(Aurora 副本)之一来独立扩展辅助集群,以服务于只读工作负载。对于灾难恢复,您可以移除和提升其中一个辅助集群以允许完整的读取和写入操作。

更进一步,您可以使用所有数据库实例都具有读写能力的 Amazon Aurora 多主集群:

多主集群中,所有数据库实例都可以执行写入操作。单个读写主实例和多个只读 Aurora 副本的概念不适用。当写入器数据库实例不可用时,不会进行任何故障转移,因为另一个写入器数据库实例可立即接管故障实例的工作。我们将这种类型的可用性称为连续可用性,以将其与单主集群提供的高可用性(故障转移期间短暂停机)区分开来。

每个选项都是性能、成本和复杂性之间的权衡。只读副本全局数据库很可能足以满足您的需求,因为大多数数据库操作是查询而不是更新

您应该对每个选项进行试验并在您的应用程序上运行性能测试,以确认您正在实现所需的性能。此外,查看相关成本(由于拥有多台服务器,这可能会翻倍,另外两个区域之间的数据传输也会产生额外成本)。

另外,请注意,上述功能会因您选择的数据库引擎而异。(以上适用于运行 MySQL 的 Amazon Aurora。)


推荐阅读