【问题标题】:Docker Backup and restore postgresDocker 备份和恢复 postgres
【发布时间】:2015-10-21 15:39:06
【问题描述】:

我使用 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”以外的参数

不知道我做错了什么。有人可以指出我在哪里犯了错误。

【问题讨论】:

  • 按照您的步骤操作,日志中没有错误。
  • 添加数据库和表,请尝试
  • 在一个数据库中的一张表上工作得很好,在 postgres-new 导入并可用:
  • 能否请您检查一下新的 postgres 实例是否显示了持久化的数据
  • 我遇到了同样的问题,但我的处理方式不同。我运行 PG 容器并安装了数据卷,然后不得不停止容器,将数据同步到另一个 Docker 主机,并使用该卷运行一个新容器。现在它吓坏了。相当令人不安......

标签: postgresql docker


【解决方案1】:

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

粗体字是问题所在。 通过解压缩文件夹 /var/lib/postgresql/data 中的备份,tar 命令在上述文件夹中创建 /var/lib/postgresql/data。

感谢您的所有帮助MyKola

【讨论】:

    【解决方案2】:

    使用非常原始的数据(一记一表一新db)无法轻松重现问题:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 2019-05-14
      • 2019-05-06
      • 1970-01-01
      • 2012-01-14
      相关资源
      最近更新 更多