升级地理数据库以利用地理数据库中实现的新增功能和改进。 要升级 Amazon Web Services (AWS) 上 PostgreSQL 中的企业级地理数据库,请执行以下操作之一:
- 更新现有 Amazon Elastic Compute Cloud (EC2) 实例上的 ArcGIS 软件并升级地理数据库。
如果地理数据库位于 AWS 上的 PostgreSQL 数据库集群中,请确保现有 PostgreSQL 版本与最新版本的 ArcGIS 软件兼容。 如果不兼容,则您还必须升级 PostgreSQL 数据库集群。
如果地理数据库已存在于 Amazon Relational Database Service (RDS) for PostgreSQL 中,则 Amazon 将自动更新 PostgreSQL 版本;因此,您仅需在升级 ArcGIS 软件后升级地理数据库即可。
- 将内容迁移到 Amazon 关系数据库服务实例中的新地理数据库。
此方法更加耗时,但如果要从 ArcGIS 10 实例进行升级,则必须使用此方法,原因是没有从 10 直接升级到 11.3 的路径。 如果要将数据从现有的 PostgreSQL 数据库集群或 Microsoft SQL Server 实例迁移到 Amazon RDS for PostgreSQL 或 Amazon Aurora (PostgreSQL-compatible edition),则您也可以使用此方法,以便利用适用于这些实例的自动更新 Amazon。
注:
如果地理数据库包含分支版本化数据,则可能需要附加升级后步骤。 有关说明,请参阅升级地理数据库的工作原理。
以下部分将介绍有关如何将地理数据库升级至最新可用状态的方法。
更新现有 AWS 实例上的 ArcGIS 软件并升级地理数据库
您可以先在现有 EC2 实例上升级 ArcGIS Server,在 PostgreSQL 中升级地理数据库,然后继续使用现有的数据和服务。 但请注意,这意味着实例上的操作系统和所有其他软件仍为创建实例时的版本。 例如,如果是在 ArcGIS Server 10.2.2 for Amazon Machine Image 中创建的实例,则将继续使用 Ubuntu 12.04 操作系统上的 PostgreSQL 9.2.4 数据库。 根据升级到的 ArcGIS Server 版本不同,这些版本的 PostgreSQL 和操作系统可能与 ArcGIS Server 的已升级版本不兼容。
如果实例上的现有 PostgreSQL 版本与 ArcGIS Server 的新版本不兼容,您还必须将 PostgreSQL 升级到受支持的版本。 例如,如果您启动了 ArcGIS 10.8 实例,并希望在该实例上升级到 ArcGIS Server 11.3,则您必须同时将 PostgreSQL 升级到受支持的版本。 有关升级 PostgreSQL 的信息,请参阅 PostgreSQL 文档。
如果新版本的 PostgreSQL 或 ArcGIS Server 不支持操作系统版本,则您还必须更新操作系统版本,或者将数据移动到新实例并重新发布服务。
升级 AWS 上 ArcGIS Server 的方法取决于您以何种方式创建 ArcGIS Server 站点。 有关如何在 AWS 上升级 ArcGIS Server 的信息,请参阅 Amazon Web Services 上的 ArcGIS 升级。 升级 ArcGIS Server 之后,请按照说明升级 Amazon RDS for PostgreSQL 中的地理数据库。
如果您使用 ArcGIS Server Cloud Builder on Amazon Web Services 10.6.1 或更早版本创建了 ArcGIS Server 站点和地理数据库,则请参阅 PostgreSQL 位置的相应说明:该位置位于 SITEHOST 实例或 EGDBHOST 实例上。
升级 Amazon RDS for PostgreSQL 中的地理数据库
升级 AWS 上的 ArcGIS Server 站点后,请按照以下步骤升级 Amazon RDS for PostgreSQL 中的地理数据库。
- 请确认 Amazon RDS for PostgreSQL 中包含数据库的最新可靠备份。
- 连接到 Amazon RDS for PostgreSQL,并确认 sde 用户具有升级所需的权限。
- 以 arcgis 用户的身份登录到其中一个 ArcGIS Server EC2 实例。
- 打开文本编辑器,创建 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")
- 保存文件并关闭文本编辑器。
- 请使用 stopserver.sh 以停止 ArcGIS Server。
- 在 Python 中运行升级脚本。
/arcgis/server/tools/python <path to the file>/upgrade.py
如果升级失败,则信息将写入 /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#> 中的 GDBUpgrade.log。
- 为确保地理数据库的升级,请打开 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 脚本并再次为需要升级的每个地理数据库运行该脚本。
在 SITEHOST 上升级地理数据库
如果您使用 ArcGIS Server Cloud Builder on Amazon Web Services 创建了 ArcGIS Server 站点和地理数据库,请按照本部分中的步骤升级与 ArcGIS Server SITEHOST 位于同一实例上的 PostgreSQL 数据库集群中的地理数据库。
注:
您无法将 ArcGIS Server 10.6.1 和较早版本直接升级到 11.3。 必须先升级到中间版本,然后再升级到 11.3。
另请注意,最初使用 ArcGIS Server Cloud Builder on Amazon Web Services 10.6.1 创建的 PostgreSQL 中的任何地理数据库都需要将 PostgreSQL 升级到受支持的版本并将 Ubuntu 操作系统升级到受支持的版本。 您可能还需要将其中的每一个升级到中间版本。 例如,如果您要升级具有 PostgreSQL 中的地理数据库的 ArcGIS Server 10.5.1 站点,请将 ArcGIS Server 升级到 10.7.1,并将操作系统和 PostgreSQL 升级到 10.7.1 支持的版本。
在升级之前,始终创建数据库和站点的备份。 在继续升级到 11.3 之前,请测试中间升级。
如何升级 PostgreSQL 取决于 PostgreSQL 的当前版本和要升级到的版本。 有关说明,请参阅 PostgreSQL 文档。
将 PostgreSQL 和 Ubuntu 升级到受支持的版本后,请升级 ArcGIS Server,从 My Esri 下载新的 st_geometry.so 文件,将该文件放置在 PostgreSQL lib 目录中,停止 ArcGIS Server,运行 Python 脚本以升级每个地理数据库,然后重新启动 ArcGIS Server。
- 在 EC2 实例上安装新版本的 ArcGIS Server 并按照升级本地 ArcGIS Server 站点的方式对其进行升级。
请参阅 ArcGIS Server 安装指南 以获取升级说明。
- 在升级地理数据库之前,请对其进行备份。
一种备份地理数据库的方法是创建包含数据的 EBS 卷的快照。 有关说明,请参阅 Amazon Web Services 文档。
- 同样,在升级之前,请从 My Esri 下载 st_geometry.so 文件并将该文件放置在 /usr/lib/postgresql/<postgresql version>/lib 中。
- st_geometry.so 文件为根用户所拥有;因此,以 ubuntu 身份连接到 Amazon Web Services SITEHOST 实例之后,将用户转换到根用户:
sudo su -
注:
您不能以 arcgis 用户身份连接并切换为根用户。
- 在放置新文件之前,请重命名旧文件。
mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
- 从新 st_geometry.so 文件下载到的目录中复制该文件。
cp /usr/downloads/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 文件为根用户所拥有;因此,以 ubuntu 身份连接到 Amazon Web Services SITEHOST 实例之后,将用户转换到根用户:
- 切换到 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")
- 保存文件并关闭文本编辑器。
- 请使用 stopserver.sh 以停止 ArcGIS Server。
- 在 Python 中运行升级脚本。
/arcgis/server/tools/python <path to the file>/upgrade.py
您可能会看到多个有关类型引用的通知。 您可以忽略这些通知,它们并不表示升级失败。
如果升级失败,则信息将写入 /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#> 中的 GDBUpgrade.log。
- 在 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()。
- 更改脚本并为需要升级的每个地理数据库运行该脚本。
- 升级所有地理数据库后,请使用 startserver.sh 重新启动 ArcGIS Server。
在 EGDBHOST 上升级地理数据库
如果您使用 ArcGIS Server Cloud Builder on Amazon Web Services 创建了 ArcGIS Server 站点和地理数据库,请按照本部分中的步骤升级其自身专用的 AWS 实例 (EGDBHOST) 上的 PostgreSQL 中的地理数据库。
注:
您无法将 ArcGIS Server 10.6.1 和较早版本直接升级到 11.3。 必须先升级到中间版本,然后再升级到 11.3。
最初使用 ArcGIS Server Cloud Builder on Amazon Web Services 10.6.1 或更低版本创建的 PostgreSQL 中的任何地理数据库都需要将 PostgreSQL 升级到受支持的版本并将 Ubuntu 操作系统升级到受支持的版本。 您可能还需要将其中的每一个升级到中间版本。 例如,如果您要升级具有 PostgreSQL 中的地理数据库的 ArcGIS Server 10.5.1 站点,请将 ArcGIS Server 升级到 10.7.1,并将操作系统和 PostgreSQL 升级到 10.7.1 支持的版本。
在升级之前,始终创建数据库和站点的备份。 在继续升级到 11.3 之前,请测试中间升级。
如何升级 PostgreSQL 取决于 PostgreSQL 的当前版本和要升级到的版本。 有关说明,请参阅 PostgreSQL 文档。
升级 PostgreSQL 和 Ubuntu 后,请升级 SITEHOST 上的 ArcGIS Server,从 My Esri 下载新的 st_geometry.so 文件并将其放置在 EGDBHOST 上的 PostgreSQL lib 目录中,停止 ArcGIS Server,从 SITEHOST 运行 Python 脚本以升级每个地理数据库,然后重新启动 ArcGIS Server。
- 在 EC2 实例上安装新版本的 ArcGIS Server 并按照升级本地 ArcGIS Server 站点的方式对其进行升级。
有关升级说明,请参阅 ArcGIS Server 安装指南。
- 在升级地理数据库之前,请对其进行备份。
一种备份地理数据库的方法是创建包含数据的 EBS 卷的快照。 有关创建 EBS 卷快照的操作说明,请参阅 Amazon Web Services 文档。
- 同样,在升级之前,请从 My Esri 下载 st_geometry.so 文件并将其放置在 /usr/lib/postgresql/<postgresql version>/lib 中。
- 在放置新文件之前,请重命名 EGDBHOST 上的旧文件。 由于 st_geometry.so 文件为根用户所拥有,因此请以 ubuntu 身份登录到 EGDBHOST,然后切换为根用户。
sudo su - mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
- 从已下载 st_geometry.so 文件的目录中复制该文件。
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 文件为根用户所拥有,因此请以 ubuntu 身份登录到 EGDBHOST,然后切换为根用户。
- 以 arcgis 用户身份登录到 SITEHOST。
- 打开文本编辑器,创建升级 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")
- 保存文件并关闭文本编辑器。
- 请使用 stopserver.sh 以停止 ArcGIS Server。
- 在 Python 中运行升级脚本。
/arcgis/server/tools/python <path to the file>/upgrade.py
您可能会看到多个有关类型引用的通知。 您可以忽略这些消息。
如果升级失败,则信息将写入 /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#> 中的 GDBUpgrade.log。
- 为确认地理数据库的升级,请打开 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 脚本并再次为需要升级的每个地理数据库运行该脚本。
- 升级所有地理数据库后,请使用 startserver.sh 以重新启动 ArcGIS Server。
将内容迁移到 Amazon 数据库服务实例中的 11.3 地理数据库
如果您要从 AWS 上的 ArcGIS 10 进行升级,或者如果您希望避免升级并维护 PostgreSQL 和操作系统,请将您的内容移动到 Amazon Relational Database Service (RDS) 实例并重新发布服务。 以下是此迁移的摘要:
- 在 Amazon RDS for PostgreSQL 或 Amazon Aurora (PostgreSQL-compatible edition) 实例中创建地理数据库并将其注册到已升级的(或新的)ArcGIS Server 11.3 站点。
- 将现有数据移动到新地理数据库中。
- 重新发布服务。
有关发布服务的信息,请参阅 ArcGIS Server 帮助。
- 更新应用程序以使用新服务。
如何执行此操作取决于应用程序的创建方式。 对于直接使用该服务的自定义应用程序,请更新服务 URL。 对于使用 ArcGIS Enterprise 门户或 ArcGIS Online 项目创建的应用程序,您必须更新应用程序中所使用的地图或场景中的图层。