使用程序的图形界面在PgAdmin 4上备份和恢复PostgreSQL数据库

qf9go6mv  于 2023-01-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(640)

我有一个posgresql数据库,我用pgadmin管理。我想备份数据库在一个sql文件中的服务器和我的pc上。此外,我希望通过删除以前存在的数据来恢复同一数据库。我希望使用图形过程执行整个过程(无代码)。我找不到用于创建备份和恢复的正确选项。我可以备份和读取sql文件(看起来正确)但我无法恢复。我希望避免在执行恢复之前删除数据库表,因为没有命令允许我一次删除所有表(显然,我总是指的是图形化过程,我感兴趣的一个)。我看过视频,显示如何做到这一点,但他们都在不同的数据库上执行恢复,我感兴趣的总是在同一个数据库上操作。在我的一些尝试,我得到这个错误:

  1. pg_restore: error: input file appears to be a text format dump. Please use psql.

我有这些版本的2程序(如你所见,我有最新版本):

  1. FROM kartoza/postgis:15-3.3
  2. FROM dpage/pgadmin4:6.18

1.* * 程序版本和我如何获得软件**
停靠文件1
FROM dpage/pgadmin4:6.18
停靠文件2
FROM kartoza/postgis:15-3.3
Docker编写

  1. postgresql-postgis:
  2. build: ./postgresql-postgis
  3. image: image-postgresql-postgis-eb:v.1.0
  4. container_name: container-postgresql-postgis-eb
  5. restart: always
  6. networks:
  7. - eb
  8. volumes:
  9. - data-postgresql:/var/lib/postgresql
  10. environment:
  11. POSTGRES_USER: "..."
  12. POSTGRES_PASSWORD: "..."
  13. POSTGRES_DB: "..."
  14. ALLOW_IP_RANGE: "0.0.0.0/0"
  15. depends_on:
  16. - traefik
  17. pgadmin:
  18. build: ./pgadmin
  19. image: image-pgadmin-eb:v.1.0
  20. container_name: container-pgadmin-eb
  21. restart: always
  22. networks:
  23. - eb
  24. labels:
  25. traefik.http.services.pgadmin.loadbalancer.server.port: 80
  26. traefik.http.services.pgadmin.loadbalancer.server.scheme: http
  27. traefik.http.routers.pgadmin.rule: Host(`www.pgadmin.${NOME_A_DOMINIO}`)
  28. traefik.http.routers.pgadmin.tls.domains[0].main: pgadmin.${NOME_A_DOMINIO}
  29. traefik.http.routers.pgadmin.tls.domains[0].sans: www.pgadmin.${NOME_A_DOMINIO}
  30. traefik.http.routers.pgadmin.tls.certresolver: leresolver
  31. volumes:
  32. - type: bind
  33. source: ./volumes/data-pgadmin/servers.json
  34. target: /pgadmin4/servers.json
  35. environment:
  36. PGADMIN_DEFAULT_EMAIL: ...@gmail.com
  37. PGADMIN_DEFAULT_PASSWORD: ...
  38. depends_on:
  39. - traefik
  40. - postgresql-postgis

servers.json

  1. {
  2. "Servers": {
  3. "1": {
  4. "Group": "Server PostgreSQL e PostGIS",
  5. "Name": "Server 1",
  6. "Port": 5432,
  7. "Username": "...",
  8. "Host": "postgresql-postgis",
  9. "SSLMode": "prefer",
  10. "MaintenanceDB": "postgres"
  11. }
  12. }
  13. }

1.* * 如何使用该程序我已在服务器上安装了pgAdmin,并通过键入www.example.com访问该服务 pgadmin.domainname.it
1.* * 重现问题的步骤
(参见随附照片)

注意:我实际上运行了很多尝试更改备份和还原方法的测试。物理上不可能在此讨论中列出所有这些方法。我不排除在所有这些尝试中有一种是有效的。
1.* * 使用的操作系统和浏览器安装Docker和运行PgAdmin容器的服务器的操作系统:Ubuntu 22.04.1 LTS 64位-CPU手臂安培的甲骨文(更新)操作系统的我的电脑:Windows 10专业版64位CPU英特尔第八系列(更新)使用的浏览器:Chrome(最新版本)
1.* * PgAdmin提供的错误
(参见照片)

1."* 我的梦想和我想做的事**
我有一个允许用户注册的应用程序。
我使用以下凭据注册:
用户名:密码:ABC1
接下来,我备份数据库,如上所示。
接下来,我使用应用程序更改密码:
用户名:密码:ABC2
最后,我恢复了所有的数据库表,如上所示。
使用浏览器时,我应使用以下凭据登录应用程序:
用户名:密码:ABC1
相反,我必须使用以下代码:
用户名:密码:ABC2
我还得到上面显示的错误,警告我恢复没有发生。
如果你需要任何其他信息,请告诉我。

  • 我尝试在pgadmin. localhost和Linux Desktop 22.04.1 LTS上执行所有操作,但得到相同的错误。*

pg_restore: error: input file appears to be a text format dump. Please use psql.
谢谢

kx5bkwkv

kx5bkwkv1#

看起来你使用的是纯文本格式的备份,所以你应该使用查询工具或者psql来恢复。基本上,这意味着你只需要运行sql脚本。在pg管理文档中注意以下几点(强调是加上去的):
备份时:
选择纯文本可创建纯文本脚本文件。纯文本脚本文件包含SQL语句和命令,您可以在psql命令行执行这些语句和命令以重新创建数据库对象和加载表数据。如果需要,可以在使用psql程序还原数据库对象之前在文本编辑器中编辑纯文本备份文件。对于较小的数据库,通常建议使用纯文本格式;不建议对Blob使用脚本转储。脚本中的SQL命令会将数据库重新构造为上次保存的数据库状态。纯文本脚本可用于在其他计算机上或(经过修改)在其他体系结构上重新构造数据库。
恢复时:
“还原”对话框提供了一种简便的方法,可以使用通过pgAdmin“备份”对话框进行的自定义、tar或目录格式备份来重新创建数据库或数据库对象。您可以使用Query Tool回放在通过“备份”对话框进行纯文本备份期间创建的脚本
更多信息请参见PGAdmin Backup/RestorePostgres Backup

相关问题