停止增加RDS存储?

我正在寻找增加两个RDS实例的存储(只是分配的存储空间,而不是实例types或其他参数)。 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.Storage.html上的文档build议:

您可以从标准存储更改为预置IOPS存储,或从预置IOPS更改为标准存储,还可以增加存储量,几乎不会停机。

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

首先,请注意,您可能正在查看不正确的操作 – 您描述了要更改存储大小 ,但具有描述存储types的引用文档。 这是一个非常重要的问题:RDSbuild议您不要因为更改存储大小而中断服务,但会发生更改存储types的中断。

预计存储容量的变化会降低性能,其持续时间和影响取决于以下几个因素:

  • 您的RDS实例types
  • 组态
    • 这将在维护过程中发生吗?
    • 这些更改是否会首先发生在多可用区从属设备上,然后进行故障切换?
  • 当前数据库大小
  • 候选数据库大小
  • AWS有能力在您要求的地区,根据您要求的可用性区域,在您要求的时间处理此请求
  • 引擎types(对于Amazon Aurora用户 ,存储添加由RDS根据需要以10 GB为增量进行pipe理,因此此讨论没有实际意义)

考虑到这一点,你可以通过自己testing,在你的环境和你的条件下更好的服务。 尝试尝试以下内容:

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

这样做会花费更多的钱(不需要……你可以在1-3个小时内完成大部分工作),但是你会得到一个更清晰的答案,而不是兜售我们在众多不同RDS上的经验环境。

如果你仍然在寻找一个“球场”的答案,我会build议至less要在几分钟而不是几秒钟的时间内降低性能 – 这又要非常依赖于你的环境和configuration。

作为参考,我最近应用了这个确切的操作,在星期六下午(美国东部时间)将10GB添加到一个40GB的db.m1.smalltypes实例。 实例保持“修改”状态大约17分钟。 请注意,修改状态不会描述真正的停机时间,而是描述操作正在进行的持续时间 。 您将无法对实际实例应用其他更改(尽pipe您仍然可以访问数据库本身),这也是您可以预期会发生任何性能下降的持续时间。

如果您只打算更改存储大小,则意外停机,但请注意,如果此更改是与更改实例标识符/类或存储types等其他操作一起进行的,则可能会发生此情况。

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

您所引用的参考文献是不明确的,因为它讨论了在讨论更改存储大小的同时更改存储types。 如果您在这里查看表格中的“分配存储”:

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

你会发现它只是说“性能可能会下降”而没有任何关于中断(它说,在某些情况下,当切换存储types时)。

作为参考,当在工作日中将15GB的db.m3.medium MySQL数据库更改为20GB的eu-west-1时,我的应用程序与数据库的连接不中断。 然而,在20分钟内,读/写IOPS都增加到400-700 / s之间,因此提到性能下降。 这是针对单可用区和多可用区数据库实例的报告。 (实例被报告为“修改”比这个更长一点 – 约25分钟。)

当然,你可以在生产数据库实例上使用与生产数据库相同的数据库实例,然后在生产数据库实例上进行试验,以便在实际操作之前可以安全地看到它的行为。