升级地理数据库以利用地理数据库中实现的新增功能和改进。要升级 AWS 上 PostgreSQL 中的企业级地理数据库,请执行以下操作之一:
- 使用 10.6.1 Amazon 机器映像 (AMI) 在 Amazon Web Services (AWS) 上创建 ArcGIS Server 10.6.1 实例,在此 AMI 中包含的较新版本的 PostgreSQL 中创建一个地理数据库,然后将数据移动到新地理数据库中并重新发布服务。
如果要从 ArcGIS 10 实例进行升级,则必须使用此方法。
- 更新现有 AWS 实例上的 ArcGIS 软件并升级地理数据库。
如果您的地理数据库位于 AWS 上的 PostgreSQL 数据库集群中,请确保现有 PostgreSQL 版本与最新版本的 ArcGIS 软件兼容。如果不兼容,则您还需要升级 PostgreSQL 数据库集群。
如果您的地理数据库位于 Amazon Relational Database Service (RDS) for PostgreSQL 中,则 Amazon 将自动更新 PostgreSQL 版本,因此您只需在升级 ArcGIS 软件后升级地理数据库即可。
提示:
如果您的数据当前位于 AWS 上的 PostgreSQL 数据库集群中,并且您希望将数据移动到 Amazon RDS for PostgreSQL 实例中,则可以在 Amazon RDS for PostgreSQL 实例中创建一个地理数据库,然后移动数据并重新发布服务。
以下部分将介绍有关如何将地理数据库升级至最新可用状态的方法。
创建一个 ArcGIS 10.6.1 on AWS 实例,并移动旧实例中的数据
要确保您无需进行升级或修补即可获得最新版本的 ArcGIS 软件、PostgreSQL 和操作系统,请根据最新的 Esri AMI 创建一个 ArcGIS Server for AWS 示例,然后移动数据并重新发布服务。有关在最新的 ArcGIS Server AMI 中有哪些软件和操作系统版本的信息,请参阅 Esri AMI。
有关移动数据的信息,请参阅向 Amazon Web Services 传输数据的策略。
在 ArcGIS 10 中,有一个单独的企业级地理数据库 AMI,它包含了 Windows 上的 PostgreSQL 8.3.8 数据库集群。包含 PostgreSQL 的 ArcGIS Server AMI 现在可以在 Ubuntu Linux 上运行。不能从 Windows 上的 PostgreSQL 数据库直接移动到 Linux 上的数据库。您也不能将 ArcGIS 10 Server 升级至 ArcGIS 10.1 for Server 或更高版本,因此,如果要从 ArcGIS 10 Server for AWS 迁移到当前 ArcGIS AWS AMI,则必须移动或重新加载数据并重新发布。
Esri Ubuntu AMI 包含的 PostgreSQL 版本也会随时间而变化,如下表所示:
Esri AMI 版本 | 包括 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 |
更新现有 AWS 实例上的 ArcGIS 软件并升级地理数据库
您可以先在现有实例上升级 ArcGIS Server,在 PostgreSQL 中升级地理数据库,然后继续使用现有的数据和服务。但请注意,这意味着实例上的操作系统和所有其他软件仍为创建实例时的版本。例如,如果是在 ArcGIS Server 10.2.2 for AWS AMI 中创建的实例,则将继续使用 Ubuntu 12.04 操作系统上的 PostgreSQL 9.2.4 数据库。根据您升级到的 ArcGIS Server 版本的不同,该版本 PostgreSQL 可能不兼容。
如果实例上的现有 PostgreSQL 版本与 ArcGIS Server 的新版本不兼容,您还需要将 PostgreSQL 升级到支持的版本。例如,如果您启动了 ArcGIS 10.3 实例,并希望在该实例上升级到 ArcGIS Server 10.6.1,则您必须同时将 PostgreSQL 升级到受支持的版本。有关升级 PostgreSQL 的信息,请参阅 PostgreSQL 文档。
请注意,在 AWS 上升级 ArcGIS Server 的方式取决于您创建 ArcGIS Server 站点的方式。
- 如果您使用了 ArcGIS Server Cloud Builder on Amazon Web Services 来创建 ArcGIS Server 站点和地理数据库,请按照接下来的两个部分中的说明来升级站点和地理数据库。第一部分将介绍当地理数据库与 ArcGIS Server 位于相同 EC2 实例上时的升级方式。第二部分将介绍地理数据库位于单独的 EC2 实例上时的升级方式。
- 如果您使用了 Esri 提供的 AWS CloudFormation 模板来创建 ArcGIS Server 10.6 站点,则您可以使用升级 CloudFormation 模板来升级 ArcGIS Server。升级 ArcGIS Server 后,请按照第三部分中的说明来升级 Amazon RDS for PostgreSQL 中的地理数据库。
- 如果您使用 Esri 提供的 CloudFormation 模板创建了 ArcGIS Server 10.5.1 或更早版本的站点,请连接到 AWS 上的实例,然后按照升级本地部署的 ArcGIS Server 站点的方式升级 ArcGIS Server。按照第三部分中的步骤来升级 Amazon RDS for PostgreSQL 中的地理数据库。
- 如果您使用 AWS 管理控制台根据 Esri AMI 创建了站点,请连接到 AWS 上的实例,然后按照升级本地部署的 ArcGIS Server 站点的方式升级 ArcGIS Server。如果您的地理数据库位于 AWS 上的 PostgreSQL 数据库集群中,请在其中一台 ArcGIS Server 计算机上通过 Python 脚本运行升级地理数据库工具,按照升级本地地理数据库的方式对地理数据库进行升级。如果您的地理数据库位于 Amazon RDS for PostgreSQL 中,请按照第三部分中的说明来升级地理数据库。
在 SITEHOST 上升级地理数据库
如果您使用 ArcGIS Server Cloud Builder on Amazon Web Services 创建了 ArcGIS Server 站点和地理数据库,请按照本部分中的步骤升级与 ArcGIS Server SITEHOST 位于同一实例上的 PostgreSQL 数据库集群中的地理数据库。
更新 ArcGIS Server,将新的 st_geometry.so 文件移至 PostgreSQL lib 目录,停止 ArcGIS Server,运行 Python 脚本升级每个地理数据库,然后重新启动 ArcGIS Server。
- 在 AWS 实例上安装最新版本的 ArcGIS Server。
如果尚未安装此软件,请参阅将 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 文件为根用户所拥有;因此,以 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 /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 文件为根用户所拥有;因此,以 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")
- 保存文件并关闭文本编辑器。
- 停止 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
如果是多机站点,请继续执行将 ArcGIS 更新应用于 Ubuntu 多机站点中的步骤 11。
升级位于其自己的 AWS 实例 (EGDBHOST) 上的地理数据库
如果您使用 ArcGIS Server Cloud Builder on Amazon Web Services 创建了 ArcGIS Server 站点和地理数据库,请按照本部分中的步骤升级其自身专用的 AWS 实例 (EGDBHOST) 上的 PostgreSQL 中的地理数据库。
更新 SITEHOST 上的 ArcGIS Server,将新的 st_geometry.so 文件从 SITEHOST 移至 EGDBHOST 上的 PostgreSQL lib 目录,停止 ArcGIS Server,从 SITEHOST 运行 Python 脚本升级每个地理数据库,然后重新启动 ArcGIS Server。
- 在 AWS 实例上安装新版本的 ArcGIS Server。
了解相关说明,请参阅将 ArcGIS 更新应用于单机站点或将 ArcGIS 更新应用于 Ubuntu 多机站点。
- 在升级地理数据库之前,请对其进行备份。执行此操作的最简单方法是创建包含数据的 EBS 卷的快照。有关创建 EBS 卷快照的操作说明,请参阅 Amazon Web Services 文档。
- 同样,升级前您必须将 st_geometry.so 文件从 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 复制到 /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 文件从 SITEHOST 上的 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 移至 EGDBHOST 上的 /usr/lib/postgresql/<postgresql version>/lib。
由于这两个位于不同实例上的源和目标目录无法由同一用户访问,因此以 arcgis 用户身份登录到 SITEHOST,然后将文件复制到 EGDBHOST 上的 gisdata 目录中。
cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /net/EGDBHOST/gisdata/st_geometry.so
- 以 ubuntu 身份登录到 EGDBHOST。
- 切换为根用户。
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 文件为根用户所拥有,因此以 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")
- 保存文件并关闭文本编辑器。
- 停止 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
如果是多机站点,请继续执行将 ArcGIS 更新应用于 Ubuntu 多机站点中的步骤 11。
升级 Amazon RDS for PostgreSQL 中的地理数据库
升级 AWS 上的 ArcGIS Server 站点后,请按照以下步骤升级 Amazon RDS for PostgreSQL 中的地理数据库。
- 请确保 Amazon RDS for PostgreSQL 中包含数据库的最新可靠备份。
- 连接到 Amazon RDS for PostgreSQL 并确认 sde 用户已被授予 rds_superuser 角色。
- 以 arcgis 用户的身份登录到 AWS 上的其中一个 ArcGIS Server 实例。
- 打开文本编辑器,创建 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 脚本并再次为需要升级的每个地理数据库运行该脚本。