Aktualisieren von Geodatabases in PostgreSQL in ArcGIS Server for Amazon Web Services
In den folgenden Abschnitten werden drei Szenarien für Geodatabase-Aktualisierungen beschrieben:
- Aktualisieren von ArcGIS 10 for Amazon Web Services auf ArcGIS 10.1 for Amazon Web Services
- Anwenden eines Service Packs oder Patches auf eine vorhandene ArcGIS 10.1 for Amazon Web Services-Instanz und Aktualisieren von Geodatabases, die sich auf derselben Instanz wie ArcGIS for Server (SITEHOST) befinden
- Anwenden eines Service Packs oder Patches auf eine vorhandene ArcGIS 10.1 for Amazon Web Services-Instanz und Aktualisieren von Geodatabases, die sich auf der eigenen Amazon EC2-Instanz (EGDBHOST) befinden
Verschieben von Daten aus einer ArcGIS 10 for Amazon Web Services EGDB-Instanz in eine ArcGIS Server 10.1 for Amazon Web Services-Instanz
ArcGIS 10 wies ein separates Amazon Machine Image (AMI) für Enterprise-Geodatabases auf, das ein PostgreSQL-8.3.8-Datenbank-Cluster unter Windows enthielt. In ArcGIS 10.1 führt die ArcGIS Server 10.1 (Linux) mit PostgreSQL-AMI Ubuntu Linux aus, und kann optional ein PostgreSQL 9.0.5-Datenbank-Cluster enthalten. Eine PostgreSQL-Datenbank unter Windows kann nicht direkt in eine unter Linux verschoben werden. Wenn Sie also auf ArcGIS Server 10.1 for Amazon Web Services migrieren, müssen Sie die Daten verschieben oder hochladen. Weitere Informationen finden Sie im Abschnitt "Optionen zum Übertragen von Daten an die Cloud" unter Strategien für den Datentransfer zu Amazon Web Services.
Anwenden von Service Packs oder Patches und Aktualisieren von Geodatabases auf die ArcGIS-Server-EC2-Instanz (SITEHOST)
Die Geodatabases in PostgreSQL in Amazon Web Services (AWS)-Instanzen müssen häufig aktualisiert werden, nachdem Sie ein Service Pack oder Patch auf die Software auf Ihrer AWS-Instanz angewendet haben. Anhand der Schritte in diesem Abschnitt wird die Aktualisierung von Geodatabases in PostgreSQL erläutert, die sich auf derselben Instanz befinden wie ArcGIS for Server (SITEHOST).
Aktualisieren Sie ArcGIS for Server, verschieben Sie die neue "st_geometry.so"-Datei in das "PostgreSQL lib"-Verzeichnis, beenden Sie ArcGIS-Server, führen Sie ein Python-Skript aus, um die einzelnen Geodatabases zu aktualisieren, und starten Sie dann ArcGIS-Server neu.
-
Das Service Pack oder Patch für ArcGIS for Server sollte bereits auf der AWS-Instanz installiert sein.
Falls Sie die Software noch nicht installiert haben, finden Sie weitere Informationen unter Anwenden eines Service Packs auf eine Site mit einem Computer oder Anwenden eines Service Packs auf eine Windows-Site mit mehreren Computern.
- Bevor Sie die Geodatabases aktualisieren, müssen Sie Sicherungskopien von ihnen erstellen. Die einfachste Möglichkeit besteht darin, einen Snapshot des EBS-Datenträgers zu erstellen, der Ihre Daten enthält.
- Bevor Sie eine Aktualisierung ausführen, müssen Sie auch die "st_geometry.so"-Datei von /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 nach /usr/lib/postgresql/9.0/lib kopieren.
- Die "st_geometry.so" ist im Besitz des Stammverzeichnisses. Daher müssen Sie Benutzer in "root" ändern, nachdem Sie eine Verbindung zur Amazon Web Services SITEHOST-Instanz als ubuntu hergestellt haben.
sudo su -
- Bevor Sie die neue Datei kopieren, benennen Sie die alte um.
mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
- Kopieren Sie die neue "st_geometry.so"-Datei.
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/9.0/lib
- Ändern Sie die Berechtigungen für die Datei "st_geometry.so", um anderen Benutzern das Lesen und Ausführen der Datei zu erlauben.
chmod 755 /usr/lib/postgresql/9.0/lib/st_geometry.so
- Die "st_geometry.so" ist im Besitz des Stammverzeichnisses. Daher müssen Sie Benutzer in "root" ändern, nachdem Sie eine Verbindung zur Amazon Web Services SITEHOST-Instanz als ubuntu hergestellt haben.
- Wechseln Sie zum Benutzer "arcgis".
su - arcgis
- Öffnen Sie einen Texteditor, um das aktualisierte Python-Skript zu erstellen.
Beispiel:
vi upgrade.py
- Kopieren Sie das folgende Skript in einen Texteditor.
Ändern Sie das Skript, um für Ihre Site spezifische Informationen zu verwenden, darunter der Instanzname, das sde-Kennwort, der Name der Verbindungsdatei und der Datenbankname.
#Import arcpy module import arcpy # Create connection file arcpy.CreateDatabaseConnection_management("/tmp","egdb_connection.sde","POSTGRESSQL","ec2-123-456-789-100.compute-1.amazonaws.com","DATABASE_AUTH", "sde", "E$ri3774", "SAVE_USERNAME", "egdb") # Upgrade geodatabase arcpy.UpgradeGDB_management("/tmp/egdb_connection.sde", "PREREQUISITE_CHECK", "UPGRADE")
Weitere Informationen zur Syntax des Werkzeugs finden Sie unter Erstellen einer Datenbankverbindung und Aktualisieren der Geodatabase.
- Speichern Sie die Datei, und schließen Sie den Texteditor.
- Beenden Sie ArcGIS-Server.
/arcgis/server/stopserver.sh
- Führen Sie das Skript in Python aus.
/arcgis/server/tools/python <path to the file>/upgrade.py
Möglicherweise werden mehrere Meldungen zu Typverweisen angezeigt. Diese können ignoriert werden, sie sind kein Hinweis darauf, dass die Aktualisierung fehlgeschlagen ist.
Wenn die Aktualisierung fehlschlägt, werden Informationen in die Datei "GDBUpgrade.log" unter /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server10.1 geschrieben.
- Um sicherzustellen, dass die Geodatabase aktualisiert wurde, führen Sie Folgendes in Python aus, indem Sie /tmp/egdb_connection.sde durch den Speicherort der Verbindungsdatei und den Namen ersetzen.
Öffnen Sie zunächst eine arcpy-Eingabeaufforderung.
cd /arcgis/server/tools ./python
Verwenden Sie isCurrent, um zu ermitteln, ob die Geodatabase auf die aktuelle Version aktualisiert wurde.
import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Wenn print isCurrent den Wert True zurückgibt, ist die Geodatabase aktualisiert.
- Zum Beenden der arcpy-Eingabeaufforderung geben Sie quit() ein.
- Ändern Sie das Skript, und führen Sie es erneut für jede Geodatabase aus, die aktualisiert werden soll.
- Nachdem alle Geodatabases aktualisiert wurden, starten Sie ArcGIS-Server neu.
/arcgis/server/startserver.sh
Wenn Sie über eine Site mit mehreren Computern verfügen, fahren Sie mit Schritt 13 unter Anwenden eines Service Packs auf eine Ubuntu-Site mit mehreren Computern fort.
Anwenden von Service Packs oder Patches und Aktualisieren von Geodatabases auf EGDBHOST
Anhand der Schritte in diesem Abschnitt wird die Aktualisierung von Geodatabases in PostgreSQL erläutert, die sich auf der eigenen, dedizierten Amazon EC2-Instanz (EGDBHOST) befinden.
Aktualisieren Sie ArcGIS for Server auf SITEHOST, verschieben Sie die neue "st_geometry.so"-Datei von SITEHOST in das "PostgreSQL lib"-Verzeichnis auf EGDBHOST, beenden Sie ArcGIS for Server, führen Sie ein Python-Skript über SITEHOST aus, um die einzelnen Geodatabases zu aktualisieren, und starten Sie dann ArcGIS for Server neu.
-
Installieren Sie das Service Pack oder Patch für ArcGIS for Server auf der AWS-Instanz.
Weitere Anweisungen finden Sie unter Anwenden eines Service Packs auf eine Site mit einem Computer oder Anwenden eines Service Packs auf eine Windows-Site mit mehreren Computern.
- Bevor Sie die Geodatabases aktualisieren, müssen Sie Sicherungskopien von ihnen erstellen. Die einfachste Möglichkeit besteht darin, einen Snapshot des EBS-Datenträgers zu erstellen, der Ihre Daten enthält.
- Bevor Sie eine Aktualisierung ausführen, müssen Sie auch die "st_geometry.so"-Datei von /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 nach /usr/lib/postgresql/9.0/lib kopieren.
- Bevor Sie die neue Datei kopieren, benennen Sie die alte auf EGDBHOST um. Da die "st_geometry.so"-Datei im Besitz des root-Benutzers ist, melden Sie sich bei EGDBHOST als ubuntu an, und wechseln Sie dann zum root-Benutzer.
sudo su - mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
- Sie müssen die "st_geometry.so"-Datei von /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 auf SITEHOST nach /usr/lib/postgresql/9.0/lib auf EGDBHOST verschieben.
Da derselbe Benutzer nicht auf die beiden Quell- und Zielverzeichnisse der verschiedenen Instanzen zugreifen kann, melden Sie sich bei SITEHOST als arcgis-Benutzer an, und kopieren Sie die Datei in das "gisdata"-Verzeichnis auf EGDBHOST.
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /net/EGDBHOST/gisdata/st_geometry.so
- Melden Sie sich bei EGDBHOST als ubuntu an.
- Melden Sie sich als root-Benutzer an.
sudo su -
- Kopieren Sie die Datei "st_geometry.so" von gisdata nach /usr/lib/postgresql/9.0/lib.
cp /gisdata/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometry.so
- Ändern Sie die Berechtigungen für die Datei "st_geometry.so", um anderen Benutzern das Lesen und Ausführen der Datei zu erlauben.
chmod 755 /usr/lib/postgresql/9.0/lib/st_geometry.so
- Bevor Sie die neue Datei kopieren, benennen Sie die alte auf EGDBHOST um. Da die "st_geometry.so"-Datei im Besitz des root-Benutzers ist, melden Sie sich bei EGDBHOST als ubuntu an, und wechseln Sie dann zum root-Benutzer.
- Melden Sie sich bei SITEHOST als arcgis-Benutzer an.
- Öffnen Sie einen Texteditor, um das aktualisierte Python-Skript zu erstellen.
Beispiel:
vi upgrade.py
- Kopieren Sie das folgende Skript in einen Texteditor.
Ändern Sie das Skript, um für Ihre Site spezifische Informationen zu verwenden, darunter der Instanzname, das sde-Kennwort, der Name der Verbindungsdatei und der Datenbankname.
#Import arcpy module import arcpy # Create connection file arcpy.CreateDatabaseConnection_management("/tmp","egdb_connection.sde","POSTGRESSQL","ec2-123-456-789-100.compute-1.amazonaws.com","DATABASE_AUTH", "sde", "E$ri3774", "SAVE_USERNAME", "egdb") # Upgrade geodatabase arcpy.UpgradeGDB_management("/tmp/egdb_connection.sde", "PREREQUISITE_CHECK", "UPGRADE")
Weitere Informationen zur Syntax des Werkzeugs finden Sie unter Erstellen einer Datenbankverbindung und Aktualisieren der Geodatabase.
- Speichern Sie die Datei, und schließen Sie den Texteditor.
- Beenden Sie ArcGIS for Server.
/arcgis/server/stopserver.sh
- Führen Sie das Skript in Python aus.
/arcgis/server/tools/python <path to the file>/upgrade.py
Möglicherweise werden mehrere Meldungen zu Typverweisen angezeigt. Sie können diese Meldungen ignorieren.
Wenn die Aktualisierung fehlschlägt, werden Informationen in die Datei "GDBUpgrade.log" unter /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server10.1 geschrieben.
- Um sicherzustellen, dass die Geodatabase aktualisiert wurde, öffnen Sie Python, und führen Sie Folgendes aus, indem Sie /tmp/egdb_connection.sde durch den Speicherort der Verbindungsdatei und den Namen ersetzen.
Öffnen Sie zunächst eine arcpy-Eingabeaufforderung.
cd /arcgis/server/tools ./python
Verwenden Sie isCurrent, um zu ermitteln, ob die Geodatabase auf die aktuelle Version aktualisiert wurde.
import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Wenn print isCurrent den Wert True zurückgibt, ist die Geodatabase aktualisiert.
- Zum Beenden der arcpy-Eingabeaufforderung geben Sie quit() ein.
- Ändern Sie das "upgrade.py"-Skript, und führen Sie es erneut für jede Geodatabase aus, die aktualisiert werden soll.
- Nachdem alle Geodatabases aktualisiert wurden, starten Sie ArcGIS-Server neu.
/arcgis/server/startserver.sh
Wenn Sie über eine Site mit mehreren Computern verfügen, fahren Sie mit Schritt 13 unter Anwenden eines Service Packs auf eine Ubuntu-Site mit mehreren Computern fort.