Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在Windows10Docker上从tar文件恢复postgres数据_Postgresql_Docker_Docker Compose - Fatal编程技术网

Postgresql 如何在Windows10Docker上从tar文件恢复postgres数据

Postgresql 如何在Windows10Docker上从tar文件恢复postgres数据,postgresql,docker,docker-compose,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_postgresGobi

纳马斯蒂

我使用以下命令为我的数据卷创建了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: {}
版本:“3”
服务:
#阿加尔·戈比德·nhi chaltaa hai至hum db kaa upyog kar sakte hai
戈比德:
图片:博士后
重新启动:始终
环境:
-POSTGRES_PASSWORD=yavdhesh
-POSTGRES_USER=yavdhesh
卷数:
-postgresGobiData:/var/lib/postgresql/data
端口:
- 8880:5432
管理员:
图片:管理员
重新启动:始终
端口:
- 8800:8080
#博士后:
#图片:postgres#这将使用httpd:latest
#环境:
#-POSTGRES_PASSWORD=示例
#重新启动:始终
#postgresGobiData:{}你的书是多少
卷数:
postgresGobiData:{}
我遇到以下错误:

请推荐我。我想重用backup.tar中的数据

在挠头一段时间后,我终于得到了答案。 我们还可以自动化这个过程

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

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

    docker container exec -it  <container-name> bash -l
    
    或者也可以运行以下命令

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

    psql -d yavdhesh -U yavdhesh -f db.dump 
    
    也可以运行以下命令:

    pg_restore -d db_name /backup/dump_name.tar -c -U "yavdhesh"
    
  • 这些命令是专为postgres编写的,但您可以将它们作为参考来创建自己的命令。 希望有帮助。

    步骤:

    使用以下方法进行备份:

    pg_dump -h localhost -U postgres  shridhar -Fc > /backup/db.dump
    
    并使用以下方法恢复:

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

    你能详细说明一下吗?在容器中的命令上面运行的是什么?我们在运行“docker conatiner exec-it sh”命令之后在容器中运行了这些命令。这样,我们将使用root访问访问dock。
    pg_restore -d db_name /backup/dump_name.tar -c -U "shridhar"