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

问题描述 投票:16回答:4

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

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

postgresql amazon-web-services amazon-rds
4个回答
20
投票

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

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

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


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


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
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.