将非活动数据从Postgres迁移/归档到S3



我们有一个具有tenants的Postgres表和多个具有tenant_id的外键表。为了节省存储成本,我们希望将所有数据归档到s3桶中,并在tenant被设置为非活动(is_active = false)时从Postgres表中删除。

我想知道最好的方法是什么?我在看数据库迁移服务,但它似乎会复制所有的数据,而不仅仅是不活跃的数据。我还需要删除非活动的数据之后,而不是整个表。我还想确定所有需要迁移数据的表,并运行脚本将数据保存到s3桶中,然后如果我能够成功地将数据复制到s3中,则从源表中删除数据。

是否有其他方法可以轻松完成此任务?有相当多的表连接到tenant,我想确保没有比编写长脚本更容易的方法来迁移非活动数据。

你有两个选择:

  • 创建快照的,其中包含数据库的完整副本。然后,从数据库中删除该数据。如果以后还需要使用该数据,可以执行Restore the Snapshot到一个新的数据库并恢复数据。您将为存储快照付费。
  • 导出数据,然后删除数据。将来将数据"恢复"到数据库中并不容易,但至少您将在S3中拥有它的副本。

可以通过aws_s3扩展将PostgreSQL DB实例的RDS数据导出到Amazon S3 - Amazon Relational Database Service。它需要一个SQL语句(例如select * from table where tenant_id = 12)和一个存储桶和键来存储数据。它以CSV格式保存(但options可以修改分隔符等内容)。

因此,只需对您想要保留的所有表和行运行export命令。

最新更新