2013-04-25 123 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。