如果在将postgres 8.x升级到9.x并使用--链接选项运行pg_upgrade之后,我“降级”回8.x (意思是关闭pg-9守护进程并启动pg-8守护进程),我还能期待什么呢?
特别是,假设我在pg-9中时,我在表中插入了一些数据?在我将评级降至pg-8之后,我能指望找到这些数据吗?这是否取决于我插入该数据的表在我的pg_upgrade时是否已经存在?还有(叫我变态),假设我升级到pg-9,再降级到pg-8,等等。有什么保证吗,还是我在冒险?
我做了一些小规模的测试。我发现,在第一次降级之后,我大致回到了运行pg_upgrade之前的数据。粗略地说,不完全是。而随着每一次升级-降级周期,它似乎得到更多的“粗略”。
现在我可以接受“大致”部分了。然而,我真正讨厌的是,在经历了太多的升级/降级之后,我最终得到了一个无法挽回的损坏的DB。这应该是个担心吗?
最后,我确实了解pg_dump,但出于时间和存储的原因,如果可能的话,我想避免这种情况。
发布于 2013-04-26 02:24:29
您应该认为pg_upgrade是一个不可逆转的步骤。如果您希望能够撤消更改,请不要使用--link,这样旧数据库就会保持不变。如果用户返回到旧数据库,那么他们将失去升级后所做的更改。
您确实应该提供一个用户可以使用的备份和恢复工具,这样他们就可以进行备份,升级到新版本,如果不高兴地降级,那么就恢复备份。为了获得额外的积分,使您的备份工具与生成向后兼容的备份兼容,这样可以将来自$newversion的备份还原到$oldversion。
https://stackoverflow.com/questions/16225628
复制相似问题