如何减少我的RDS实例的存储(缩小)?

时间:2016-04-20 14:10:22

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

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

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

5 个答案:

答案 0 :(得分:20)

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

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

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

答案 1 :(得分:12)

基于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。)

答案 2 :(得分:5)

亚马逊不允许减少RDS实例的硬盘大小,您可以有两种方法来减少存储空间。

1:如果你能负担得起停机时间,那么旧实例的mysqldump备份可以恢复到存储容量较小的新实例。

2: - 您可以使用数据库迁移服务将数据从一个实例移动到另一个实例,而不会出现任何停机。

答案 3 :(得分: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,您将无法存钱。而其他折扣因素也可能发挥作用。

答案 4 :(得分:0)

您可以通过将数据库迁移到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数据库。