Skip To Content

升级 Amazon Web Services 的 PostgreSQL 中的地理数据库

升级地理数据库以利用地理数据库中实现的新增功能和改进。要升级 Amazon Web Services (AWS)PostgreSQL 中的企业级地理数据库,请执行以下操作之一:

  • 更新现有 AWS 实例上的 ArcGIS 软件并升级地理数据库

    如果您的地理数据库位于 AWS 上的 PostgreSQL 数据库集群中,请确保现有 PostgreSQL 版本与最新版本的 ArcGIS 软件兼容。如果不兼容,则您还需要升级 PostgreSQL 数据库集群。

    如果您的地理数据库已经存在于 Amazon Relational Database Service (RDS) for PostgreSQL 中,则 Amazon 将自动更新 PostgreSQL 版本,因此您只需在升级 ArcGIS 软件后升级地理数据库即可。

  • 将内容迁移到 Amazon 数据库服务实例中的新地理数据库

    此方法更加耗时,但如果要从 ArcGIS 10 实例进行升级,则必须使用此方法,原因是没有从 10 直接升级到 10.9 的路径。如果要将数据从现有的 PostgreSQL 数据库集群或 Microsoft SQL Server 实例迁移到 Amazon RDS for PostgreSQLAmazon Aurora (PostgreSQL-compatible edition),则您也可以使用此方法,以便利用适用于这些实例的自动更新 Amazon

以下部分将介绍有关如何将地理数据库升级至最新可用状态的方法。

更新现有 AWS 实例上的 ArcGIS 软件并升级地理数据库

您可以先在现有实例上升级 ArcGIS Server,在 PostgreSQL 中升级地理数据库,然后继续使用现有的数据和服务。但请注意,这意味着实例上的操作系统和所有其他软件仍为创建实例时的版本。例如,如果是在 ArcGIS Server 10.2.2 for AWS AMI 中创建的实例,则将继续使用 PostgreSQL 12.04 操作系统上的 Ubuntu 9.2.4 数据库。根据您升级到的 ArcGIS Server 版本的不同,该版本 PostgreSQL 可能不兼容

如果实例上的现有 PostgreSQL 版本与 ArcGIS Server 的新版本不兼容,您还需要将 PostgreSQL 升级到支持的版本。例如,如果您启动了 ArcGIS 10.3 实例,并希望在该实例上升级到 ArcGIS Server 10.9,则您必须同时将 PostgreSQL 升级到受支持的版本。有关升级 PostgreSQL 的信息,请参阅 PostgreSQL 文档

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 中的地理数据库。

  1. 请确保 Amazon RDS for PostgreSQL 中包含数据库的最新可靠备份。
  2. 连接到 Amazon RDS for PostgreSQL 并确认 sde 用户已被授予 rds_superuser 角色。
  3. 以 arcgis 用户的身份登录到 AWS 上的其中一个 ArcGIS Server 实例。
  4. 打开文本编辑器,创建 Python 脚本以升级地理数据库。

    例如:

    vi upgrade.py

  5. 将以下脚本复制到文本编辑器中。

    将脚本更改为使用特定于您站点的信息,包括实例名称、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")

    有关工具语法的详细信息,请参阅创建数据库连接升级地理数据库

  6. 保存文件并关闭文本编辑器。
  7. 停止 ArcGIS Server
    /arcgis/server/stopserver.sh
  8. 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

  9. 为确保地理数据库的升级,请打开 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,则地理数据库已升级。

  10. 要退出 arcpy 提示符,输入 quit()
  11. 更改 upgrade.py 脚本并再次为需要升级的每个地理数据库运行该脚本。

