我有两台服务器:生产和测试。他们都运行 PostgreSQL。我在测试服务器上做了很多改动,比如ALTER table
,CREATE INDEX
等等,并希望尽可能简单地将这些改动转移到生产服务器上。最方便的方法是什么?
问问题
1876 次
1 回答
2
最好的方法是:
- 在每个数据库上运行 pgdump,创建一个完整的转储。
- 使用 Beyond Compare 之类的比较工具并排运行两个文件并创建合并;鉴于您已经说过只有“更改”更改和数据更改,两者应该足够相似,可以将它们排列起来
- 创建一个新的测试数据库以将该脚本部署到,并通过 psql(或您使用的任何工具)运行该脚本。
- 如果该脚本成功运行,则清除目标数据库并针对它运行该脚本。
- 确保数据库支持的应用程序在此过程中处于脱机状态,至少在您删除数据库并重新部署期间。
- 如果有其他数据更改,您可能希望在删除目标数据库之前对其进行 pgdump。然后,您可以合并回在目标 DB 上的第一个 pgdump 和第二个 pgdump 之间添加的数据。
其他注意事项:
- Pgdump 是一个命令行工具,通常通过 ssh 运行(如 PuTTY)
- 它以正确的创建顺序输出 ASCII 文本 SQL 脚本,因为 PostGre 可以具有对象相互依赖性。
- psql,PostGre 的命令行界面应该允许您从文件执行脚本,如果您没有可以处理与整个转储一样大的 SQL 脚本的 GUI 程序。
- 有单独转储数据和结构的选项。
于 2012-04-06T12:25:17.353 回答