Skip To Content

Upgrade geodatabases in PostgreSQL on Amazon Web Services

Upgrade your geodatabases to take advantage of new functionality and improvements implemented in the geodatabase. To upgrade an enterprise geodatabase in PostgreSQL on AWS, do one of the following:

  • Use the 10.6.1 Amazon Machine Image (AMI) to create an ArcGIS Server 10.6.1 instance on Amazon Web Services (AWS), create a geodatabase in the newer version of PostgreSQL included with this AMI, move your data to the new geodatabase, and republish services.

    You must use this method if you are upgrading from an ArcGIS 10 instance.

  • Update the ArcGIS software on your existing AWS instance and upgrade the geodatabase.

    If your geodatabase is in a PostgreSQL database cluster on AWS, be sure your existing PostgreSQL version is compatible with the latest version of ArcGIS software. If it is not, you'll also need to upgrade the PostgreSQL database cluster.

    If your geodatabase is in Amazon Relational Database Service (RDS) for PostgreSQL, Amazon automatically updates the PostgreSQL version so you just need to upgrade the geodatabase after upgrading your ArcGIS software.

Tip:

If your data is currently in a PostgreSQL database cluster on AWS and you want to move your data to an Amazon RDS for PostgreSQL instance, you can create a geodatabase in an Amazon RDS for PostgreSQL instance, move your data, and republish services.

The following sections describe methods for getting your geodatabase to the latest possible state.

Create an ArcGIS 10.6.1 on AWS instance and move your data from an older instance

To be sure you're getting the latest version of the ArcGIS software, PostgreSQL, and the operating system without having to upgrade or patch each, create an ArcGIS Server for AWS instance from the latest Esri AMI, move your data, and republish services. See The ArcGIS Server AMIs for information on what software and operating system versions are present in the latest Esri AMIs.

For information on moving data, see Strategies for data transfer to Amazon Web Services.

At ArcGIS 10, there was a separate enterprise geodatabase AMI that contained a PostgreSQL 8.3.8 database cluster on Windows. The ArcGIS Server AMIs that include PostgreSQL now run on Ubuntu Linux. You cannot move directly from a PostgreSQL database on Windows to one on Linux. You also cannot upgrade ArcGIS 10 Server to ArcGIS 10.1 for Server or later releases; therefore, if you migrate to the current ArcGIS AWS AMIs from ArcGIS 10 Server for AWS, you must move or reload your data and republish.

The version of PostgreSQL included with the Esri Ubuntu AMI has also changed over time, as shown in the following table:

Esri AMI versionPostgreSQL version included

10.1

9.0.5

10.2

9.0.13

10.2.1 and 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

Update the ArcGIS software on your existing AWS instance and upgrade the geodatabase

You can upgrade ArcGIS Server on your existing instance, upgrade your geodatabase in PostgreSQL, and continue using your existing data and services. Be aware, though, that this means the operating system and all other software on the instance remain at the version they were when you created your instance. For example, if you created your instance from an ArcGIS Server 10.2.2 for AWS AMI, you will continue to use a PostgreSQL 9.2.4 database on an Ubuntu 12.04 operating system. Depending on the version of ArcGIS Server you upgrade to, that version of PostgreSQL may not be compatible.

If the existing PostgreSQL version on your instance is not compatible with the new version of ArcGIS Server, you need to also upgrade PostgreSQL to a supported version. For example, if you launched an ArcGIS 10.3 instance and want to upgrade to ArcGIS Server 10.6.1 on that instance, you must also upgrade PostgreSQL to a supported version. See the PostgreSQL documentation for information on upgrading PostgreSQL.

Note that how you upgrade ArcGIS Server on AWS depends on how you created the ArcGIS Server site.

  • If you used ArcGIS Server Cloud Builder on Amazon Web Services to create the ArcGIS Server site and geodatabases, follow the instructions in the next two sections to upgrade the site and your geodatabases. The first section describes upgrading when your geodatabases are on the same EC2 instance as ArcGIS Server. The second section describes upgrading when your geodatabases are on a separate EC2 instance.
  • If you used an AWS CloudFormation template provided by Esri to create an ArcGIS Server 10.6 site, you can use the upgrade CloudFormation template to upgrade ArcGIS Server. After you upgrade ArcGIS Server, follow the instructions in the third section to upgrade the geodatabase in Amazon RDS for PostgreSQL.
  • If you created an ArcGIS Server 10.5.1 or earlier release site using a CloudFormation template provided by Esri, connect to your instances on AWS and upgrade ArcGIS Server just as you would an ArcGIS Server site deployed on-premises. Follow the steps in the third section to upgrade the geodatabase in Amazon RDS for PostgreSQL.
  • If you created your site from the Esri AMI using AWS Management Console, connect to your instances on AWS and upgrade ArcGIS Server just as you would an ArcGIS Server site deployed on-premises. If your geodatabase is in a PostgreSQL database cluster on AWS, run the Upgrade Geodatabase tool from a Python script on one of the ArcGIS Server machines to upgrade the geodatabase just as you would for a geodatabase on-premises. If your geodatabase is in Amazon RDS for PostgreSQL, follow the instructions in the third section to upgrade the geodatabase.

