1

我是初學者,都是docker和postgresql。如何在不刪除現有數據的情況下升級Docker Postgresql?

如何將docker postgresql 9.5升級到9.6而不丟失我的 當前數據庫? fyi:即時通訊使用ubuntu 14和docker 17.09

在此先感謝。

+0

讓我看看請如何運行碼頭集裝箱。你在哪裏存儲Postgress數據? –

+0

我該如何運行碼頭集裝箱碼頭運行-d -p 5432:5432 my_image service postgresql start – Blackjack

回答

0

要在碼頭集裝箱中保存數據,需要卷。該卷將直接安裝到容器的文件系統上,並在容器被殺死時被保存。聽起來這個容器是在沒有卷的情況下創建的。獲取該數據的最佳方法是使用複製容器的數據文件夾並移至主機文件系統。然後用新圖像創建一個碼頭容器。複製數據目錄運行容器的數據目錄在這種情況下PGDATA:在/ var/lib中/ PostgreSQL的/數據

docker cp [containerID]:/var/lib/postgresql/data /home/user/data/data-dir/ 
docker stop [containerID] 
docker run -it --rm -v pgdata:/var/lib/postgresql/data postgres 
docker cp /home/user/data/data-dir [containereID]:/var/lib/postgresql/data 

萬一不行我只想轉儲當前數據庫,並重新上傳到新容器

+0

感謝您的幫助。但我仍然無法找到如何複製容器的數據文件夾並移動到主機文件系統。任何想法 ? – Blackjack

0

您不會將數據庫文件存儲到外部存儲器(容器外部)。 後來我才知道只有1存儲數據庫的方式:

1)備份數據庫
2)關閉Postgres的9.5容器
3)運行新的Postgres 9.6容器
4)恢復備份

您可以使用pg_dumpall爲backuping完整的數據庫:

pg_dumpall > backupfile 

生成的轉儲可以用psql恢復:

psql -f backup postgres 
+0

實際上,當我檢查postgres時,卷已經直接掛載。那麼,我應該再次執行pg_dump嗎? – Blackjack

相關問題