使用架构转储更新PostgreSQL架构

时间:2012-04-05 15:24:39

标签: dump postgresql

我有两台服务器:生产和测试。他们都运行PostgreSQL。我在测试服务器上做了很多改动,比如ALTER tableCREATE INDEX等,并希望尽可能简单地将这些改动传递给生产服务器。最方便的方法是什么?

1 个答案:

答案 0 :(得分:2)

最好的方法是:

  1. 在每个数据库上运行pgdump,创建完整转储。
  2. 使用Beyond Compare之类的比较工具并排运行这两个文件并创建合并;鉴于你已经说过只有'改变'的变化和数据变化,两者应该足够相似,以便排列它们
  3. 创建一个新的测试数据库以将该脚本部署到,并通过psql(或您使用的任何工具)运行脚本。
  4. 如果该脚本成功运行,请清除目标数据库并针对该脚本运行该脚本。
  5. 确保在此过程中数据库后退的应用程序处于脱机状态,至少在您删除数据库并重新部署的时间内。
  6. 如果有其他数据更改,您可能希望在删除之前pgdump目标数据库。然后,您可以合并回目标数据库中第一个pgdump与第二个pgdump之间添加的数据。
  7. 其他说明:

    • Pgdump是一个命令行工具,通常通过ssh(如PuTTY)
    • 运行
    • 它以正确的创建顺序输出ASCII文本SQL脚本,因为PostGre可以具有对象相互依赖性。
    • psql,PostGre的命令行界面应允许您从文件执行脚本,如果您没有可以处理与整个转储一样大的SQL脚本的GUI程序。
    • 有单独转储数据和结构的选项。