暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Amazon Aurora Serverless v2:支持缩放到0容量的新特性介绍

通讯员 2024-11-26
426

2024年11月,Amazon Web Services(AWS)宣布了Amazon Aurora Serverless v2的全新功能,该功能允许数据库容量缩放到0个Aurora容量单位(ACUs),这使得用户能够在数据库非活跃期间优化成本。Aurora Serverless是一种按需自动扩展的Aurora配置,它能够根据您的工作负载需求自动调整数据库容量。

Aurora Serverless以Aurora容量单位(ACUs)计量数据库容量,按秒计费。1个ACU大约包含2 GiB的内存以及相应的CPU和网络资源,与Aurora预置实例中使用的资源类似。随着这一新功能的发布,以及最近推出的最大容量256 ACUs,您的无服务器实例现在可以在0 ACUs到256 ACUs之间进行扩展。

在本文中,我们将向您展示如何在 0 ACU 的情况下使用自动暂停和恢复功能,以帮助您在数据库处于非活动状态期间节省成本。

解决方案概述

在0 ACUs的状态下,Aurora Serverless v2数据库实例在一段时间的非活跃后可以自动暂停。如果指定时间内没有用户活动发起的连接,Aurora将暂停Aurora Serverless v2实例。在暂停期间,由于数据库处于0 ACUs状态,因此不会收取计算费用,但您仍需支付存储费用。当首次请求连接时,数据库将自动恢复并扩展以满足应用程序需求。数据库恢复可能需要最多15秒。恢复后,数据库将按每秒ACU计费。

自动暂停和恢复功能有助于管理没有严格服务级别目标的应用程序的成本。对于可以容忍大约15秒恢复时间的工作负载,您可以在以下情况下使用此功能:

  • 用于开发和测试的集群
  • 在数据库恢复期间可以接受冷启动的应用程序

先决条件

要使用此功能,您应该具备以下条件:

  1. AWS账户
  2. 运行Amazon Aurora PostgreSQL兼容版:
    • 16.3及更高版本
    • 15.7及更高版本
    • 14.12及更高版本
    • 13.15及更高版本

或者,您也可以使用运行3.08.0或更高版本的Amazon Aurora MySQL兼容版。

设置

您可以在创建数据库时或通过修改现有集群来配置自动暂停功能。

通过将最小容量设置为0 ACUs来启用自动暂停功能,并且可以在集群级别进行配置。

当您选择0 ACUs作为最小容量时,还可以指定实例在自动暂停前可以空闲的时间长度(非活跃后的周期)。您可以指定在暂停开始前的延迟周期为300秒(5分钟)到86,400秒(24小时)之间,期间没有数据库流量。

图片.png

您还可以使用 AWS Command Line Interface (AWS CLI) 创建启用了自动暂停功能的 Aurora 集群。请参阅以下代码:

aws rds create-db-cluster \
--db-cluster-identifier my-serverless-v2-cluster \
--region us-east-1 \
--engine aurora-postgresql \
--engine-version 16.3 \
--serverless-v2-scaling-configuration MinCapacity=0,MaxCapacity=4,SecondsUntilAutoPause=600 \                           
--master-username myuser \
--manage-master-user-password

将最小容量设置为 0.5 或更大将禁用自动暂停功能。

暂停Aurora Serverless v2实例

当Aurora Serverless v2实例自动暂停时,实例状态显示为“可用”,但该实例的费用将被暂停。在AWS成本探索器中的_ServerlessV2Usage_指标或Amazon CloudWatch中的_ACUUtilization_指标在实例暂停期间的值为0。

  • 当指定的延迟周期过去且没有连接到实例时,Aurora开始暂停实例,无论实例当时有多少ACUs。

    当实例暂停时,它将停止写入数据库日志文件。它也停止向CloudWatch发送指标。在实例暂停期间,唯一发送到CloudWatch的指标是_CPUUtilization_和_ACUUtilization_显示0%,以及_ServerlessDatabaseCapacity_为0。

    此外,Aurora不会通过Amazon RDS性能洞察或增强监控收集该实例的监控信息。

  • 当Aurora Serverless v2数据库实例开始暂停、完成暂停以及如果暂停机制被中断或不成功时,Aurora会发出集群级别的事件。

图片.png

在某些情况下,Aurora Serverless v2 实例不会自动暂停:

如果用户启动的连接处于打开状态,则实例不会自动暂停

  • 如果 Aurora PostgreSQL 集群启用了逻辑复制,或者 Aurora MySQL 集群启用了二进制日志复制,则写入器实例不会自动暂停。
  • 如果您的 Aurora 集群通过 Amazon RDS 代理具有关联的代理,则该代理将保持与集群中每个数据库实例的开放连接,并且该实例不会自动暂停。
  • 如果您的集群是 Aurora 全局数据库中的主集群,则 Aurora 不会自动暂停 Aurora Serverless v2 写入器实例。
  • 如果您的集群是 Aurora 全局数据库中的辅助集群,则 Aurora 不会自动暂停 Aurora Serverless v2 读取器实例。

恢复暂停的实例

