postgresql - 如何在 Windows 10 docker 上从 tar 文件恢复 postgres 数据

标签 postgresql docker docker-compose

纳马斯蒂,

我使用以下命令为我的数据卷创建了 backup.tar 文件:

docker run --rm --volumes-from dockerproject_gobidb_1 -v C:\Users\pp\Desktop\dockerProject:/backup ubuntu tar cvf /backup/backup.tar /var/lib/postgresql/data

为了恢复卷,我使用了以下命令:

docker run -v dockerproject_postgresGobiData:/var/lib/postgresql/data --name dbstore2 ubuntu /bin/bash

然后

docker run --rm --volumes-from dbstore2 -v C:\Users\hp\Desktop\dockerProject:/backup ubuntu bash -c "cd /var/lib/postgresql/data && tar xvf /backup/backup.tar --strip 1"

但是,当我运行时

'docker-compose up --detach'

以下是我的撰写文件:

version: '3'

services:
  #agar gobidb nhi chaltaa hai to hum db kaa upyog kar sakte hai
  gobidb:
    image: postgres
    restart: always
    environment:
    - POSTGRES_PASSWORD=yavdhesh
    - POSTGRES_USER=yavdhesh
    volumes:
    - postgresGobiData:/var/lib/postgresql/data
    ports:
    - 8880:5432

  adminer:
    image: adminer
    restart: always
    ports:
      - 8800:8080

  #postgres:
  #  image: postgres  # this will use httpd:latest
  #  environment:
  #    - POSTGRES_PASSWORD=example
  #  restart: always 
  # postgresGobiData:<space denaa aavashyak hai>{} ye rakhene se hum pehle se sthit volume kaa upyog kar paayenge
volumes:
  postgresGobiData: {}

我收到以下错误: enter image description here

请推荐我。我想重用 backup.tar 中的数据 enter image description here

最佳答案

经过一番苦思冥想,我终于得到了答案。 我们还可以自动化该过程。

您可以使用以下命令手动备份您的(postgres)数据-

  1. 使用 exec -it 命令打开正在运行的数据库容器。

    docker container exec -it  <container-name> bash -l
    
  2. 创建一个/backup目录,然后运行以下命令。

    pg_dump -h localhost -U postgres  yavdhesh -Fc > /backup/db.dump 
    

    或者您也可以运行以下命令。

    pg_dumpall -l "yavdhesh" -U "yavdhesh" -W  > db.dump
    
  3. 备份您的数据。

    psql -d yavdhesh -U yavdhesh -f db.dump 
    

    或者您可以运行以下命令:

    pg_restore -d db_name /backup/dump_name.tar -c -U "yavdhesh"
    

这些命令专门用于 postgres,但您可以引用这些命令来创建您自己的命令。 希望对您有所帮助。

关于postgresql - 如何在 Windows 10 docker 上从 tar 文件恢复 postgres 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949133/

相关文章:

docker - 限制对 Docker Hub 的访问

java - 如何在准备好的语句java中插入大整数

postgresql - Postgres 转换由 current_date 计算的日期数组 - 整数数组

docker - 如何从 ci-pipeline 执行位于 runner 中的脚本?

linux - 应该使用临时 docker 容器删除卷吗?

docker - 如何在 Kind 中引用本地卷(docker 中的 kubernetes)

azure - 如何将 Azure 文件共享映射为 Docker Compose 文件中的卷?

sql - GROUP BY 或 COUNT 类似字段值 - UNPIVOT?

SQL ORDER BY 带 CASE 带 UNION ALL

docker - 将NPM和Bower添加到Dockerize LAMP环境