0

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

4

1 回答 1

2

最好的方法是:

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

其他注意事项:

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