加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

postgresql – Docker备份和恢复postgres

发布时间:2020-12-16 03:52:18 所属栏目:安全 来源:网络整理
导读:我使用docker postgres:9.4图像. 我需要知道如何备份和恢复仅容量容器. 创建的卷容器: docker run -v /var/lib/postgresql/data --name dbdata postgres:9.4 /bin/true 使用音量 docker run --name=postgres --volumes-from=dbdata -d -p 6432:5432 postgr

我使用docker postgres:9.4图像.
我需要知道如何备份和恢复仅容量容器.

创建的卷容器:

docker run -v /var/lib/postgresql/data --name dbdata postgres:9.4 /bin/true

使用音量

docker run --name=postgres --volumes-from=dbdata -d -p 6432:5432 postgres:9.4

备份卷容器

docker run --volumes-from dbdata -v $(pwd):/backup postgres:9.4 tar cvf /backup/backup.tar /var/lib/postgresql/data

恢复新容器中的卷

docker run --name=dbdata-new --volumes-from dbdata -v $(pwd):/backup ubuntu:14.04 /bin/sh -c 'cd /var/lib/postgresql/data && tar xvf /backup/backup.tar'

在新卷中使用以创建新的postgres容器:

docker run --name=postgres-new --volumes-from=dbdata-new -d -p 7532:5432 postgres:9.4

问题:运行新容器时,我在日志中收到以下错误.

initdb:目录“/ var / lib / postgresql / data”存在但不为空
如果要创建新的数据库系统,请删除或清空
目录“/ var / lib / postgresql / data”或运行initdb
除了“/ var / lib / postgresql / data”之外的参数

不确定我做错了什么.有人可以指出我犯错误的地方.

最佳答案
在非常基本的数据(一个记录一个表一个新的数据库)的步骤之后,无法轻松地重现问题:

psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -c "CREATE DATABASE ttt;"
psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -d ttt -c "CREATE table a(b int); insert into a(b) values(1);"
psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 6432 -d ttt -c "select * from a;"

当我启动postgres-new时,我在日志中没有例外,数据似乎在那里:

$psql -U postgres -h $(boot2docker ip || echo 'localhost') -p 7532 -d ttt -c "select * from a;"
 b
---
 1
(1 row)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读