增加 AWS RDS 存储需要停机吗?

增加 AWS RDS 存储需要停机吗?

我希望增加两个 RDS 实例的存储空间(仅分配存储空间,而不是实例类型或其他参数)。文档位于https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.ModifyingExisting建议:

您可以从标准存储更改为预配置 IOPS 存储,或者从预配置 IOPS 更改为标准存储,以及增加存储,而几乎无需停机。

我肯定会在执行更改之前安排一个维护时段。但文档在这方面似乎有点含糊。对于以前可能做过这件事的人来说,“几乎没有停机时间”是什么意思?我可以期待 5 秒钟还是更像是 5 分钟?

2019 年 7 月更新:

我已更新指向正确且更新的 AWS 文档(已损坏)的链接。较新的文档有一个简介,也有助于回答原始问题:

在大多数情况下,扩展存储不需要任何中断,也不会降低服务器的性能。修改数据库实例的存储大小后,数据库实例的状态为存储优化。修改存储后,数据库实例即可完全运行。但是,在六个小时内或数据库实例状态为存储优化时(以较长时间为准),您无法进行进一步的存储修改。

但是,如果您有一个 SQL Server 数据库实例,并且自 2017 年 11 月以来没有修改过存储配置,则会出现特殊情况。在这种情况下,当您修改数据库实例以增加分配的存储时,可能会遇到几分钟的短暂中断。中断后,数据库实例处于在线状态,但处于存储优化状态。存储优化期间性能可能会下降。

答案1

首先,请注意,你可能正在查看错误的操作——你描述想要更改存储尺寸,但引用了描述存储的文档类型。这是一个重要的区别:RDS 建议您不会因更改存储大小而遇到中断,但会因更改存储类型而遇到中断。

改变存储大小会导致性能下降,其持续时间和影响取决于以下几个因素:

  • 您的 RDS 实例类型
  • 配置
  • 维护期间会发生这种情况吗?
  • 这些变化会首先发生在您的多可用区从属服务器上,然后发生故障转移吗?
  • 当前数据库大小
  • 候选数据库大小
  • AWS 有能力在您请求的时间、在您请求的可用区域、在您请求的区域处理此请求
  • 发动机类型(用于Amazon Aurora 用户,存储添加由 RDS 按需以 10 GB 为增量进行管理,因此此讨论毫无意义)

考虑到这一点,您最好自己在您的环境中按照自己的条件进行测试。尝试以下操作:

  • 从现有实例的快照恢复新的 RDS 实例,并在新的克隆上执行此操作。
  • 使用这个克隆:
    • 在一天中的不同时间增加大小,此时您预计 AWS 上的负载会有所不同。
    • 增大至不同的尺寸。
    • 尝试使用多可用区。看看与不启用多可用区相比,您的实际停机时间是否有变化。
    • 在维护窗口期间尝试,并将其与立即应用更改进行比较。

这会花费更多一点(没必要...你可以在 1-3 个实例小时内完成大部分工作),但你会得到一个比在无数不同的 RDS 环境中兜售我们的经验更清晰的答案。

如果您仍在寻找“大概”的答案,我建议您至少计划在几分钟而不是几秒的范围内降低性能 - 这再次在很大程度上取决于您的环境和配置。

作为参考,我最近在星期六下午(美国东部时间)应用了此操作,将 10GB 添加到 40GB db.m1.small 类型的实例中。该实例处于“正在修改”状态约 17 分钟。请注意,修改状态并不表示真正的停机时间,而是操作执行的持续时间。您将无法对实际实例应用其他更改(尽管您仍然可以访问数据库本身),这也是您可以预期发生性能下降的持续时间。

笔记 :如果您只打算更改存储大小,则可能发生意外中断,但请注意,如果此更改与以下操作同时进行,则可能会发生中断其他操作比如改变实例标识符/类或存储类型。

答案2

由于您仅增加存储大小而不更改实例类型或其他任何内容,因此不应该有任何停机时间,但在执行操作时可能会出现“性能下降”。

您引用的参考资料含糊不清,因为它在讨论更改存储大小的同时还讨论了更改存储类型。如果您查看此处表格中的“已分配存储”:

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html

你会发现它只说“性能可能会下降”,而没有提到中断(它说在切换存储类型时有时会发生中断)。

作为参考,在工作日期间,当我在 eu-west-1 将 15GB db.m3.medium MySQL 数据库更改为 20GB 时,我的应用程序与数据库的连接没有中断。但是,读写 IOPS 都增加到 400-700/s 之间,持续了不到 20 分钟,因此我猜想这是性能下降的参考。单可用区和多可用区数据库实例均报告了此情况。(该实例被报告为“修改”的时间比这稍长——大约 25 分钟。)

当然,您可以在生产数据库实例上执行此操作之前,先在与生产数据库相同的数据库实例上进行尝试,这样您就可以在实际执行之前安全地查看它在您的情况下的行为。

相关内容