Upgrade geodatabases on SITEHOST

If you created your ArcGIS Server site and geodatabases using ArcGIS Server Cloud Builder on Amazon Web Services, follow the steps in this section to upgrade geodatabases in a PostgreSQL database cluster that reside on the same instance as the ArcGIS Server SITEHOST.

Update ArcGIS Server, move the new st_geometry.so file to the PostgreSQL lib directory, stop ArcGIS Server, run a Python script to upgrade each geodatabase, and restart ArcGIS Server.

  1. Install the latest version of ArcGIS Server on your AWS instance.

    See Apply an ArcGIS update to a single-machine site or Apply an ArcGIS update to an Ubuntu multiple-machine site for instructions if you have not already installed the software.

  2. Before you upgrade your geodatabases, make backup copies of them. The easiest way to do that is to make a Cloud Builder backup of your site (if you created your site using Cloud Builder), or make a snapshot of the EBS volume that contains your data. If you want to make a snapshot of the EBS volume, see Amazon Web Services documentation for instructions.
  3. Also, before upgrading, you must copy the st_geometry.so file from /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 to /usr/lib/postgresql/<postgresql version>/lib.
    1. The st_geometry.so file is owned by root; therefore, after connecting to the Amazon Web Services SITEHOST instance as ubuntu, switch users to root:
      sudo su -
      Note:

      Be aware that you cannot connect as the arcgis user and switch to the root user.

    2. Before you copy the new file, rename the old one.
      mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
    3. Copy the new st_geometry.so file.
      cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib
    4. Change permissions on the st_geometry.so file to allow other users to read and execute it.
      chmod 755 /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
  4. Switch to the arcgis user.
    su - arcgis
  5. Open a text editor to create the upgrade Python script.

    vi upgrade.py

  6. Copy the following script into a text editor.

    Alter the script to use information specific to your site, including the instance name, sde password, connection file name and location, and database name.

    #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")

    See Create Database Connection and Upgrade Geodatabase for more information on tool syntax.

  7. Save the file and close the text editor.
  8. Stop ArcGIS Server.
    /arcgis/server/stopserver.sh
  9. Run the script in Python.

    /arcgis/server/tools/python <path to the file>/upgrade.py

    You will likely see multiple notices about type references. You can ignore these; they do not indicate the upgrade failed.

    Information is written to the GDBUpgrade.log in /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#> if the upgrade does fail.

  10. Run the following in Python to be sure your geodatabase is upgraded. Replace /tmp/egdb_connection.sde with your connection file location and name.

    First, open an arcpy prompt.

    cd /arcgis/server/tools
    ./python

    Use isCurrent to determine if the geodatabase is upgraded to the current release.

    import arcpy
    
    isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease
    
    print isCurrent

    If print isCurrent returns True, your geodatabase is upgraded.

  11. To exit the arcpy prompt, type quit().
  12. Alter the script and run it again for each geodatabase you need to upgrade.
  13. If you need to upgrade PostgreSQL to a supported version, create a database backup and proceed with upgrading PostgreSQL. How you upgrade PostgreSQL depends on the PostgreSQL versions you are upgrading from and to. See PostgreSQL's documentation for instructions.
  14. Once all geodatabases (and databases, if necessary) are upgraded, restart ArcGIS Server.

    /arcgis/server/startserver.sh

If you have a multiple-machine site, proceed with step 11 in Apply an ArcGIS update to an Ubuntu multiple-machine site.

Upgrade geodatabases that are on their own AWS instance (EGDBHOST)

If you created your ArcGIS Server site and geodatabases using ArcGIS Server Cloud Builder on Amazon Web Services, follow the steps in this section to upgrade geodatabases in PostgreSQL that are on their own, dedicated AWS instance (EGDBHOST).

