为啥 AWS RDS Aurora 在默认情况下已经跨不同区域进行复制时具有“多可用区部署”选项?

Posted

技术标签:

【中文标题】为啥 AWS RDS Aurora 在默认情况下已经跨不同区域进行复制时具有“多可用区部署”选项?【英文标题】:Why does AWS RDS Aurora have the option of "Multi-AZ Deployment" when it does replication across different zones already by default?为什么 AWS RDS Aurora 在默认情况下已经跨不同区域进行复制时具有“多可用区部署”选项? 【发布时间】:2015-11-05 17:31:36 【问题描述】:

启动 Aurora 实例时,我有“多可用区部署”选项,它描述为“指定数据库实例是否应在另一个可用区部署备用数据库。”

但是 Aurora 文档指出 Aurora 已经自动将数据库分散到不同的可用区?

另外,Aurora 多可用区备用和普通 Aurora 副本有什么区别。是不是普通副本可以读取提高性能而备用无法读取?

【问题讨论】:

【参考方案1】:

AWS 管理控制台。 答案很简单。 您可以在管理控制台中创建多可用区,也可以忽略它。无论如何,Amazon Aurora 的共享存储跨越三个 AZ(多可用区),因为它是 Amazon Aurora 的功能,但是如果我们选择多可用区选项,那么我们还将拥有您的 Amazon Aurora 实例在多个可用区中。

因此您应该选择Amazon console image 选项

【讨论】:

【参考方案2】:

Aurora 在存储层跨三个可用区复制您的数据...但数据库服务器实例本身仍然是运行在单个物理机上的虚拟机,该物理机位于单一可用区。

Aurora 存储层在该实例之外,即使在最多丢失两个 AZ 的情况下也能够让访问继续不间断而不会丢失数据,但是包含 db 实例的区域丢失仍然会导致如果您的集群中只有一个 Aurora 实例(1 个主实例,0 个副本),则为您中断。丢失整个可用区是极不可能但并非不可能的事情之一。当您只有一个时,您的数据库实例仍然是单点故障。

多可用区允许一个完整的冗余数据库实例在不同的可用区中,如果它按设计工作,它将在一分钟内自动接管主实例,以防托管主实例的可用区丢失或主实例的灾难性故障。它是第二个虚拟机,在第二个物理机上,在第二个可用区。它一直在运行,但您无法访问它。它在后台,由 RDS 基础设施管理和监控,但只有在主实例故障的情况下,您才能访问它。辅助机器还可用于在主要机器发生软件升级或维护事件时减少停机时间。发生故障转移时,如果您使用 DNS 连接到您的数据库(您应该这样做),您会发现 DNS 条目自动指向辅助数据库。

将此与只读副本进行对比,该副本始终可以访问,因此可以通过允许卸载读取来提供显着的性能优势。故障转移到副本涉及将其提升为独立的主服务器(将其与之前的主服务器永久分离)并重新配置您的应用程序以使用备用端点。当然,这仍然比使用时间点快照创建替换主实例从主实例中的故障恢复更快。

https://aws.amazon.com/rds/details/multi-az/

【讨论】:

谢谢。这只是消除了我的很多误解。 这是错误的。每个极光副本都有多个实例。参考docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Aurora.html @PPrasad 您误解了文档。 Auroras 副本“使您能够在多个复制实例上扩展数据的读取工作负载,以提高数据读取性能并提高 Aurora 数据库集群中数据的可用性” 每个副本由多个实例组成; “多个复制实例”仅意味着您可以创建多个副本。一个副本 = 一个实例。 “但是包含数据库实例的区域丢失仍然会导致您中断”:这并不完全正确。这将使副本实例之一成为主实例,因此中断仅限于将副本转换为主实例所需的时间,通常小于 1 分钟。即使是多可用区,这种切换延迟也适用 @P.Prasad,这是对我在问题背景下的陈述的误解。如果您的实例是您拥有的唯一实例,那么丢失您的实例仍会导致中断。我已经编辑了相关部分,以澄清。【参考方案3】:

Aurora 中的存储跨三个可用区进行复制。数据库头节点是单个实例。因此,虽然您的数据分布在多个目标上,但头节点却不是。

当您启用多可用区部署时,我们会创建一个可用作故障转移目标的 Aurora 只读副本。您创建的任何 Aurora 只读副本(目前最多 15 个)也可用作故障转移目标。

多可用区和其他 Aurora 副本之间没有任何有意义的区别。这主要是为习惯于将多可用区用于其他 RDS 引擎的客户简化用户界面。

【讨论】:

所以...如果您选择多可用区,Aurora 只是在另一个任意区域中为您创建一个只读副本?这相当于不选择 Multi-AZ,而只是在另一个 AZ 中手动创建只读副本,然后有效地使您的 Aurora 实例成为 Multi-AZ,即使您没有在 UI 中选择它? 我也想了解一下这个案例。我不明白我是否可以进行具有 0 个只读副本的多可用区部署。我不想为我不会使用的复制品付费。我只需要一个备用副本以防发生灾难,但我对我拥有的选项感到困惑。

以上是关于为啥 AWS RDS Aurora 在默认情况下已经跨不同区域进行复制时具有“多可用区部署”选项?的主要内容,如果未能解决你的问题,请参考以下文章

导入 AWS RDS Aurora 5.7 是不是适用于 v0.11.7?

AWS RDS Aurora - 如何使用 PgAdmin 进行连接?

无法公开 AWS Aurora Postgres RDS

Terraform,AWS RDS aurora mysql serverless 异常“找不到源集群”

AWS Aurora RDS 中的集群和实例有啥区别

如何将 AWS RDS Aurora MySQL 5.6 升级到 5.7