Обновление баз геоданных в PostgreSQL в ArcGIS Server for Amazon Web Services
В следующих разделах описаны три сценария обновления баз геоданных:
- Обновление ArcGIS 10 for Amazon Web Services до ArcGIS 10.1 for Amazon Web Services
- Применение пакета обновлений или файла обновлений (патча) к существующему экземпляру ArcGIS 10.1 for Amazon Web Services и обновление баз геоданных, которые находятся на том же экземпляре, что и ArcGIS for Server (SITEHOST)
- Применение пакета обновлений или файла обновлений (патча) к существующему экземпляру ArcGIS 10.1 for Amazon Web Services и обновление баз геоданных, которые находятся на собственном экземпляре Amazon EC2 (EGDBHOST)
Перемещение данных с экземпляра ArcGIS 10 for Amazon Web Services EGDB на экземпляр ArcGIS Server 10.1 for Amazon Web Services
В ArcGIS 10 существовал отдельный образ Amazon Machine Image (AMI) с многопользовательской базой геоданных, которая содержала кластер базы данных PostgreSQL 8.3.8 для Windows. В ArcGIS версии 10.1, образ ArcGIS Server 10.1 (Linux) с PostgreSQL AMI работает на Ubuntu Linux и может дополнительно содержать кластер базы данных PostgreSQL 9.0.5. Вы не можете перейти напрямую с использования базы данных в PostgreSQL на Windows на использование базы данных на Linux. Однако, когда вы переходите на ArcGIS Server 10.1 for Amazon Web Services, вам необходимо переместить или заново загрузить ваши данные. См. раздел "Опции для перемещения файлов в облаке" в документе Способы передачи данных в Amazon Web Services.
Применение пакетов обновлений или файлов обновлений (патчей) и обновление баз геоданных на экземпляре ArcGIS Server EC2 (SITEHOST)
Ваши базы геоданных в PostgreSQL в экземплярах Amazon Web Services (AWS) обычно должны быть обновлены после того, как вы применили пакет обновлений или файл обновлений (патч) к программному обеспечению на вашем экземпляре AWS. Подробные шаги в этом разделе ознакомят вас с процессом обновления баз геоданных в PostgreSQL, находящихся на том же экземпляре, что и ArcGIS for Server (SITEHOST).
Обновите ArcGIS for Server, переместите новый файл st_geometry.so в директорию библиотеки lib PostgreSQL, остановите службу ArcGIS Server, запустите скрипт Python для обновления каждой из баз геоданных, затем перезапустите службу ArcGIS Server.
-
Вы должны заранее установить пакет обновлений или файл обновлений (патч) в ArcGIS for Server на вашем экземпляре AWS.
Если вы еще не установили программное обеспечение, вы можете ознакомиться с инструкциями в разделе Применение пакета обновлений к сайту, находящемуся на отдельном компьютере или Применение пакета обновлений к сайту, состоящему из нескольких компьютеров.
- Создайте резервные копии ваших баз геоданных перед тем, как выполнить их обновление. Самый простой способ сделать это - создать снимок (snapshot) тома (volume) EBS, содержащего ваши данные.
- Также перед началом обновления вы должны скопировать файл st_geometry.so из /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 в /usr/lib/postgresql/9.0/lib.
- Файл st_geometry.so принадлежит пользователю root. Поэтому после подключения к экземпляру Amazon Web Services SITEHOST из-под пользователя ubuntu, переключитесь на пользователя root:
sudo su -
- Перед тем, как вы скопируете новый файл, переименуйте старый.
mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
- Скопируйте новый файл st_geometry.so.
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/9.0/lib
- Измените права доступа для файла st_geometry.so, чтобы позволить другим пользователям читать и выполнять его.
chmod 755 /usr/lib/postgresql/9.0/lib/st_geometry.so
- Файл st_geometry.so принадлежит пользователю root. Поэтому после подключения к экземпляру Amazon Web Services SITEHOST из-под пользователя ubuntu, переключитесь на пользователя root:
- Переключитесь на пользователя arcgis.
su - arcgis
- Откройте текстовый редактор, чтобы создать скрипт обновления Python.
Например:
vi upgrade.py
- Скопируйте следующий скрипт в текстовый редактор.
Измените скрипт, чтобы использовать информацию, относящуюся к вашему сайту, включая имя экземпляра, пароль учетной записи sde, имя файла подключения и его местоположение, а также имя базы данных.
#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")
Более подробно о синтаксисе инструмента см. в разделах Создание подключения к базе данных и Обновление базы геоданных.
- Сохраните файл и закройте текстовый редактор.
- Остановите службу ArcGIS Server.
/arcgis/server/stopserver.sh
- Запустите скрипт в среде Python.
/arcgis/server/tools/python <path to the file>/upgrade.py
Скорее всего, вы получите многочисленные примечания о связях типов. Вы можете проигнорировать их; они не означают ошибку обновления.
Если произошла ошибка обновления, информация будет записана в файл GDBUpgrade.log в папке /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server10.1.
- Чтобы убедиться, что ваша база данных обновлена, запустите в среде Python приведенный ниже код, заменив /tmp/egdb_connection.sde на местоположение и имя вашего файла подключения.
Сначала откройте окно командной строки arcpy.
cd /arcgis/server/tools ./python
Используйте isCurrent, чтобы определить, была ли база геоданных обновлена до текущей версии.
import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Если в результате запуска команды print isCurrent будет отображено True, то база геоданных была обновлена.
- Чтобы выйти из командной строки arcpy, введите quit().
- Измените скрипт и запустите его снова для каждой базы геоданных, которую необходимо обновить.
- Как только все базы геоданных будут обновлены, запустите службу ArcGIS Server.
/arcgis/server/startserver.sh
Если ваш сайт состоит из нескольких компьютеров, перейдите к шагу 13 в разделе Применение пакета обновлений к сайту, состоящему из нескольких компьютеров с Ubuntu.
Применение пакетов обновлений или файлов обновлений (патчей) и обновление баз геоданных на EGDBHOST
Подробные шаги в этом разделе ознакомят вас с процессом обновления баз геоданных в PostgreSQL, находящихся на собственном, выделенном экземпляре Amazon EC2 (EGDBHOST).
Обновите ArcGIS for Server на SITEHOST, переместите новый файл st_geometry.so из SITEHOST в директорию библиотеки lib PostgreSQL на EGDBHOST, остановите службу ArcGIS Server, запустите скрипт Python на SITEHOST для обновления каждой базы геоданных, затем запустите службу ArcGIS Server.
-
Вы должны заранее установить пакет обновлений или файл обновлений (патч) в ArcGIS for Server на вашем экземпляре AWS.
Вы можете ознакомиться с инструкциями в разделе Применение пакета обновлений к сайту, находящемуся на отдельном компьютере или Применение пакета обновлений к сайту, состоящему из нескольких компьютеров.
- Создайте резервные копии ваших баз геоданных перед тем, как выполнить их обновление. Самый простой способ сделать это - создать снимок (snapshot) тома (volume) EBS, содержащего ваши данные.
- Также перед началом обновления вы должны скопировать файл st_geometry.so из папки /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 в /usr/lib/postgresql/9.0/lib.
- Перед тем, как вы скопируете новый файл, переименуйте старый файл на EGDBHOST. Поскольку файл st_geometry.so принадлежит пользователю root, то войдите в EGDBHOST из-под пользователя ubuntu, а затем переключитесь на пользователя root.
sudo su - mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
- Вы должны переместить файл st_geometry.so из /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 на SITEHOST в директорию /usr/lib/postgresql/9.0/lib на EGDBHOST.
Поскольку две исходные и целевые директории на различных экземплярах не могут быть доступны одному и тому же пользователю, войдите на SITEHOST как пользователь arcgis и скопируйте файл в директорию gisdata на EGDBHOST.
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /net/EGDBHOST/gisdata/st_geometry.so
- Выполните вход на EGDBHOST из-под пользователя ubuntu.
- Переключитесь на пользователя root.
sudo su -
- Скопируйте файл st_geometry.so из директории gisdata в /usr/lib/postgresql/9.0/lib.
cp /gisdata/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometry.so
- Измените права доступа для файла st_geometry.so, чтобы позволить другим пользователям читать и производить его запуск.
chmod 755 /usr/lib/postgresql/9.0/lib/st_geometry.so
- Перед тем, как вы скопируете новый файл, переименуйте старый файл на EGDBHOST. Поскольку файл st_geometry.so принадлежит пользователю root, то войдите в EGDBHOST из-под пользователя ubuntu, а затем переключитесь на пользователя root.
- Войдите на SITEHOST из-под пользователя arcgis.
- Откройте текстовый редактор, чтобы создать скрипт обновления Python.
Например:
vi upgrade.py
- Скопируйте следующий скрипт в текстовый редактор.
Измените скрипт, чтобы использовать информацию, относящуюся к вашему сайту, включая имя экземпляра, пароль учетной записи sde, имя файла подключения и его местоположение, и имя базы данных.
#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")
Более подробно о синтаксисе инструмента см. в разделах Создание подключения к базе данных и Обновление базы геоданных.
- Сохраните файл и закройте текстовый редактор.
- Остановите службу ArcGIS Server.
/arcgis/server/stopserver.sh
- Запустите скрипт в среде Python.
/arcgis/server/tools/python <path to the file>/upgrade.py
Скорее всего, вы получите несколько примечаний о связях типов. Вы можете проигнорировать эти сообщения.
Если произошла ошибка обновления, информация будет записана в файл GDBUpgrade.log в папке /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server10.1.
- Чтобы убедиться, что ваша база данных обновлена, откройте окно Python и произведите запуск приведенного ниже кода, заменив /tmp/egdb_connection.sde на местоположение и имя вашего файла подключения:
Сначала откройте окно командной строки arcpy.
cd /arcgis/server/tools ./python
Используйте команду isCurrent, чтобы определить, была ли база геоданных обновлена до текущей версии.
import arcpy isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease print isCurrent
Если при запуске команды print isCurrent будет отображено True, то база геоданных была обновлена.
- Чтобы выйти из командной строки arcpy, введите quit().
- Измените скрипт upgrade.py и запустите его снова для каждой базы геоданных, которую необходимо обновить.
- Как только все базы геоданных будут обновлены, запустите службу ArcGIS Server.
/arcgis/server/startserver.sh
Если ваш сайт состоит из нескольких компьютеров, перейдите к шагу 13 в разделе Применение пакета обновлений к сайту, состоящему из нескольких компьютеров с Ubuntu.