[英]Backup and restore a PostgreSQL database on PgAdmin 4 using the program's graphical interface
我有一個使用 pgadmin 管理的 posgresql 數據庫。 我想在服務器和我的電腦上的 sql 文件中備份數據庫。 此外,我想通過刪除以前存在的數據來恢復同一個數據庫。 我想使用圖形程序(無代碼)執行整個過程。 我找不到用於創建備份和恢復的正確選項。 我可以備份和讀取 sql 文件(它看起來是正確的)但我無法恢復。 我想避免在執行恢復之前必須刪除數據庫表,因為沒有命令允許我刪除一個 go 中的所有表(顯然我總是指的是圖形過程,我感興趣的那個)。 我看過展示如何執行此操作的視頻,但它們都在不同的數據庫上執行還原,我對始終在同一數據庫上操作感興趣。 在我的一些嘗試中,我得到了這個錯誤:
pg_restore: error: input file appears to be a text format dump. Please use psql.
我有這兩個程序的這些版本(如您所見,我有最新版本):
FROM kartoza/postgis:15-3.3
FROM dpage/pgadmin4:6.18
Dockerfile 1
FROM dpage/pgadmin4:6.18
Dockerfile 2
FROM kartoza/postgis:15-3.3
Docker 撰寫
postgresql-postgis:
build: ./postgresql-postgis
image: image-postgresql-postgis-eb:v.1.0
container_name: container-postgresql-postgis-eb
restart: always
networks:
- eb
volumes:
- data-postgresql:/var/lib/postgresql
environment:
POSTGRES_USER: "..."
POSTGRES_PASSWORD: "..."
POSTGRES_DB: "..."
ALLOW_IP_RANGE: "0.0.0.0/0"
depends_on:
- traefik
pgadmin:
build: ./pgadmin
image: image-pgadmin-eb:v.1.0
container_name: container-pgadmin-eb
restart: always
networks:
- eb
labels:
traefik.http.services.pgadmin.loadbalancer.server.port: 80
traefik.http.services.pgadmin.loadbalancer.server.scheme: http
traefik.http.routers.pgadmin.rule: Host(`www.pgadmin.${NOME_A_DOMINIO}`)
traefik.http.routers.pgadmin.tls.domains[0].main: pgadmin.${NOME_A_DOMINIO}
traefik.http.routers.pgadmin.tls.domains[0].sans: www.pgadmin.${NOME_A_DOMINIO}
traefik.http.routers.pgadmin.tls.certresolver: leresolver
volumes:
- type: bind
source: ./volumes/data-pgadmin/servers.json
target: /pgadmin4/servers.json
environment:
PGADMIN_DEFAULT_EMAIL: ...@gmail.com
PGADMIN_DEFAULT_PASSWORD: ...
depends_on:
- traefik
- postgresql-postgis
服務器.json
{
"Servers": {
"1": {
"Group": "Server PostgreSQL e PostGIS",
"Name": "Server 1",
"Port": 5432,
"Username": "...",
"Host": "postgresql-postgis",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}
我如何使用我在服務器上安裝 pgAdmin 的程序並通過鍵入 pgadmin.domainname.it 訪問該服務
重現問題的步驟(見附圖)
注意:我實際上運行了很多測試來嘗試更改備份和恢復方法。 在本次討論中不可能將它們全部列出來。 我不排除在所有這些嘗試中有一個是有效的。
安裝了 Docker 並運行 PgAdmin 容器的服務器的操作系統和瀏覽器:Ubuntu 22.04.1 LTS 64 位 - cpu arm Oracle 安培(更新)我的 PC 操作系統:8874414387 Pro968 系列 8874414387 8874414387使用的瀏覽器:Chrome(最新版)
PgAdmin 提供的錯誤(見照片)
我有一個允許用戶注冊的應用程序。
我使用以下憑據注冊:
用戶名:Federico 密碼:abc1
接下來我備份數據庫,如上所示。
接下來,我使用我的應用程序更改密碼:
用戶名:Federico 密碼:abc2
最后,我恢復了所有數據庫表,如上所示。
使用瀏覽器,我應該使用以下憑據登錄到應用程序:
用戶名:Federico 密碼:abc1
相反,我必須使用以下內容:
用戶名:Federico 密碼:abc2
我還收到上面顯示的錯誤,警告我恢復沒有發生。
如果您需要任何其他信息,請告訴我。
我嘗試在 pgadmin.localhost 和 Linux Desktop 22.04.1 LTS 上做所有事情,但我遇到了同樣的錯誤。
pg_restore: error: input file appears to be a text format dump. Please use psql.
謝謝
看來您正在使用純文本格式進行備份,因此您應該使用查詢工具或 psql 來恢復。 基本上,這意味着您只需要運行 sql 腳本。 從 pg admin 文檔中注意以下內容(強調):
關於備份:
Select Plain 創建純文本腳本文件。 純文本腳本文件包含 SQL 條語句和命令,您可以在 psql 命令行中執行這些語句和命令以重新創建數據庫對象並加載表數據。 如果需要,可以在文本編輯器中編輯純文本備份文件,然后再使用 psql 程序恢復數據庫對象。 對於較小的數據庫,通常建議使用純格式; 不建議將腳本轉儲用於 blob。 腳本中的 SQL 命令會將數據庫重建為數據庫最后保存的 state。 純文本腳本可用於在另一台機器上或(經過修改)其他體系結構上重建數據庫。
關於恢復:
還原對話框提供了一種簡單的方法來使用通過 pgAdmin 備份對話框獲取的自定義、tar 或目錄格式備份來重新創建數據庫或數據庫 object。您可以使用查詢工具來回放在純文本備份期間創建的腳本使用“備份”對話框制作。
更多信息請參閱PGAdmin 備份/恢復和Postgres 備份
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.