To put it simply: you cannot run different major versions of PostgreSQL with the same binaries. 3 things need to be separate. You named 2 of them: data directory and port. The 3rd one is separate binary locations for each PG cluster instance running on the same host.
What I do is create a separate .profile_pgsql file for each PG cluster instance. This file contains all the stuff necessary to distinguish between multiple PG clusters. Here is an example for a specific Linux distro...
export VERSION=9.6
export PGROOT=/usr/pgsql-$VERSION
export PGBASE=/var/lib/pgsql/$VERSION
export PATH=$PGROOT/bin:$PGROOT/share:$PATH
export PGLIB=$PGROOT/lib
export MANPATH=$PGROOT/share/man:$MANPATH
export LD_LIBRARY_PATH=$PGROOT/bin:$PGBASE/share:$PATH
export PGDATA=$PGBASE/data
export PGPASSFILE=~/.pgpass
export PGUSER=postgres
export PGDATABASE=postgres
export PGPORT=5432
Regards,
Michael Vitale
Friday, January 4, 2019 9:21 AM
Hi,
I have 10+ postgresql clusters (v 9.6) running on one machine - each having their own data directory and port. They all share same binaries though, and this is now giving me some headache.. I cannot shutdown all clusters at the same time, so upgrading them is quite impossible.
I know that running several versions of postgres is possible on one machine - I suppose this would also work out with same version running on different locations, like /db1/PostgreSQL/10, /db2/PostgreSQL/10.. etc..? Has anyone any experience with this kind of problem?
All help and ideas appreciated! :-)
Thanks,
Erika