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

以下部分介绍了三种地理数据库升级情况:

将数据从 ArcGIS 10 for Amazon Web Services EGDB 实例移至 ArcGIS Server 10.1 for Amazon Web Services 实例

在 ArcGIS 10 中,有一个单独的企业级地理数据库 Amazon 机器映像 (AMI),它包含了 Windows 上的 PostgreSQL 8.3.8 数据库集群。在 ArcGIS 10.1 中,带 PostgreSQL AMI 的 ArcGIS Server 10.1 (Linux) 运行 Ubuntu Linux,并可以选择包含 PostgreSQL 9.0.5 数据库集群。不能从 Windows 上的 PostgreSQL 数据库直接移动到 Linux 上的数据库。因此,当迁移到 ArcGIS Server 10.1 for Amazon Web Services 时,必须移动或重新加载您的数据。请参阅向 Amazon Web Services 传输数据的策略中的“用于将数据传输到云中的选项”一节。

应用补丁包或修补程序并升级 ArcGIS Server EC2 实例 (SITEHOST) 上的地理数据库

在对 AWS 实例上的软件应用补丁包或修补程序后,通常必须对 Amazon Web Services (AWS) 实例中的 PostgreSQL 地理数据库进行升级。本部分中的步骤将说明如何升级与 ArcGIS Server (SITEHOST) 位于同一实例上的 PostgreSQL 地理数据库。

更新 ArcGIS for Server,将新的 st_geometry.so 文件移至 PostgreSQL lib 目录,停止 ArcGIS Server,运行 Python 脚本升级每个地理数据库,然后重新启动 ArcGIS Server。

步骤:
  1. 您应该已经在 AWS 实例上安装了 ArcGIS for Server 补丁包或修补程序。

    如果尚未安装此软件,请参阅对单机站点应用补丁包对多机站点应用补丁包了解相关说明。

  2. 在升级地理数据库之前,请对其进行备份。执行此操作的最简单方法是创建包含数据的 EBS 卷的快照。
  3. 此外,在升级之前,还必须将 st_geometry.so 文件从 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 复制到 /usr/lib/postgresql/9.0/lib
    1. st_geometry.so 文件为根用户所拥有。因此,以 ubuntu 身份连接到 Amazon Web Services SITEHOST 实例之后,将用户转换到根用户:
      sudo su -
      
    2. 复制新文件之前,重命名旧文件。
      mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
      
    3. 复制新的 st_geometry.so 文件。
      cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/9.0/lib
      
    4. 更改 st_geometry.so 文件的权限,以允许其他用户读取和执行该文件。
      chmod 755 /usr/lib/postgresql/9.0/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","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")
    

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

  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/Server10.1 中的 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. 升级完所有地理数据库后,请重新启动 ArcGIS Server。

    /arcgis/server/startserver.sh
    

如果是多机站点,请继续执行对 Ubuntu 多机站点应用补丁包中的步骤 13。

应用补丁包或修补程序,并升级 EGDBHOST 上的地理数据库

本部分中的步骤将说明如何升级位于自己专用的 Amazon EC2 实例 (EGDBHOST) 上的 PostgreSQL 地理数据库。

更新 SITEHOST 上的 ArcGIS for Server,将新的 st_geometry.so 文件从 SITEHOST 移至 EGDBHOST 上的 PostgreSQL lib 目录,停止 ArcGIS Server,从 SITEHOST 运行 Python 脚本升级每个地理数据库,然后重新启动 ArcGIS Server。

步骤:
  1. 在 AWS 实例上安装 ArcGIS for Server 的补丁包或修补程序。
  2. 在升级地理数据库之前,请对其进行备份。执行此操作的最简单方法是创建包含数据的 EBS 卷的快照。
  3. 此外,在升级之前,还必须将 st_geometry.so 文件从 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 复制到 /usr/lib/postgresql/9.0/lib
    1. 复制新文件之前,重命名 EGDBHOST 上的旧文件。由于 st_geometry.so 文件为根用户所拥有,因此以 ubuntu 身份登录到 EGDBHOST,然后切换为根用户。
      sudo su -
      
      mv /usr/lib/postgresql/9.0/lib/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometryOLD.so
      
    2. 您必须将 st_geometry.so 文件从 SITEHOST 上的 /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 移至 EGDBHOST 上的 /usr/lib/postgresql/9.0/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/9.0/lib
      cp /gisdata/st_geometry.so /usr/lib/postgresql/9.0/lib/st_geometry.so
      
    6. 更改 st_geometry.so 文件的权限,以允许其他用户读取和执行该文件。
      chmod 755 /usr/lib/postgresql/9.0/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","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")
    

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

  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/Server10.1 中的 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. 升级完所有地理数据库后,重新启动 ArcGIS Server。

    /arcgis/server/startserver.sh
    

如果是多机站点,请继续执行对 Ubuntu 多机站点应用补丁包中的步骤 13。

9/15/2013