如何在不删除现有数据的情况下升级Docker Postgresql?

时间:2017-10-10 17:29:56

标签: postgresql docker ubuntu-14.04 postgresql-9.5 postgresql-9.6

我是docker和postgresql的初学者。

如何将docker postgresql 9.5升级到9.6而不会丢失我的 当前数据库? fyi:即时通讯使用ubuntu 14和docker 17.09

提前致谢。

2 个答案:

答案 0 :(得分:0)

要在docker容器中保留数据,需要一个卷。该卷将直接安装到容器的文件系统上,并在容器被杀死时保持不变。听起来虽然容器是在没有连接卷的情况下创建的。获取该数据的最佳方法是使用复制容器的数据文件夹并移动到主机文件系统。然后使用新图像创建一个docker容器。在这种情况下,将数据目录复制到正在运行的容器的数据目录中:pgdata:/ var / lib / postgresql / data

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

如果不起作用,我只会转储当前数据库,并将它们重新上传到新容器

答案 1 :(得分:0)

您不会将数据库文件存储到外部存储(容器外)。 然后我只知道存储数据库的一种方法:

1)备份数据库
2)关闭postgres 9.5容器
3)运行新的postgres 9.6容器
4)恢复备份

您可以使用pg_dumpall备份完整数据库:

pg_dumpall > backupfile

可以使用psql恢复生成的转储:

psql -f backup postgres