This section describes how to upgrade in-use instances of the for a working deployment of the
.
When you upgrade to a new release of the platform, the underlying databases and their structures are automatically migrated to the new format. However, the database releases are not touched.
In this example, Postgres 9.3 is upgraded to Postgres 9.6.
Before you begin, please verify that you have a valid backup of each . See Backup and Recovery in the Admin Guide.
Before you begin, you must:
5432
.For more information, see Install Databases for PostgreSQL.
For more information, see Install Databases for MySQL.
This procedure describes the process for upgrading the PostgreSQL version in use by the . This procedure assumes the following:
The default port for these commands is port 5432
.
If you are using a non-standard port for either the pre- or post-upgrade versions of PostgreSQL, you can use the following parameters with the pg_upgrade
command:
Parameter | Description |
---|---|
--old-port=<pre-upgrade_port> | The port number of the pre-upgrade instance of PostgreSQL |
--new-port=<post-upgrade_port> | The port number to use for the post-upgrade instance of PostgreSQL |
For more information, see https://www.postgresql.org/docs/9.6/pgupgrade.html.
The following sections cover upgrading the versions listed below:
Beginning in Release 7.1 Hot Fix 5, PostgreSQL 12.3 is supported on a limited basis. Important notes:
NOTE: Upgrade to PostgreSQL 12.3 is supported in this release for CentOS 7 only. |
NOTE: Upgrade to PostgreSQL 12.3 is supported in Release 7.1 Hot Fix 5 or later only. For more information on acquiring this build, please contact |
NOTE: The database version upgrade must be performed after you have upgraded the software. |
In PostgreSQL 10 and later, directory references to versions of PostgreSQL paths have changed.
PostgreSQL 9.6 example path:
/var/lib/pgsql/9.6/data/pg_hba.conf |
PostgreSQL 12.3 example path:
/var/lib/pgsql/12/data/pg_hba.conf |
For more information, see https://wiki.postgresql.org/wiki/YUM_Installation.
NOTE: For this release, PostgreSQL 12.3 is supported for supported versions of CentOS 7 only. See Product Support Matrix. |
Install the Postgres repo for yum. Below, PostgreSQL 12.3 is installed.
For CentOS 7.x:
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum -y install pgdg-redhat-repo-latest.noarch.rpm |
For CentOS 8.x: Not supported
For Red Hat Enterprise Linux 7.x:
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm sudo yum -y install pgdg-redhat-repo-latest.noarch.rpm |
For Red Hat Enterprise Linux 8.x: Not supported
Install the upgraded version. Below, PostgreSQL 12.3 is installed.
sudo yum install postgresql12-server |
Create a new data directory for the new database version:
For CentOS 7.x:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable postgresql-12 |
For RHEL 7.x:
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb sudo systemctl enable postgresql-12 |
Use the following commands to verify that the upgrade is possible:
su postgres cd ~ /usr/pgsql-12/bin/pg_upgrade --old-bindir=/usr/pgsql-9.6/bin --new-bindir=/usr/pgsql-12/bin --old-datadir=/var/lib/pgsql/9.6/data/ --new-datadir=/var/lib/pgsql/12/data/ --check |
NOTE: Please be sure to include the |
If all is well, you should see a Clusters are compatible
message.
CentOS/RHEL:
sudo service postgresql-9.6 stop |
postgres
user:CentOS/RHEL:
su postgres /usr/pgsql-12/bin/pg_upgrade --old-bindir=/usr/pgsql-9.6/bin --new-bindir=/usr/pgsql-12/bin --old-datadir=/var/lib/pgsql/9.6/data/ --new-datadir=/var/lib/pgsql/12/data/ |
Part of the output should include the following. These hashes will be re-indexed in a later step.
Your installation contains hash indexes. These indexes have different internal formats between your old and new clusters, so they must be reindexed with the REINDEX command. The file reindex_hash.sql when executed by psql by the database superuser will recreate all invalid indexes; until then, none of these indexes will be used. Upgrade Complete ---------------- Optimizer statistics are not transferred by pg_upgrade so, once you start the new server, consider running: ./analyze_new_cluster.sh Running this script will delete the old cluster's data files: ./delete_old_cluster.sh |
Copy in pg_hba.conf
:
Copy the default version from the upgraded software:
cp /opt/trifacta/bin/setup-utils/db/pg_hba.conf.SAMPLE /var/lib/pgsql/12/data/pg_hba.conf |
Tip: You may find it easier to using a diff tool to compare your current version of this file ( |
If you have made modifications to this configuration file:
Open this file:
/var/lib/pgsql/9.6/data/pg_hba.conf |
Apply custom values to this file:
/var/lib/pgsql/12/data/pg_hba.conf |
Start new PostgreSQL:
systemctl start postgresql-12 |
Use the following command to reindex the hashes:
psql -f reindex_hash.sql |
Verify that PostgreSQL is up and running:
systemctl status postgresql-12.service |
The following sections cover upgrading the versions listed below:
For CentOS 7.x:
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm sudo yum -y install pgdg-centos96-9.6-3.noarch.rpm |
For CentOS 8.x:
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/pgdg-centos96-9.6-3.noarch.rpm sudo yum -y install pgdg-centos96-9.6-3.noarch.rpm |
For Red Hat Enterprise Linux 7.x:
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm sudo yum -y install pgdg-redhat96-9.6-3.noarch.rpm |
For Red Hat Enterprise Linux 8.x:
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/pgdg-centos96-9.6-3.noarch.rpm sudo yum -y install pgdg-redhat96-9.6-3.noarch.rpm |
Install the upgraded version. Below, PostgreSQL 9.6 is installed.
sudo yum install postgresql96.x86_64 postgresql96-server.x86_64 postgresql96-contrib.x86_64 -y |
Create a new data directory for the new database version:
For CentOS 7.x, CentOS 8.x:
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb |
For RHEL 7.x, RHEL 8.x:
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb |
Use the following commands to verify that the upgrade is possible:
su postgres cd ~ /usr/pgsql-9.6/bin/pg_upgrade --old-bindir=/usr/pgsql-9.3/bin/ --new-bindir=/usr/pgsql-9.6/bin/ --old-datadir=/var/lib/pgsql/9.3/data/ --new-datadir=/var/lib/pgsql/9.6/data/ --check |
If all is well, you should see a Clusters are compatible
message.
CentOS/RHEL:
sudo service postgresql-9.3 stop |
postgres
user:CentOS/RHEL:
su postgres /usr/pgsql-9.6/bin/pg_upgrade --old-bindir=/usr/pgsql-9.3/bin/ --new-bindir=/usr/pgsql-9.6/bin/ --old-datadir=/var/lib/pgsql/9.3/data/ --new-datadir=/var/lib/pgsql/9.6/data/ |
Upgrade for Ubuntu 16.04 (Xenial) - PostgreSQL 9.3 to 9.6Steps:
Upgrade for Ubuntu 18.04 (Bionic Beaver) - PostgreSQL 9.3 to 9.6PostgreSQL should not be on version 9.3 if you are using this version of the operating system. |
For all operating systems, you must transfer the settings from your old version of PostgreSQL to the new one.
Transfer settings from the configuration files for your old database version to the new one. Please review the old and new versions of these files:
NOTE: It is risky to perform a straight copy of these configuration files. Settings may change. New ones may be introduced. Setting values specific to to the installation may be overwritten in a copy. Please retain a backup of both versions of each file before migrating settings. |
Path to PostgreSQL 9.3 file | Path to PostgreSQL 9.6 file |
---|---|
/var/lib/pgsql/9.3/data/pg_hba.conf | /var/lib/pgsql/9.6/data/pg_hba.conf |
/var/lib/pgsql/9.3/data/postgresql.conf | /var/lib/pgsql/9.6/data/postgresql.conf |
CentOS/RHEL:
sudo service postgresql-9.6 start |
Ubuntu:
sudo service postgresql start |
When the service restarts, you can check the cluster status using the following script:
./analyze_new_cluster.sh |
After you have completed the database installation, you must review the port number of the newly installed database, which may have changed between versions of the database software. That new port number must be applied through the . For more information, see Change Database Port.
If all is well, restart the platform. See Start and Stop the Platform in the Install Guide.
If all of the above tests pass, you can use the following script to delete the old PostgreSQL version and its data directory:
./delete_old_cluster.sh |