Wiederherstellen einer Geodatabase in PostgreSQL

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

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

Vorsicht:

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. Anderenfalls werden einige Feature-Classes möglicherweise nicht wiederhergestellt und für die wiederhergestellten werden keine räumlichen Indizes erstellt.

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",public,sde;

  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.

    Lesen Sie die PostgreSQL-Dokumentation zur pg_restore-Syntax, da diese in Abhängigkeit davon variiert, wie Sie die Sicherung erstellt haben und welche Version von PostgreSQL Sie verwenden.

  9. Stellen Sie abschließend die verbleibenden Schemas und Daten wieder her.
  10. Nach Abschluss der Datenbankwiederherstellung stellen Sie über ArcGIS AllSource eine Verbindung mit der Datenbank her, und überprüfen Sie, ob alle Daten wiederhergestellt wurden.