簡體   English   中英

使用程序的圖形界面在 PgAdmin 4 上備份和恢復 PostgreSQL 數據庫

[英]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
  1. 程序版本以及我如何獲得該軟件

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"
    }
  }
}
  1. 我如何使用我在服務器上安裝 pgAdmin 的程序並通過鍵入 pgadmin.domainname.it 訪問該服務

  2. 重現問題的步驟(見附圖)

在此處輸入圖像描述

在此處輸入圖像描述

注意:我實際上運行了很多測試來嘗試更改備份和恢復方法。 在本次討論中不可能將它們全部列出來。 我不排除在所有這些嘗試中有一個是有效的。

  1. 安裝了 Docker 並運行 PgAdmin 容器的服務器的操作系統和瀏覽器:Ubuntu 22.04.1 LTS 64 位 - cpu arm Oracle 安培(更新)我的 PC 操作系統:8874414387 Pro968 系列 8874414387 8874414387使用的瀏覽器:Chrome(最新版)

  2. PgAdmin 提供的錯誤(見照片)

在此處輸入圖像描述

  1. 我的幕后黑手和我想做的事

我有一個允許用戶注冊的應用程序。

我使用以下憑據注冊:

用戶名: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM