Postgresql – Upgrade from Postgres 9.3 to 9.5

postgresqlupgrade

I’m attempting my first upgrade of Postgres from 9.3 to 9.5. I’ve run into two roadblocks but not sure how to get around them. I have my 9.3 PGDATA set to /data/postgres, which is a separate filesystem on my RHEL 6 server. After installing 9.5 and running initdb, I attempted to run pg_upgrade using this command line:

/usr/pgsql-9.5/bin/pg_upgrade -b /usr/pgsql-9.3/bin -B /usr/pgsql-9.5/bin 
  -d /data/postgres -D /var/lib/pgsql/9.5/data --link -p 5432 -P 5433 -c

This command failed the link parameter test, because the 9.5 PGDATA value is not on the same filesystem as 9.3. Roadblock #1.

I then tried to re-initialize 9.5 using this command:

initdb -D /data/postgres95

It errored saying "Data directory is not empty!". Roadblock #2.

How do I proceed with this upgrade? I’d rather not move to a new server.

Best Answer

Self-answer from Kevin Struckhoff originally left as a comment:

Finally got back to this task and ran the upgrade successfully.

Turns out, since I use tablespaces in specific directories, the new 9.5 are right next to the old 9.3 dirs:

drwx------ 4 postgres postgres  4096 Oct  4  2014 PG_9.3_201306121
drwx------ 3 postgres postgres  4096 Apr 18 11:49 PG_9.5_201510051