Wiederherstellen einer Geodatabase in PostgreSQL

Mit der Standard- oder Advanced-Lizenz verfügbar.

Verwenden Sie den Befehl "pg_restore", um eine Datenbank aus einer mit dem Befehl "pg_dump" erstellten Archivdatei wiederherzustellen. Testen Sie die Sicherungs- und Wiederherstellungsmodelle mit Testdatenbanken.

Bei der Wiederherstellung einer Geodatabase oder einer Datenbank mit installiertem ST_Geometry-Typ müssen Sie Schemas in einer bestimmten Reihenfolge wiederherstellen: Zuerst das öffentliche Schema und das Schema "sde" und schließlich die verbleibenden Schemas.

Allgemeine Anweisungen für die Wiederherstellung, wie Syntax-Optionen, finden Sie in der PostgreSQL-Dokumentation. Wenn Sie PostGIS installiert haben und den Speichertyp "geometry" oder "geography" verwenden, lesen Sie die PostGIS-Dokumentation zur Erstellung von Sicherungskopien und zur Datenbankwiederherstellung. Dieser Vorgang kann je nach verwendeter PostGIS-Version variieren.

  1. Datenbanknamen müssen in der PostgreSQL-Instanz eindeutig sein. Daher müssen Sie die vorhandene Datenbank aufgeben, wenn Sie eine Wiederherstellung im selben Datenbank-Cluster durchführen.

    dropdb –U sde mypgdb

  2. Wenn Sie eine Wiederherstellung in einem neuen Datenbank-Cluster durchführen, melden Sie sich bei psql an, erstellen Sie die SDE-Anmelderolle neu, und weisen Sie ihr eine Administratorberechtigung zu.

    CREATE ROLE sde LOGIN 
      ENCRYPTED PASSWORD '0shallpass'
      SUPERUSER INHERIT;

  3. Wenn Sie eine Wiederherstellung in einem neuen Datenbank-Cluster durchführen, erstellen Sie die Anmelderollen für alle Datenbankbesitzer neu.

    Sie können auch Editor- und schreibgeschützte Anmelderollen neu erstellen, obwohl dies zum Wiederherstellen der Datenbank nicht erforderlich ist.

    Mit dem folgenden Beispielskript werden Anmelderollen und -gruppen für Datenbesitzer, Editoren und Leser erstellt und die Anmelderollen den entsprechenden Gruppen hinzugefügt.

    --Re-create dataowners group and login roles.
    CREATE ROLE dataowners
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE owner1 LOGIN
      ENCRYPTED PASSWORD 'pw.4.owner1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT dataowners TO owner1;
    
    CREATE ROLE owner2 LOGIN
      ENCRYPTED PASSWORD 'pw.4.owner2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT dataowners TO owner2;
    
    --Re-create editors group and login roles.
    CREATE ROLE editors
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE editor1 LOGIN
      ENCRYPTED PASSWORD 'pw.4editor1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT editors TO editor1;
    
    CREATE ROLE editor2 LOGIN
      ENCRYPTED PASSWORD 'pw.4editor2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT editors TO editor2;
    
    --Re-create readers group and login roles.
    CREATE ROLE readers
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE reader1 LOGIN
      ENCRYPTED PASSWORD 'pw.4reader1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT readers TO reader1;
    
    CREATE ROLE reader2 LOGIN
      ENCRYPTED PASSWORD 'pw.4reader2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT readers TO reader2;

  4. Wenn die Wiederherstellung in einem neuen Datenbank-Cluster erfolgt und die Geodatabase den räumlichen Datentyp "ST_Geometry" verwendet, legen Sie die "st_geometry"-Bibliothek im PostgreSQL-Verzeichnis lib ab.

    Weitere Informationen zum Speichern der "st_geometry"-Bibliothek finden Sie unter Erstellen einer Geodatabase in PostgreSQL unter Linux oder Erstellen einer Geodatabase in PostgreSQL unter Windows.

  5. Erstellen Sie die Datenbank neu.

    Sie können dazu die createdb-Anweisung in der Befehlszeile oder eine psql-Anwendung verwenden.

    Hinweis:

    Stellen Sie sicher, dass die neue Datenbank die gleichen Eigenschaften aufweist wie die Datenbank, die Sie wiederherstellen, einschließlich Name, Codierung und Besitzer.

    Im folgenden Beispiel wird mit dem createdb-Befehlszeilenwerkzeug eine Datenbank namens "mypgdb" mit UTF8-Codierung erstellt, die im Besitz der SDE-Anmelderolle ist und sich im Tablespace "tblspgdb" befindet:

    createdb –U sde –E UTF8 –D tblspgdb -O sde mypgdb

  6. Erstellen Sie in der neuen Datenbank ein SDE-Schema, das im Besitz der SDE-Anmelderolle ist. Gewähren Sie allen Anmelderollen oder -gruppen, die auf die Geodatabase zugreifen, Zugriff auf das SDE-Schema.

    CREATE SCHEMA sde
      AUTHORIZATION sde;
    
    GRANT USAGE ON SCHEMA sde TO dataowners;
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO readers;

  7. Ändern Sie den Suchpfad für die neue Datenbank, um das SDE-Schema einzufügen.

    ALTER DATABASE mypgdb
      SET SEARCH_PATH="$user",sde,public;

  8. Stellen Sie in der Befehlszeile das öffentliche Schema, das SDE-Schema und deren Daten mit dem Befehl pg_restore wieder her.

    Führen Sie den Befehl als Anmeldung mit Superuser-Berechtigungen, wie beispielsweise der postgres-Benutzer, aus.

    Wenn Sie beispielsweise das öffentliche Schema und das Schema "sde" einer Datenbanksicherungsdatei mit dem Namen "mypgdb31oct.dump" in der Datenbank "mypgdb" wiederherstellen möchten, führen Sie den folgenden Befehl aus:

    pg_restore -U sde -d mypgdb -n public,sde mypgdb31oct.dump

  9. Stellen Sie abschließend die verbleibenden Schemas und Daten wieder her.

    pg_restore –U sde –d mypgdb mypgdb31oct.dump

  10. Nachdem die Datenbank wiederhergestellt wurde, testen Sie die Datenbank, indem Sie über ArcGIS Pro eine Verbindung zu ihr herstellen und die Daten überprüfen.