如果在从postgres 8.x升级到9.x并使用--link选项运行pg_upgrade 之后,我将“降级”回到8.x(意思是我,关闭pg-9守护进程并启动pg-8守护进程)?
特别是,假设我在pg-9中时将一些数据插入表中?在降级回pg-8后,我可以期待找到这些数据吗?它取决于我插入数据的表是否已经存在于我的pg_upgrade时? 并且(称我为反常)假设我重新升级到pg-9,重新重新进入pg-8,等等多次。有保证吗,还是我冒险了?
我做过一些小规模的测试。我发现在第一次降级后,我回到大致到我运行pg_upgrade之前的数据。粗略地,不完全是。随着每次升级 - 降级周期,它似乎变得更“粗略”。
现在我可以忍受“粗略”的一部分了。但是,我真的很讨厌,如果经过一次太多的重新升级/降级后,我最终得到了一个无法挽回的数据库。这应该是一个担心吗?
最后,我确实知道pg_dump,但出于时间和存储的原因,我想尽可能避免这种情况。
答案 0 :(得分:2)
您应该将pg_upgrade
视为不可逆转的步骤。如果您希望能够撤消更改,请不要使用--link
,以便旧数据库保持不变并保持不变。如果用户返回旧数据库,他们将丢失自升级以来所做的更改。
您应该提供用户可以使用的备份和还原工具,以便他们可以进行备份,升级到新版本,如果不满意降级,则还原备份。对于奖励积分,使备份工具兼容生成向后兼容的备份,因此$ newversion的备份可以恢复到$ oldversion。