如何减少Amazon RDS PostgreSQL存储使用?

时间:2017-07-26 18:18:06

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

我在Amazon RS中有一个Postgres数据库。

当我向DB询问它的大小时,它会给我:

SELECT pg_size_pretty(pg_database_size('mydb'));
> 333 GB.

然而,RDS实例已经在使用2TB的存储空间并且每天都在变得越来越大。

  1. 什么可能导致这种行为?
  2. 如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

执行 vacuum full 命令,小心因为生成锁(vacull full)

答案 2 :(得分:0)

检查日志占用的空间