Update ArcGIS Server on the SITEHOST, move the new st_geometry.so file from SITEHOST to the PostgreSQL lib directory on EGDBHOST, stop ArcGIS Server, run a Python script from SITEHOST to upgrade each geodatabase, and restart ArcGIS Server.

  1. Install the new version of ArcGIS Server on your AWS instance.
  2. Before you upgrade your geodatabases, make backup copies of them. The easiest way to do that is to make a snapshot of the EBS volume that contains your data. See Amazon Web Services documentation for instructions on making a snapshot of an EBS volume.
  3. Also, before upgrading, you must copy the st_geometry.so file from /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 to /usr/lib/postgresql/<postgresql version>/lib.
    1. Before you copy the new file, rename the old one on EGDBHOST. Since the st_geometry.so file is owned by the root user, log in to EGDBHOST as ubuntu and switch to the root user.
      sudo su -
      
      mv /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometryOLD.so
    2. You must move the st_geometry.so file from /arcgis/server/DatabaseSupport/PostgreSQL/Linux64 on SITEHOST to /usr/lib/postgresql/<postgresql version>/lib on EGDBHOST.

      Since the two source and destination directories on the different instances are not accessible by the same user, log in to SITEHOST as the arcgis user and copy the file to the gisdata directory on EGDBHOST.

      cp /arcgis/server/DatabaseSupport/PostgreSQL/Linux64/st_geometry.so /net/EGDBHOST/gisdata/st_geometry.so
    3. Log in to EGDBHOST as ubuntu.
    4. Switch to the root user.
      sudo su -
    5. Copy the st_geometry.so file from gisdata to /usr/lib/postgresql/<postgresql version>/lib.
      cp /gisdata/st_geometry.so /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
    6. Change permissions on the st_geometry.so file to allow other users to read and execute it.
      chmod 755 /usr/lib/postgresql/<postgresql version>/lib/st_geometry.so
  4. Log in to SITEHOST as the arcgis user.
  5. Open a text editor to create the upgrade Python script.

    For example:

    vi upgrade.py

  6. Copy the following script into a text editor.

    Alter the script to use information specific to your site, including the instance name, sde password, connection file name and location, and database name.

    #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")

    See Create Database Connection and Upgrade Geodatabase for more information on tool syntax.

  7. Save the file and close the text editor.
  8. Stop ArcGIS Server.
    /arcgis/server/stopserver.sh
  9. Run the script in Python.

    /arcgis/server/tools/python <path to the file>/upgrade.py

    You will likely see several notices about type references. You can ignore those messages.

    If the upgrade fails, information is written to the GDBUpgrade.log in /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#>.

  10. To be sure your geodatabase is upgraded, open Python and run the following, replacing /tmp/egdb_connection.sde with your connection file location and name.

    First, open an arcpy prompt.

    cd /arcgis/server/tools
    ./python

    Use isCurrent to determine if the geodatabase is upgraded to the current release.

    import arcpy
    
    isCurrent = arcpy.Describe('/tmp/egdb_connection.sde').currentRelease
    
    print isCurrent

    If print isCurrent returns True, your geodatabase is upgraded.

  11. To exit the arcpy prompt, type quit().
  12. Alter the upgrade.py script and run it again for each geodatabase you need to upgrade.
  13. If you need to upgrade PostgreSQL to a supported version, create a database backup and proceed with upgrading PostgreSQL. How you upgrade PostgreSQL depends on the PostgreSQL versions you are upgrading from and to. See PostgreSQL's documentation for instructions.
  14. Once all geodatabases (and databases, if necessary) are upgraded, restart ArcGIS Server.

    /arcgis/server/startserver.sh

If you have a multiple-machine site, proceed with step 11 in Apply an ArcGIS update to an Ubuntu multiple-machine site.

Upgrade geodatabases in Amazon RDS for PostgreSQL

After you upgrade your ArcGIS Server site on AWS, follow these steps to upgrade geodatabases in Amazon RDS for PostgreSQL.

  1. Be sure you have a current, reliable backup of your database in Amazon RDS for PostgreSQL.
  2. Connect to Amazon RDS for PostgreSQL and confirm that the sde user has been granted the rds_superuser role.
  3. Log in to one of your ArcGIS Server instances on AWS as the arcgis user.
  4. Open a text editor to create a Python script to upgrade your geodatabase.

    For example:

    vi upgrade.py

  5. Copy the following script into a text editor.

    Alter the script to use information specific to your site, including the instance name, sde password, connection file name and location, and database name.

    #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")

    See Create Database Connection and Upgrade Geodatabase for more information on tool syntax.

  6. Save the file and close the text editor.
  7. Stop ArcGIS Server.
    /arcgis/server/stopserver.sh
  8. Run the script in Python.

    /arcgis/server/tools/python <path to the file>/upgrade.py

    If the upgrade fails, information is written to the GDBUpgrade.log in /arcgis/server/framework/runtime/.wine/drive_c/users/arcgis/LocalAppData/ESRI/Server<#>.

  9. To be sure your geodatabase is upgraded, open Python and run the following, replacing /tmp/egdbrds_connection.sde with your connection file location and name.

    First, open an arcpy prompt.

    cd /arcgis/server/tools
    ./python

    Use isCurrent to determine if the geodatabase is upgraded to the current release.

    import arcpy
    
    isCurrent = arcpy.Describe('/tmp/egdbrds_connection.sde').currentRelease
    
    print isCurrent

    If print isCurrent returns True, your geodatabase is upgraded.

  10. To exit the arcpy prompt, type quit().
  11. Alter the upgrade.py script and run it again for each geodatabase you need to upgrade.