mysql - 使用 Cloud Formation 将 MySQL RDS 存储类型从磁性更改为 SSD/预置 IOPS
问题描述
我有一个具有以下规格的 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 堆栈不同步(比如手动制作一个新副本)例如,想要的规格并将其推广到掌握)?
解决方案
根据您的解释,我假设您有一个 RDS - MySQL 数据库集群(如果您没有 RDS 集群,您如何将数据复制到只读副本?)而不是 Aurora-MySQL 数据库集群(在这种情况下,您将'没有磁性存储类型,因此我的假设)
在这种情况下,从 UI 手动创建只读副本,基本上去
RDS -> 数据库 -> 选择 RDS 集群 ->(右上角)选择操作 -> 添加阅读器
选择读取器后,选择所需的存储类型和要从中复制的只读副本。
这显然需要时间,但是一旦您的新副本与主实例同步,生成另一个只读副本(这次使用您创建的新副本)
一旦你有 2 个具有所需存储类型的副本,你可以做 2 件事:
- 如果您只想快速读取,请保持原样,从主服务器复制只读副本的初始复制会有点慢,但读取查询应该很快。
- 否则,杀死主实例,RDS 应该自动选择一个只读副本作为新的主实例。
对于这样的生产系统,我想不出更优雅的方式,希望对你有用。
推荐阅读
- java - “.count”在可分页查询中的 spring jpa-named-queries.properties 文件中不起作用
- javascript - 无法更改默认的 nuxt favicon
- python - 如何修改给定的代码以使最终列表仅包含每个字母的单个副本?
- javascript - 如何定义背景滑块的背景以及如何修复它?
- c++ - libcurl 无法正确下载图像文件
- flutter - 使用 Aqueduct 提供的文件没有 Content-Length 标头
- angular - 托管在 Pivotal Cloud Foundry 中的 Angular 应用程序中的安全凭证
- kubernetes - 创建 Kubernetes 存储 Google Compute Engine
- dataframe - 在apache spark SQL中,如何在窗口函数中使用collect_list时删除重复的行?
- java - Else condition confusion on Scanner class