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 installierter ST_Geometry müssen Sie Schemas in einer bestimmten Reihenfolge wiederherstellen: Zuerst das öffentliche Schema, dann 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.
- 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
- 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;
- 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 owner1; CREATE ROLE owner2 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 owner2 LOGIN ENCRYPTED PASSWORD 'pw.4reader2' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION; GRANT readers TO reader2;
- Wenn die Wiederherstellung in einem neuen Datenbank-Cluster erfolgt, achten Sie darauf, die st_geometry-Bibliothek im PostgreSQL-Speicherort "lib" abzulegen. 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.
- 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
- Melden Sie sich erneut bei psql an, und 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;
- Ändern Sie den Suchpfad für die neue Datenbank, um das Schema "sde" einzufügen.
ALTER DATABASE mypgdb SET SEARCH_PATH="$user",sde,public;
- Stellen Sie in der Befehlszeile das öffentliche Schema und die Daten mit dem Befehl "pg_restore" wieder her. Führen Sie den Befehl als Anmeldung mit Superuser-Berechtigungen, wie beispielsweise der postgres- oder sde-Benutzer, aus.
Vorsicht:
Sie müssen zuerst das öffentliche Schema und dessen Inhalt wiederherstellen. Andernfalls werden Ihre räumlichen Daten nicht wiederhergestellt. Erstellen Sie im zweiten Schritt das SDE-Schema. Andernfalls werden für die Feature-Classes keine räumlichen Indizes neu erstellt.
Wenn Sie beispielsweise das öffentliche Schema einer Datenbanksicherungsdatei mit dem Namen "mypgdb1031.dump" in der Datenbank "mypgdb" wiederherstellen möchten, führen Sie den folgenden Befehl aus:
pg_restore -U sde -d mypgdb -n public mypgdb1031.dump
- Stellen Sie als nächstes den Inhalt des SDE-Schemas wieder her.
pg_restore -U sde -d mypgdb -n sde mypgdb1031.dump
- Stellen Sie abschließend die verbleibenden Schemas und Daten wieder her.
pg_restore –U sde –d mypgdb mypgdb1031.dump
- Nachdem die Datenbank wiederhergestellt wurde, testen Sie die Datenbank, indem Sie über ArcGIS Desktop eine Verbindung zu ihr herstellen und die Daten überprüfen.