当启用自动暂停功能时,Aurora Serverless v2实例在以下条件下自动恢复:

  • 当集群未停止,您连接到已暂停的Aurora Serverless v2实例时,无论连接尝试是否成功,实例都会自动恢复。

  • 每当写入实例自动恢复时,具有故障转移等级0和1的读取实例也会恢复。当您连接到它、使用RDS数据API向集群发送请求或修改实例时,写入实例将自动恢复。

  • 当您连接到读取端点,并且它连接的读取实例已暂停时,以下实例也会恢复:

    • 写入实例
    • 读取实例
    • 故障转移等级为0和1的其他读取实例
  • 当您在Aurora MySQL兼容版中执行回溯请求时,实例恢复。

  • 当您创建Aurora克隆时,实例自动恢复。

  • 当在维护窗口期间需要执行维护任务时,实例自动恢复。

  • 当集群故障转移到已暂停的Aurora Serverless v2实例时,实例自动恢复。

  • 当您更改集群属性时,例如:

    • 更改DB集群参数组中的参数值
    • 更改DB实例参数组中的参数值
    • 更改集群的扩展范围
    • 升级集群的引擎版本
    • 从已暂停的Aurora Serverless v2实例描述或下载日志文件
    • 启用或禁用性能洞察

    Aurora在每个Aurora Serverless v2数据库实例开始恢复和完成恢复时发出集群级别的事件。

图片.png

当Aurora Serverless v2实例恢复时,它不会在自动暂停之前的相同ACU下恢复。一旦实例恢复,它将根据工作负载的需求进行扩展。

在DB实例完成恢复后建立请求的连接。恢复过程少于15秒,因此我们建议您将客户端超时设置(connectTimeout_和_sslResponseTimeout)调整为超过15秒。我们还建议为具有自动暂停和恢复功能的Aurora集群实现重试逻辑。

部署模式

您可以根据用例的高可用性、快速响应和可扩展性要求,设置具有启用自动暂停和恢复功能的Aurora Serverless v2的不同集群配置。在本节中,我们讨论了一些可能的集群配置。

对于开发和测试环境,您可以设置一个单可用区(AZ)的DB集群,其中包含一个Aurora Serverless v2 DB实例。该单一实例处理读写请求。当集群没有连接时,DB实例自动暂停。此时,您集群的DB实例计算成本也将暂停。您仍需支付存储费用。

图片.png

对于运行应用程序的系统,如果高可用性是首要考虑,但集群仍然有完全空闲的时期,您可以设置一个多AZ集群,其中写入和读取DB实例都是最小ACU为0的Aurora Serverless v2。将读取故障转移等级设置为0,以便读取实例跟随写入实例的容量。

图片.png

如果您的系统集群始终处于活动状态,但有一些最小活动量,并要求数据库连接更快响应,您可以设置一个自定义端点,其中包括具有更高故障转移提升等级的Aurora Serverless v2实例。这允许您将对延迟不敏感的只读会话定向到可以自动暂停的读取器。由于写入器始终有一些最小活动,写入器和故障转移优先级为零的读取器不会自动暂停。

图片.png

您还可以为写入实例和故障转移优先级0或1的读取实例使用预置实例,以便它们永远不会暂停,并且始终可用于处理数据库流量和执行故障转移。这种配置还允许您管理成本,并拥有可以根据读取流量自动暂停的额外读取实例。

图片.png

考虑事项

使用0 ACUs作为最小容量以启用Aurora Serverless v2的自动暂停和恢复功能时,请考虑以下几点:

  • 故障转移优先级为0和1的读取实例遵循写入实例的行为。如果写入实例自动暂停,这些读取器也将暂停。同样,如果暂停的写入实例自动恢复,这些读取器也将恢复。
  • Aurora全球数据库次要集群中的Aurora Serverless v2实例不会自动暂停。在主集群中,写入实例不会暂停,但如果没有连接,故障转移提升等级为2-15的读取实例可以自动暂停。
  • 与Amazon Redshift相关联的零ETL集成的集群中的实例不会自动暂停。
  • Aurora Serverless v2不会为特定于引擎的计划任务自动恢复暂停的实例,例如PostgreSQL autovacuum、PostgreSQL pg_cron扩展或MySQL事件调度器中的任务。
  • 当读取端点随机选择一个读取实例进行连接时,该读取实例可能已经处于活动状态,也可能已暂停。因此,访问读取实例的时间可能会有所不同,并且更难以预测。使用Aurora Serverless v2和自动暂停功能的多AZ集群可能会从为特定只读用例设置自定义端点中受益,而不是将所有只读会话定向到读取端点。

结论

在本文中,我们讨论了如何通过将最小容量设置为0 ACUs来启用Aurora Serverless v2的自动暂停和恢复功能,这允许您在数据库非活跃期间节省成本。我们讨论了允许实例自动暂停或恢复的条件,以及可能阻止实例缩放到0 ACUs的因素。

要了解更多关于Aurora Serverless v2中自动暂停功能的信息,请参阅Aurora Serverless v2的自动暂停和恢复文档

关于作者

Jason Pedreza 是AWS的高级数据库解决方案架构师,拥有处理PB级数据的经验。他专注于托管PostgreSQL,并帮助客户构建可扩展的数据库解决方案。

Anum Jang Sher 是Amazon Aurora团队的产品经理。她热衷于为客户构建令人愉悦的可扩展、成本效益高和高可用性的数据库解决方案体验。在目前的职位上,她致力于理解客户需求,并将它们转化为创新功能,以增强Amazon Aurora。

最后修改时间:2024-11-26 11:25:40
文章转载自通讯员,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论