我们有一个具有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命令。