无缝更新postgres数据库 - 架构,重命名,如何?

时间:2010-12-03 10:33:19

标签: postgresql schema rename

实际上是一个简单的问题,但我无法找到任何好的结论性答案。

假设生产数据库foo_prd和相同foo_new的更新版本(在同一服务器上)应该替换旧版本。从_prd无缝切换到_new的最简洁方法是什么?

重命名数据库需要通过其pid断开当前用户的连接。这将取消一些请求,新用户可能会在此过程中连接。我正在考虑将新数据库的表创建为不同的SCHEMA,然后更改search_path,例如从"$user",prd"$user",new,prd

可能出现什么问题?你有什么更好的建议吗?我完全采取了错误的做法吗?

2 个答案:

答案 0 :(得分:1)

按照您的建议执行:将新数据库的表创建为不同的模式,然后更改search_path。

但是还要创建一个与新模式同名的用户,并在更改search_path之前测试所有内容,方法是以每个应用程序的身份登录此用户 - 默认情况下,新模式将首先出现在该用户的search_path中,因为名称匹配。

最后,当您放弃旧模式时要小心 - 我建议先使用限定引用(例如prd.tableprd.function)使用任何引用它的对象重命名。几天/几周后,可以放心地放下它。

答案 1 :(得分:0)

我会对我的架构进行版本化,并在准备好后将我的应用程序更改为指向新架构。

相关问题