使用云计算将MySQL RDS存储类型从磁存储更改为SSD/配置IOPS

使用云计算将MySQL RDS存储类型从磁存储更改为SSD/配置IOPS,mysql,architecture,amazon-cloudformation,amazon-rds,devops,Mysql,Architecture,Amazon Cloudformation,Amazon Rds,Devops,我有一个RDS实例,规格如下: InstanceClass: db.m5.12xlarge AllocatedStorage: 500 - (GiB) MultiAZ: No ReadReplica: True - (with same specs) StorageType: standard - (magnetic) 我需要修改主机和副本,以使用具有更多空间(2 TiB)的SSD存储类型(gp2),这必须通过CloudFormation模板完成,因为上面提到的RDS实例是堆栈的一部分。但问题

我有一个RDS实例,规格如下:

InstanceClass: db.m5.12xlarge
AllocatedStorage: 500 - (GiB)
MultiAZ: No
ReadReplica: True - (with same specs)
StorageType: standard - (magnetic)
我需要修改主机和副本,以使用具有更多空间(2 TiB)的SSD存储类型(gp2),这必须通过CloudFormation模板完成,因为上面提到的RDS实例是堆栈的一部分。但问题是这些都是生产数据库,长时间停机(超过2小时)是不可能的

仅仅改变存储大小是可以的,但是从磁性到SSD的类型改变是一个灰色区域。没有办法(至少我知道),我可以确定它将在2个多小时内完成,或者需要多少时间。
我想询问社区关于这里的最佳实践,或者是否有人曾经使用过任何不会使DBs与cloudformation堆栈不同步的变通方法(可能是手动的)(例如,使用所需规格手动制作新副本并将其升级为master)?

根据您的解释,我假设您有一个RDS-MySQL DB集群(如果您没有RDS集群,您如何将数据复制到读取副本?)而不是Aurora MySQL DB集群(在这种情况下,您不会有磁存储类型,因此我的假设)

在这种情况下,从UI手动创建读取副本,基本上转到

RDS->数据库->选择RDS群集->(右上)选择 操作->添加读卡器

选择读取器后,请选择所需的存储类型和要从中复制的读取副本

这显然需要时间,但一旦您的新副本与主实例一起达到最高速度,则生成另一个读取副本(这次使用您创建的新副本)

有了2个具有所需存储类型的复制副本后,您可以执行2项操作:

  • 如果您只是希望读取速度快,请保持设置不变,从主机读取副本的初始复制速度会有点慢,但读取查询速度应该快
  • 否则,杀死主实例,RDS应自动选择a读副本作为新的主实例
    对于这样一个生产系统,我想不出更优雅的方式了,我希望一切都能为您服务。

    根据您的解释,我假设您有一个RDS-MySQL DB集群(如果没有RDS集群,您如何将数据复制到读取副本?),而不是Aurora MySQL DB集群(在这种情况下,您将不会有磁存储类型,因此我的假设)

    在这种情况下,从UI手动创建读取副本,基本上转到

    RDS->数据库->选择RDS群集->(右上)选择 操作->添加读卡器

    选择读取器后,请选择所需的存储类型和要从中复制的读取副本

    这显然需要时间,但一旦您的新副本与主实例一起达到最高速度,则生成另一个读取副本(这次使用您创建的新副本)

    有了2个具有所需存储类型的复制副本后,您可以执行2项操作:

  • 如果您只是希望读取速度快,请保持设置不变,从主机读取副本的初始复制速度会有点慢,但读取查询速度应该快
  • 否则,杀死主实例,RDS应自动选择a读副本作为新的主实例

  • 对于这样一个生产系统,我想不出更优雅的方式了,我希望一切都能为您服务。

    是的,我已经想到了这个手动解决方案,但更改必须通过CF触发。虽然有停机时间,但DB在更改过程中仍然可用,尽管速度很慢。但还是做到了。谢谢您的回答。另外,我计算了最少的时间时间是从快照恢复和创建一个全新的数据库。在这种情况下,估计停机时间最多为~4。如果我没有弄错的话,您也可以从cloudformation创建读取副本,只需在您的cloudformation模板中添加更多读取副本并指定存储类型。一旦副本存在,请从中删除其他实例m cloudformation模板。我还没有尝试过,但是直接从cloudformation中删除主实例可能不起作用。但是很高兴它起作用了,是的,快照很好,但是快照越大,停机时间就越大。是的,已经想到了这个手动解决方法,但是更改必须通过CF触发。停机时间就在b但数据库在更改过程中保持可用,虽然速度很慢。但无论如何都做到了。谢谢你的回答。此外,我计算出从快照恢复和创建全新数据库的时间最短。在这种情况下,估计停机时间最多为~4。如果我没有弄错,你也可以从cloudformation创建读取副本,只需添加更多的读取副本在云形成模板中添加LICA并指定存储类型。一旦副本存在,就从云形成模板中删除其他实例。我还没有尝试过这一点,但直接从云形成中删除主实例可能不起作用。但是很高兴它起作用了,是的,快照很好,但是快照越大,快照越大是停机时间。