【问题标题】:How to reduce storage(scale down) my RDS instance?如何减少存储(缩减)我的 RDS 实例?
【发布时间】:2016-08-13 06:57:10
【问题描述】:

我有一个存储 SSD 1000GB 的 RDS(Postgres) 实例,但数据只有 100GB 大小。

如何轻松缩减RDS的存储资源?

【问题讨论】:

    标签: postgresql amazon-web-services amazon-rds


    【解决方案1】:

    RDS 不允许您减少分配给数据库实例的存储量,只能增加它。

    要将数据库移动到更少的存储空间,您必须创建一个具有所需存储空间的新 RDS 实例,然后使用 pg_dump/pg_restore 之类的东西将数据从旧数据库移动到新数据库。

    另请注意,具有 1000GB SSD 存储的 RDS 实例的基本 IOPS 为 3000。具有 100GB SSD 存储的 RDS 实例的基本 IOPS 为 300,偶尔突发高达 3,000。

    【讨论】:

    • 这仍然是有效的答案吗?我刚刚遇到mistwire.com/2018/03/…
    • @Dave 我在那篇文章中没有看到任何关于更改存储卷大小的内容。那篇文章与更改实例大小有关,即可用的 CPU 和 RAM 量。不是磁盘空间。
    • 仍然如此,请求他们的支持。即使在删除 DB 计费大小后也不会减少。
    • 除了答案中提到的 pg_dump 等数据库特定实用程序外,您还可以使用 AWS Database Migration Service。这是相同的getting started 链接。
    • 请记住,DMS 不能顺利处理 JSON 字段,您可能无法利用,已经浪费了大约 4 个小时
    【解决方案2】:

    根据 AWS 的帮助 here,这是对我有用的完整过程:

    1) 将数据库转储到文件:在可以通过网络访问数据库的机器上运行: pg_dump -Fc -v -h your-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username your-databasename > your-databasename.dump

    2) 在 AWS 控制台中,创建一个具有较小存储空间的新 RDS 实例。 (您可能希望使用相同的用户名、密码和数据库名称进行设置。)

    3) 在新的 RDS 实例上恢复数据库:运行此命令(显然与上一个命令在同一台机器上): pg_restore -v -h the-new-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username -d your-databasename your-databasename.dump

    (请注意,在第 3 步中,我使用的是新 RDS 实例的端点。另请注意,端点地址末尾没有 :5432。)

    【讨论】:

      【解决方案3】:

      Amazon 不允许减小 RDS 实例的 HDD 大小,您可以有两种选择来减小存储大小。

      1:-如果你能承受停机时间,那么旧实例的mysqldump备份可以恢复到具有较小存储大小的新实例。

      2:- 您可以使用数据库迁移服务将数据从一个实例移动到另一个实例,而无需停机。

      【讨论】:

      【解决方案4】:

      使用 RDS 时,您无需进行典型的硬件“容量规划”,只需为短期或中期(取决于)配置足够的磁盘空间,并在需要时进行扩展。

      正如@Mark B 提到的,您还需要注意 IOPS。如果您需要高性能数据库,可以使用“预置 IOPS”。

      在进入磁盘空间存储部分之前,您应该进行成本与性能调整。 例如。如果您将 1000GB 减少到 120GB,对于美国西部,您将节省 0.125x 880GB = 110/月。但最大 IOPS 将是 120x 3 = 360IOPS

      预置额外的 IOPS 以提高性能将花费您 0.10 美元。假设您确实需要 800IOPS 才能获得更高的在线用户响应,
      (800-360) x 0.10 = 44 美元。所以实际节省的可能最终会“减少”。如果您的 RDS 需要恒定的 1100 IOPS,您将不会节省任何资金。其他折扣因素也可能发挥作用。

      【讨论】:

        【解决方案5】:

        您可以通过将数据库迁移到 Aurora 来做到这一点。

        如果您不想要 Aurora,我认为数据迁移服务是最佳选择。我们正在将生产转移到 Aurora,所以这无关紧要,我们总是可以使用 pg_dump 或 DMS 将其从 Aurora 中恢复。 (我认为这也适用于 MySQL,但尚未测试。)

        我的具体目标是在停用一些最初使用 1TB+ 存储创建的实例后减少 RDS Postgres 最终快照大小。

        1. 创建普通快照。将完整配置的存储大小分配给快照。
        2. 将快照升级到 Aurora 支持的引擎版本(如果尚不支持)。我选择了 10.7。
        3. 将快照迁移到 Aurora。这将创建一个新的 Aurora 数据库。
        4. 为新的 Aurora 数据库创建快照。快照存储大小从完全预置大小开始,但在完成后下降到实际使用的存储。
        5. 删除新的 Aurora 数据库。
        6. 再次恢复 Aurora 快照并在新的新数据库中四处寻找,直到您对可以删除原始快照感到满意为止,以确认您的 Aurora 快照是好的。
        7. 删除新的新 Aurora 数据库和原始快照。

        如果需要,您可以在 3 点停止,然后继续使用 Aurora DB。

        【讨论】:

          猜你喜欢
          • 2021-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-25
          • 1970-01-01
          • 2016-08-28
          • 2020-10-27
          • 2022-06-23
          相关资源
          最近更新 更多