在生产中,我们的数据库大小为数百GB。为了进行开发和测试,我们需要创建此数据库的快照,这些快照在功能上等效,但大小仅为10或20个演出。
挑战在于我们业务实体的数据分散在许多表中。我们想要创建某种过滤后的快照,以便转储中仅包含某些实体。这样,我们可以每个月左右获取新的快照以进行开发和测试。
例如,假设我们有具有以下多对多关系的实体:
- 公司有N个部门
- 部门有N名员工
- 员工有N个出勤记录
可能有1000家公司,2500个部门,175000名员工以及数千万的出勤记录。我们希望采用一种可复制的方式来获取前100家公司及其所有组成部门,员工和出勤记录。
当前,我们将pg_dump用于架构,然后使用--disable-triggers和--data-only运行pg_dump,以从较小的表中获取所有数据。我们不想编写自定义脚本来提取部分数据,因为我们的开发周期很快,并且担心自定义脚本会很脆弱,并且可能会过时。
我们应该怎么做?是否有第三方工具可以帮助从数据库中提取逻辑分区?这些工具叫什么?
任何一般建议也表示赞赏!