在Postgres 9.3中创建一个与生产相同的表结构的开发数据库

时间:2014-03-10 18:13:29

标签: postgresql schema

我想为我的网络应用程序创建一个“开发”数据库。

我正在使用Postgres 9.3,我希望'devdb'具有确切的表结构 我的制作'appdb'。我不希望他们共享数据,但我希望devdb接收对表结构所做的任何更改,如果可能的话。 (即如果我在appdb中添加一个新表,我希望devdb也有新表,如果我删除一个列也一样)

我是否需要使用模式,如果是这样,如何?我的appdb目前有一个公共模式。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为你最好的选择是使用:

pg_dump --schema-only prod | psql dev

要使模式保持同步,请删除并重新加载dev db,或编写模式更改脚本,以便将更改应用于两个DB。无论如何,您应该这样做,在将它们应用于生产之前测试开发中的更改。

(像Liquibase这样的工具对此很有意思。)

尝试直接链接DDL定义是不安全的。它们创建了从生产到开发的依赖。这有风险。

例如,如果您要使用基于表继承的方法,那么持续锁定 dev 表的长时间运行事务可能会导致生产的延迟。 / p>