Обновляйте базы геоданных, чтобы использовать реализованные в них новые функциональные возможности и усовершенствования. Варианты выполнения обновления многопользовательской базы геоданных в PostgreSQL на AWS следующие:
- Используйте 10.6.1 Amazon Machine Image (AMI) для создания экземпляра ArcGIS Server 10.6.1 на Amazon Web Services (AWS), создания базы геоданных в более новой версии PostgreSQL, входящей в этот AMI, переноса данных в новую базу геоданных, а также для публикации сервисов.
Этот метод необходимо использовать при обновлении с экземпляра ArcGIS 10.
- Выполните обновление программного обеспечения ArcGIS на существующем экземпляре AWS и обновление базы геоданных.
Если ваша база геоданных находится в кластере баз данных PostgreSQL на AWS, убедитесь в том, что существующая версия PostgreSQL совместима с последней версией ПО ArcGIS. Если нет, вам также потребуется обновить кластер баз данных PostgreSQL.
Если ваша база геоданных находится в Amazon Relational Database Service (RDS) for PostgreSQL, то Amazon автоматически обновит эту версию PostgreSQL, а вам только потребуется обновить базу геоданных после обновления ПО ArcGIS.
Подсказка:
Если в текущий момент данные находятся в кластере баз данных PostgreSQL на AWS и вы желаете перенести свои данные в экземпляр Amazon RDS for PostgreSQL, можно создать базу геоданных в экземпляре Amazon RDS for PostgreSQL, перенести данные и заново опубликовать сервисы.
В разделах ниже описываются способы довести базы геоданных до самого актуального состояния.
Создание экземпляра ArcGIS 10.6.1 на AWS и перемещение данных с предшествующего экземпляра
Чтобы убедиться, что вы получаете последнюю версию программного обеспечения ArcGIS, PostgreSQL и операционной системы, и что вам не придется их обновлять или исправлять, создайте экземпляр ArcGIS Server for AWS из последнего Esri AMI, переместите ваши данные и повторно опубликуйте сервисы. См. ArcGIS Server AMI для получения подробной информации о программном обеспечении и версиях операционных систем, представленных в последних образах Esri AMI.
Более подробно о перемещении данных см. в разделе Способы передачи данных в Amazon Web Services.
В ArcGIS 10 существовал отдельный образ AMI с многопользовательской базой геоданных, которая содержала кластер базы данных PostgreSQL 8.3.8 для Windows. ArcGIS Server AMI, включающие PostgreSQL, теперь работают под Ubuntu Linux. Вы не можете перейти напрямую с использования базы данных в PostgreSQL на Windows на использование базы данных на Linux. Вы также не можете обновить ArcGIS 10 Server до ArcGIS 10.4.1 for Server и поздних версий, поэтому, если вы переходите на текущие ArcGIS AWS AMI с ArcGIS 10 Server for AWS, то вам следует переместить или перезагрузить и заново опубликовать свои данные.
Версия PostgreSQL, входящая в AMI Esri Ubuntu, также со временем изменилась, как показано в следующей таблице:
Версия AMI Esri | Включённая версия PostgreSQL |
---|---|
10.1 | 9.0.5 |
10.2 | 9.0.13 |
10.2.1 и 10.2.2 | 9.2.4 |
10.3 | 9.3.4 |
10.3.1 | 9.3.6 |
10.4.x | 9.3.10 |
10.5.x | 9.3.12 |
10.6.x | 9,5.3 |
Обновление программного обеспечения ArcGIS на существующем экземпляре AWS и обновление базы геоданных
Вы можете обновить ArcGIS Server на вашем существующем экземпляре, обновить свою базу геоданных PostgreSQL, и продолжать использовать существующие данные и сервисы. Будьте внимательны, операционная система и всё остальное программное обеспечение на экземпляре останется прежней версии, которая была при создании вашего экземпляра. Например, если вы создали ваш экземпляр из AMI ArcGIS Server 10.2.2 for AWS, вы продолжите использовать базу данных PostgreSQL 9.2.4 в ОС Ubuntu 12.04. В зависимости от версии ArcGIS Server, до которой вы обновляетесь, версия PostgreSQL может оказаться с ней несовместимой.
Если имеющаяся на вашем экземпляре версия PostgreSQL несовместима с новой версией ArcGIS Server, необходимо также обновить PostgreSQL до поддерживаемой версии. К примеру, если вы запустите экземпляр ArcGIS 10.3 и захотите обновить его на этом экземпляре до ArcGIS Server 10.6.1, то вам будет также необходимо обновить и PostgreSQL до поддерживаемой версии. Более подробную информацию об обновлении PostgreSQL см. в документации PostgreSQL.
Как вы будете обновлять ArcGIS Server на AWS зависит от того, как вы создавали сайт ArcGIS Server.
- Если для создания сайта и баз геоданных ArcGIS Server вы использовали ArcGIS Server Cloud Builder on Amazon Web Services, то для обновления этого сайта с базами геоданных выполните инструкции следующих двух разделов. В первом разделе содержится описание процесса обновления, когда базы геоданных находятся на том же экземпляре EC2, что и ArcGIS Server. Во втором разделе содержится описание процесса обновления, когда базы геоданных находятся на отдельном экземпляре EC2.
- Если для создания сайта ArcGIS Server 10.6 вы использовали предоставленный Esri шаблон AWS CloudFormation, то для обновления ArcGIS Server можно использовать шаблон обновления CloudFormation. После обновления ArcGIS Server, перейдите к выполнению инструкций, которые содержатся в третьем разделе, для обновления базы геоданных в Amazon RDS for PostgreSQL.
- Если вы создали сайт ArcGIS Server 10.5.1 или более ранней версии, используя шаблон CloudFormation, предоставленный Esri, подключитесь к своим экземплярам на AWS и выполните обновление ArcGIS Server точно так же, как выполняется обновление сайта ArcGIS Server, развернутого на местности. Выполните шаги, описанные в третьем разделе, для обновления базы геоданных в Amazon RDS for PostgreSQL.
- Если вы создали сайт из AMI Esri с помощью Консоли управления AWS, подключитесь к своим экземплярам на AWS и выполните обновление ArcGIS Server точно так же, как выполняется обновление сайта ArcGIS Server, развернутого на местности. Если база геоданных находится в кластере баз данных PostgreSQL на AWS, запустите инструмент Обновить базу геоданных с помощью скрипта Python на одном из компьютеров ArcGIS Server, чтобы обновить эту базу геоданных точно так, как обновляется локальная база геоданных. Если база геоданных находится в Amazon RDS for PostgreSQL, следуйте инструкциям третьего раздела для обновления этой базы геоданных.
Обновление баз геоданных на SITEHOST
Если вы создали сайт и базы геоданных ArcGIS Server с помощью ArcGIS Server Cloud Builder on Amazon Web Services, то для обновления баз геоданных в кластере баз данных PostgreSQL, который находится на том же экземпляре, что и SITEHOST ArcGIS Server, выполните шаги, описанные в настоящем разделе.
Обновите ArcGIS Server, переместите новый файл st_geometry.so в папку lib PostgreSQL, остановите ArcGIS Server, запустите скрипт Python для обновления каждой базы геоданных и перезапустите ArcGIS Server.
- Установите последнюю версию ArcGIS Server на своем экземпляре AWS.
Если вы еще не установили программное обеспечение, вы можете ознакомиться с инструкциями в разделе Применение обновления ArcGIS для сайта, состоящего из одного компьютера или Применение обновления ArcGIS для сайта, состоящего из нескольких компьютеров с Ubuntu.
- Создайте резервные копии ваших баз геоданных перед тем, как выполнить их обновление. Самый простой способ это сделать – создать резервную копию вашего сайта в Cloud Builder (если вы создали ваш сайт с помощью Cloud Builder) или сделать снимок тома EBS, который содержит ваши данные. Если вы желаете сделать снимок тома EBS, см. документацию Amazon Web Services для подробной информации.
- Также до обновления скопируйте файл st_geometry.so из /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 в /usr/lib/postgresql/<postgresql version>/lib.
- Файл st_geometry.so принадлежит пользователю root, следовательно, после подключения к экземпляру Amazon Web Services SITEHOST из-под ubuntu переключите пользователя на root:
sudo su -
Примечание:
Помните о том, что вы не можете подключиться, как пользователь arcgis, и затем переключиться на пользователя root.
- Перед тем как вы скопируете новый файл, переименуйте старый.
mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
- Скопируйте новый файл st_geometry.so.
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib
- Измените права доступа для файла st_geometry.so, чтобы позволить другим пользователям читать и производить его запуск.
chmod 755 /usr/lib/postgresql/<postgresql version>/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","POSTGRESQL","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/Server<#>, если происходит ошибка обновления.
- Запустите следующий код в 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().
- Измените скрипт и запустите его снова для каждой базы геоданных, которую необходимо обновить.
- Если вам требуется обновить PostgreSQL до поддерживаемой, создайте резервную копию базы данных и перейдите к обновлению PostgreSQL. Порядок обновления PostgreSQL зависит от имеющей версии PostgreSQL и версии, которую вы хотите использовать. Дополнительные сведения см. в документации к PostgreSQL.
- После обновления всех баз геоданных (и, при необходимости, баз данных) перезапустите ArcGIS Server.
/arcgis/server/startserver.sh
Если ваш сайт состоит из нескольких компьютеров, то перейдите к шагу 11 в разделе Применение обновления ArcGIS для сайта, состоящего из нескольких компьютеров с Ubuntu.
Обновление баз геоданных, которые находятся на своем собственном экземпляре AWS (EGDBHOST)
Если вы создали сайт ArcGIS Server с базами геоданных с помощью ArcGIS Server Cloud Builder on Amazon Web Services, выполните шаги, описанные в данном разделе, чтобы обновить базы геоданных в PostgreSQL, которые располагаются на собственном, специальном экземпляре AWS (EGDBHOST).
Обновите ArcGIS Server на SITEHOST, переместите новый файл st_geometry.so из SITEHOST в папку lib PostgreSQL на EGDBHOST, остановите ArcGIS Server, запустите скрипт Python из SITEHOST для обновления каждой базы геоданных и перезапустите ArcGIS Server.
- Установите новую версию ArcGIS Server на своем экземпляре AWS.
- Создайте резервные копии ваших баз геоданных перед тем, как выполнить их обновление. Самый простой способ сделать это – создать снимок тома EBS, содержащего ваши данные. Для получения инструкций по созданию снимка тома EBS см. документацию Amazon Web Services.
- Также до обновления скопируйте файл st_geometry.so из /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 в /usr/lib/postgresql/<postgresql version>/lib.
- Перед тем, как вы скопируете новый файл, переименуйте старый файл на EGDBHOST. Поскольку файл st_geometry.so принадлежит пользователю root, то войдите в EGDBHOST из-под пользователя ubuntu и переключитесь на пользователя root.
sudo su - mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
- Вам следует переместить файл st_geometry.so из /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 на SITEHOST в /usr/lib/postgresql/<postgresql version>/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/<postgresql version>/lib.
cp /gisdata/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
- Измените права доступа для файла st_geometry.so, чтобы позволить другим пользователям читать и производить его запуск.
chmod 755 /usr/lib/postgresql/<postgresql version>/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","POSTGRESQL","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/Server<#>.
- Чтобы убедиться, что ваша база данных обновлена, откройте окно 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 и запустите его снова для каждой базы геоданных, которую необходимо обновить.
- Если вам требуется обновить PostgreSQL до поддерживаемой, создайте резервную копию базы данных и перейдите к обновлению PostgreSQL. Порядок обновления PostgreSQL зависит от имеющей версии PostgreSQL и версии, которую вы хотите использовать. Дополнительные сведения см. в документации к PostgreSQL.
- После обновления всех баз геоданных (и, при необходимости, баз данных) перезапустите ArcGIS Server.
/arcgis/server/startserver.sh
Если ваш сайт состоит из нескольких компьютеров, то перейдите к шагу 11 в разделе Применение обновления ArcGIS для сайта, состоящего из нескольких компьютеров с Ubuntu.
Обновление баз геоданных в Amazon RDS for PostgreSQL
После обновления сайта ArcGIS Server на AWS выполните следующие шаги, чтобы обновить базы геоданных в Amazon RDS for PostgreSQL.
- Убедитесь в том, что у вас имеется надежная, актуализированная резервная копия базы данных в Amazon RDS for PostgreSQL.
- Подключитесь к Amazon RDS for PostgreSQL и убедитесь, что пользователю sde предоставлена роль rds_superuser.
- Войдите в один из своих экземпляров ArcGIS Server на AWS в качестве пользователя arcgis.
- В текстовом редакторе создайте скрипт Python для обновления своей базы геоданных.
Пример:
vi upgrade.py
- Скопируйте следующий скрипт в текстовый редактор.
Измените скрипт, чтобы использовать информацию, относящуюся к вашему сайту, включая имя экземпляра, пароль учетной записи sde, имя файла подключения и его местоположение, и имя базы данных.
#Import arcpy module import arcpy # Create connection file arcpy.CreateDatabaseConnection_management("/tmp","egdbrds_connection.sde","POSTGRESQL","my_db_instance_identifier.awsregion_id.rds.amazonaws.com","DATABASE_AUTH", "sde", "E$ri3774", "SAVE_USERNAME", "egdb") # Upgrade geodatabase arcpy.UpgradeGDB_management("/tmp/egdbrds_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/Server<#>.
- Чтобы убедиться, что ваша база данных обновлена, откройте окно Python и произведите запуск приведенного ниже кода, заменив /tmp/egdbrds_connection.sde на местоположение и имя вашего файла подключения.
Сначала откройте окно командной строки arcpy.
cd /arcgis/server/tools ./python
Используйте команду isCurrent, чтобы определить, была ли база геоданных обновлена до текущей версии.
import arcpy isCurrent = arcpy.Describe('/tmp/egdbrds_connection.sde').currentRelease print isCurrent
Если при запуске команды print isCurrent будет отображено True, значит, база геоданных была обновлена.
- Чтобы выйти из командной строки arcpy, введите quit().
- Измените этот скрипт upgrade.py и снова запустите его, и так далее для каждой базы геоданных, которую необходимо обновить.