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

相关问题