我希望增加两个 RDS 实例的存储(只是分配的存储空间,而不是实例类型或其他参数)。https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.ModifyingExisting上的文档建议:
您可以从标准存储更改为预置 IOPS 存储,或从预置 IOPS 更改为标准存储,以及增加存储,几乎没有停机时间。
我肯定会在执行更改之前安排一个维护窗口。但是该领域的文档似乎有些含糊。对于以前可能这样做过的人来说,什么是“几乎没有停机时间”?我可以期待 5 秒还是更像 5 分钟?
2019 年 7 月更新:
我已更新指向正确和更新的 AWS 文档的链接(已损坏)。较新的文档有一个有助于回答原始问题的简介:
在大多数情况下,扩展存储不需要任何中断,也不会降低服务器的性能。修改数据库实例的存储大小后,数据库实例的状态为 Storage-optimization。数据库实例在存储修改后可完全运行。但是,您不能在 6 小时内或当数据库实例状态为存储优化时进行进一步的存储修改,以较长者为准。
但是,一个特殊情况是,如果您有一个 SQL Server 数据库实例,并且自 2017 年 11 月以来没有修改存储配置。在这种情况下,您可能会在修改数据库实例以增加分配的内存时遇到几分钟的短暂中断贮存。中断后,数据库实例处于联机状态,但处于存储优化状态。存储优化期间性能可能会下降。
首先,请注意您可能正在查看不正确的操作 - 您描述了要更改存储大小,但引用了描述存储类型的文档。这是一个重要的区别:RDS 建议您不会因更改存储大小而中断,但会因更改存储类型而中断。
预计更改存储大小会降低性能,其持续时间和影响将取决于几个因素:
考虑到这一点,您自己、在您的环境中并按照您的条件进行测试会更好。尝试以下方法:
这将花费更多(它不必......你可以在 1-3 个实例小时内完成大部分工作),但你会得到一个比兜售我们在无数不同 RDS 中的经验更清晰的答案环境。
如果您仍在寻找“大致”的答案,我建议您计划至少在几分钟而不是几秒钟的范围内降低性能 - 再次很大程度上取决于您的环境和配置。
作为参考,我最近在星期六下午(在 EST 中)应用了这个精确的操作来将 10GB 添加到 40GB db.m1.small 类型的实例。实例保持“修改”状态大约 17 分钟。请注意,修改状态并不描述真正的停机时间,而是描述应用操作的持续时间。您将无法对实际实例应用其他更改(尽管您仍然可以访问数据库本身),这也是您可以预期会发生任何性能下降的持续时间。
注意:如果您只计划更改存储大小,则会出现意外中断,但请注意,如果此更改与更改实例标识符/类或存储类型等其他操作一起进行,则可能会发生中断。
由于您只是增加存储大小而不更改实例类型或其他任何内容,因此不应有任何停机时间,但在执行操作时可能会出现“性能下降”。
您引用的参考资料含糊不清,因为它在讨论更改存储大小的同时也在讨论更改存储类型。如果您改为查看此处表格中的“分配的存储空间”:
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.DBInstance.Modifying.html
您会看到它只说“性能可能会降低”,而没有提到中断(它说在某些情况下会在切换存储类型时发生)。
作为参考,在工作日将 eu-west-1 中的 15GB db.m3.medium MySQL 数据库更改为 20GB 时,我的应用程序与数据库的连接没有中断。但是,读/写 IOPS 在不到 20 分钟的时间内都增加到 400-700/s 之间,因此我认为这是对性能下降的引用。单可用区和多可用区数据库实例均报告了此问题。(该实例被报告为“修改”的时间比这长一点——大约 25 分钟。)
当然,您可以先在与生产数据库相同的数据库实例上试用它,然后再在生产数据库实例上进行操作,这样您就可以在实际操作之前安全地查看它在您的情况下的行为。