使用 Amazon RDS 代理和具有两个可读备用数据库的 Amazon RDS Multi-AZ 部署,在停机时间不超过 1 秒的情况下执行次要版本升级

使用 Amazon RDS 代理和具有两个可读备用数据库的 Amazon RDS Multi-AZ 部署,在停机时间不超过 1 秒的情况下执行次要版本升级

💡 原文中文,约3200字,阅读约需8分钟。
📝

内容提要

Amazon RDS多AZ部署现在支持次要版本升级和系统维护更新,停机时间通常只需1秒或更短。此新功能允许两个备用节点提供读取流量,提高性能。通过将RDS Proxy与多AZ部署结合使用,可以进一步将补丁或升级期间的停机时间缩短至1秒或更短。按照提供的步骤设置RDS Proxy与多AZ DB集群。

🔎

延伸解读

停机时间从35秒到1秒的关键

文章指出,Amazon RDS Multi-AZ数据库集群执行次要版本升级时,停机时间通常不超过35秒,其中大部分时间消耗在集群端点的DNS传播延迟上。而RDS代理能够直接感知读取器和写入器角色的变化,不依赖DNS传播,因此可将停机时间进一步缩短至1秒或更短。这一对比说明,对于停机时间敏感的应用程序,引入RDS代理是有效的优化手段。

RDS代理的额外收益:连接管理

除了缩短停机时间,RDS代理还提供连接入池和连接多路复用功能。连接入池让应用程序将原本用于TCP/TLS握手和身份验证的资源转而执行更多查询;连接多路复用则确保无论应用建立多少连接,代理只与数据库实例保持所需数量的连接。这两项功能有助于在相同应用连接数下降低数据库资源消耗,提升整体效率。

快速失效转移与CNAME缓存问题

文章提到,RDS代理能缩短失效转移后的客户端恢复时间。原因之一是应用程序与代理保持TCP连接,而代理处理底层主机的IP变化。此外,某些Java应用会缓存集群端点的CNAME超过TTL,导致失效转移后仍连接旧写入器。使用RDS代理后,CNAME无需更改,从而避免了这一问题。这些细节表明,RDS代理在故障场景下也能提供更稳定的连接体验。

设置与清理的注意事项

文章给出了使用新集群或现有集群设置RDS代理的步骤。新集群可在创建数据库时直接选择创建RDS代理,并自动生成Secrets Manager密钥和IAM策略;现有集群则需手动创建代理并指定目标集群、密钥和IAM角色。完成测试后,务必清理不再使用的资源,具体可参考AWS文档中关于RDS代理、Multi-AZ集群、IAM策略和Secrets Manager密钥的说明。

❓

Q&A

Amazon RDS Multi-AZ 部署的主要特点是什么?

Amazon RDS Multi-AZ 部署由一个主数据库实例和两个可读备用数据库实例组成,支持次要版本升级和系统维护更新,停机时间通常为1秒或更短。

如何使用 RDS 代理优化 Amazon RDS 的性能?

RDS 代理通过连接入池、连接多路复用和快速失效转移来优化数据库资源,减少数据库服务器的负担。

在进行次要版本升级时,停机时间如何减少到1秒?

通过使用 RDS 代理,应用程序可以直接感知读取器和写入器角色的变化,避免了DNS传播延迟,从而将停机时间缩短至1秒或更短。

设置 RDS 代理与 Amazon RDS Multi-AZ DB 集群的步骤是什么?

在 Amazon RDS 控制台上创建数据库,选择多可用区数据库集群,并在连接选项中选择创建 RDS 代理。

RDS 代理如何解决DNS传播延迟的问题?

RDS 代理维护与数据库的连接,避免了应用程序因缓存集群端点而无法连接新写入器的问题,从而解决了DNS传播延迟。

使用 Amazon RDS Multi-AZ DB 集群的优势有哪些?

使用 Amazon RDS Multi-AZ DB 集群可以实现高可用性、减少停机时间,并通过可读备用数据库提高读取性能。

🏷️

标签

➡️

继续阅读