【问题标题】:Change MySQL RDS storage type from magnetic to SSD/Provisioned IOPS using Cloud Formation使用 Cloud Formation 将 MySQL RDS 存储类型从磁性更改为 SSD/预置 IOPS
【发布时间】:2019-06-29 08:45:11
【问题描述】:

我有一个具有以下规格的 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 堆栈不同步(比如手动制作一个新副本)例如,想要的规格并将其推广到掌握)?

【问题讨论】:

    标签: mysql architecture amazon-cloudformation amazon-rds devops


    【解决方案1】:

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

    这种场景下,从UI手动创建只读副本,基本去

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

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

    这显然需要时间,但是一旦您的新副本与主实例同步,请生成另一个只读副本(这次使用您创建的新副本)

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

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

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

    【讨论】:

    • 是的,已经想到了这种手动解决方法,但必须通过 CF 触发更改。停机时间在那里,但数据库在更改期间保持可用,尽管速度很慢。但还是做了。谢谢你的回答。
    • 另外,我计算出最少的时间是从快照恢复和创建一个全新的数据库。在这种情况下,预计停机时间最多约为 4 次。
    • 如果我没记错的话,您也可以从 cloudformation 创建只读副本,只需在您的 cloudformation 模板中添加更多只读副本并指定存储类型。一旦副本在那里,从 cloudformation 模板中删除其他实例。我没有尝试过,但可能直接从 cloudformation 中删除主实例可能不起作用。但是很高兴它起作用了,是的,快照很好,但是快照越大,停机时间就越大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2019-07-20
    • 2016-04-07
    • 2017-09-01
    • 2016-02-16
    相关资源
    最近更新 更多