使用Cloud Formation将MySQL RDS存储类型从磁性更改为SSD / Provisioned IOPS

时间:2019-02-05 13:52:49

标签: 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实例是堆栈的一部分。但是问题是这些是生产数据库,长时间中断(超过2小时)是不可行的。

仅存储大小更改是可以的,但是从磁类型更改为SSD的类型更改是灰色区域。我无法(至少我知道)无法确定它将在2小时以上完成,还是需要多少时间。 我想向社区询问最佳实践,或者是否有人之前做过任何这样的工作(可能是手动的),而这些工作也不会使数据库也与cloudformation堆栈不同步(例如使用手动创建新副本)所需的规格并将其推广为例如)?

1 个答案:

答案 0 :(得分:0)

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

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

  

RDS->数据库->选择RDS群集->(右上方)选择   动作->添加阅读器

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

这显然会花费一些时间,但是一旦您的新副本达到了主实例的最高速度,就可以生成另一个只读副本(这次使用您创建的新副本)

一旦您有2个具有所需存储类型的副本,就可以做2件事:

  1. 如果您只是想快速读取,请保持设置不变,从主服务器读取副本的初始复制会有点慢,但是读取查询应该很快。
  2. 否则,杀死主实例,RDS应该自动选择一个只读副本作为新的主副本。

对于这样的生产系统,我想不出更优雅的方式,希望一切对您有用。