在 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

  1. AWS 实例上安装新版本的 ArcGIS Server 并按照升级本地 ArcGIS Server 站点的方式对其进行升级。

    有关升级说明,请参阅 ArcGIS Server 安装指南

  2. 在升级地理数据库之前,请对其进行备份。执行此操作的最简单方法是创建包含数据的 EBS 卷的快照。有关说明,请参阅 Amazon Web Services 文档。
  3. 同样,升级前您必须将 st_geometry.so 文件从 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 复制到 /usr/lib/postgresql/<postgresql version>/lib
    1. st_geometry.so 文件为根用户所拥有;因此,以 ubuntu 身份连接到 Amazon Web Services SITEHOST 实例之后,将用户转换到根用户:
      sudo su -
      注:

      请注意,您不能以 arcgis 用户身份连接及切换为根用户。

    2. 复制新文件之前,重命名旧文件。
      mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
    3. 复制新的 st_geometry.so 文件。
      cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib
    4. 更改 st_geometry.so 文件的权限,以允许其他用户读取和执行该文件。
      chmod 755 /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
  4. 切换到 arcgis 用户。
    su - arcgis
  5. 打开文本编辑器,创建升级 Python 脚本。

    vi upgrade.py

  6. 将以下脚本复制到文本编辑器中。

    将脚本更改为使用特定于您站点的信息,包括实例名称、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")

    有关工具语法的详细信息,请参阅创建数据库连接升级地理数据库

  7. 保存文件并关闭文本编辑器。
  8. 停止 ArcGIS Server
    /arcgis/server/stopserver.sh
  9. 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

  10. 运行 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,则地理数据库已升级。

  11. 要退出 arcpy 提示符,输入 quit()
  12. 更改脚本并再次为需要升级的每个地理数据库运行该脚本。
  13. 如果需要将 PostgreSQL 升级到支持的版本,请创建数据库备份,然后继续升级 PostgreSQL。如何升级 PostgreSQL 取决于 PostgreSQL 的当前版本和要升级到的版本。有关说明,请参阅 PostgreSQL 文档
  14. 升级完所有地理数据库后(以及数据库,如有必要),重新启动 ArcGIS Server

    /arcgis/server/startserver.sh

在 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

  1. AWS 实例上安装新版本的 ArcGIS Server 并按照升级本地 ArcGIS Server 站点的方式对其进行升级。

    有关升级说明,请参阅 ArcGIS Server 安装指南

  2. 在升级地理数据库之前,请对其进行备份。执行此操作的最简单方法是创建包含数据的 EBS 卷的快照。有关创建 EBS 卷快照的操作说明,请参阅 Amazon Web Services 文档。
  3. 同样,升级前您必须将 st_geometry.so 文件从 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 复制到 /usr/lib/postgresql/<postgresql version>/lib
    1. 复制新文件之前,请重命名 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
    2. 您必须将 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
    3. 以 ubuntu 身份登录到 EGDBHOST。
    4. 切换为根用户。
      sudo su -
    5. st_geometry.so 文件从 gisdata 复制到 /usr/lib/postgresql/<postgresql version>/lib
      cp /gisdata/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
    6. 更改 st_geometry.so 文件的权限,以允许其他用户读取和执行该文件。
      chmod 755 /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
  4. 以 arcgis 用户身份登录到 SITEHOST。
  5. 打开文本编辑器,创建升级 Python 脚本。

    例如:

    vi upgrade.py

  6. 将以下脚本复制到文本编辑器中。

    将脚本更改为使用特定于您站点的信息,包括实例名称、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")

    有关工具语法的详细信息,请参阅创建数据库连接升级地理数据库

  7. 保存文件并关闭文本编辑器。
  8. 停止 ArcGIS Server
    /arcgis/server/stopserver.sh
  9. 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

  10. 为确保地理数据库的升级,请打开 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,则地理数据库已升级。

  11. 要退出 arcpy 提示符,输入 quit()
  12. 更改 upgrade.py 脚本并再次为需要升级的每个地理数据库运行该脚本。
  13. 如果需要将 PostgreSQL 升级到支持的版本,请创建数据库备份,然后继续升级 PostgreSQL。如何升级 PostgreSQL 取决于 PostgreSQL 的当前版本和要升级到的版本。有关说明,请参阅 PostgreSQL 文档。
  14. 升级完所有地理数据库后(以及数据库,如有必要),重新启动 ArcGIS Server

    /arcgis/server/startserver.sh

将内容迁移到 Amazon 数据库服务实例中的 10.9 地理数据库

如需确保您将获得的是最新版本的 PostgreSQL 或如果您要在 AWS 上从 ArcGIS 10 进行升级,请执行下列操作: