2013-04-25 359 views
0

如果从postgres 8.x升级到9.x并运行带有--link选项的pg_upgrade ,我“降级”回到8.x(意思是,我关闭了pg-9守护进程并启动了pg-8守护进程)?重复PostgreSQL 8.x-9.x-8.x-9.x升级和降级

特别是,假设当我在pg-9时,我在表格中插入了一些数据?我可以期望在降级回到pg-8之后找到这些数据吗?这取决于我插入数据的表是否在我的pg_upgrade时已经存在? 并且(称我为乖张)假设我重新升级为pg-9,重新升级为pg-8,等等多次。有任何保证,还是我抓住机会?

我已经做了一些小规模的测试。我发现在第一次降级后,我回到了大约到我运行pg_upgrade之前的数据。粗略地说,不完全是。随着每次升级降级周期,它似乎变得更“粗略”。

现在我可以生活在“大致”的部分。然而,我真正讨厌的是,如果经过一次重新升级/降级之后,我的数据库无法恢复损坏。这应该是一个担心吗?

最后,我知道pg_dump,但由于时间和存储的原因,我希望尽可能避免这种情况。

+0

你试图通过反复升级和降级来完成什么? – 2013-04-25 22:22:07

+0

那么,postgresql是我想要发货的整体产品的一部分。我的产品的当前版本与postgres-8捆绑在一起,而下一个版本将附带postgres-9。所以我只是感兴趣的是,如果我的用户升级到*我的*新版本后会遇到什么,但是因为任何原因而感到不满意,他们会决定降级到我的旧版本。然后,也许他们有勇气回来,他们决定重新升级。 – 2013-04-25 23:05:57

+1

为了保留用户的数据,最好在降级时需要转储和重新加载。这很麻烦,当然,但比数据更好。 – 2013-04-26 00:01:02

回答

2

您应该考虑pg_upgrade不可逆步骤。如果您希望能够撤消更改,请不要使用--link,以便旧数据库保持原位并保持不变。如果用户回到旧数据库,他们将失去升级后所做的更改。

您应该真正提供用户可以使用的备份和恢复工具,以便他们可以进行备份,升级到新版本,并且如果不愉快的降级然后恢复备份。对于奖励积分,请使您的备份工具兼容生成向后兼容的备份,以便$ newversion的备份可以恢复到$ oldversion。