Re: Different releases in the same server - Mailing list pgsql-general

From Ron
Subject Re: Different releases in the same server
Date
Msg-id 0ec231ca-b339-9abc-c7eb-0a442388527e@gmail.com
Whole thread Raw
In response to Different releases in the same server  (marco.ptz@tiscali.it)
List pgsql-general
When I want to run a specific version of psql, pg_dump. pg_basebackup, etc I explicitly use fully-qualified file names.  Environment variables make that easy.  Ditto with having a different port number for each instance.

(And even though it's too late for you regarding that, I always install from the postgresql.org repository.)

On 8/2/23 09:31, marco.ptz@tiscali.it wrote:
Hi all,
we have recently started to manage a production server running a 9.6 postgres.

[root@xx ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

We have to upgrade to postgres 12.x but we have a few questions due the configuration found in the server.
Basically there are 3 different release present, 9.2, 9.6 ( running ), 12 (future upgrade target release):


[root@xx ~]# yum list installed | grep postgres
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
postgresql.x86_64                     9.2.24-4.el7_8           @base/7.9.2009
postgresql-libs.x86_64                9.2.24-4.el7_8           @base/7.9.2009
postgresql12.x86_64                   12.14-1PGDG.rhel7        @pgdg12     
postgresql12-libs.x86_64              12.14-1PGDG.rhel7        @pgdg12     
postgresql12-server.x86_64            12.14-1PGDG.rhel7        @pgdg12     
postgresql96.x86_64                   9.6.11-1PGDG.rhel7       @pgdg96     
postgresql96-contrib.x86_64           9.6.11-1PGDG.rhel7       @pgdg96     
postgresql96-libs.x86_64              9.6.11-1PGDG.rhel7       @pgdg96     
postgresql96-server.x86_64            9.6.11-1PGDG.rhel7       @pgdg96    

the running version is 9.6

[root@xx ~]# ps -ef| grep D
UID        PID  PPID  C STIME TTY          TIME CMD
postgres  1436     1  0 Apr18 ?        06:56:14 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/

in the server is also installed the alternatives packages which is configured that way:


[root@xx ~]# alternatives --list
libnssckbi.so.x86_64    auto    /usr/lib64/pkcs11/p11-kit-trust.so
ld      auto    /usr/bin/ld.bfd
mta     manual  /usr/sbin/sendmail.sendmail
pgsql-ld-conf   auto    /usr/pgsql-12/share/postgresql-12-libs.conf
pgsql-psql      auto    /usr/pgsql-12/bin/psql
pgsql-clusterdb auto    /usr/pgsql-12/bin/clusterdb
pgsql-createdb  auto    /usr/pgsql-12/bin/createdb
pgsql-createlang        auto    /usr/pgsql-9.6/bin/createlang
pgsql-createuser        auto    /usr/pgsql-12/bin/createuser
pgsql-dropdb    auto    /usr/pgsql-12/bin/dropdb
pgsql-droplang  auto    /usr/pgsql-9.6/bin/droplang
pgsql-dropuser  auto    /usr/pgsql-12/bin/dropuser
pgsql-pg_basebackup     auto    /usr/pgsql-12/bin/pg_basebackup
pgsql-pg_dump   auto    /usr/pgsql-12/bin/pg_dump
pgsql-pg_dumpall        auto    /usr/pgsql-12/bin/pg_dumpall
pgsql-pg_restore        auto    /usr/pgsql-12/bin/pg_restore
pgsql-reindexdb auto    /usr/pgsql-12/bin/reindexdb
pgsql-vacuumdb  auto    /usr/pgsql-12/bin/vacuumdb
pgsql-clusterdbman      auto    /usr/pgsql-12/share/man/man1/clusterdb.1
pgsql-createdbman       auto    /usr/pgsql-12/share/man/man1/createdb.1
pgsql-createlangman     auto    /usr/pgsql-9.6/share/man/man1/createlang.1
pgsql-createuserman     auto    /usr/pgsql-12/share/man/man1/createuser.1
pgsql-dropdbman auto    /usr/pgsql-12/share/man/man1/dropdb.1
pgsql-droplangman       auto    /usr/pgsql-9.6/share/man/man1/droplang.1
pgsql-dropuserman       auto    /usr/pgsql-12/share/man/man1/dropuser.1
pgsql-pg_basebackupman  auto    /usr/pgsql-12/share/man/man1/pg_basebackup.1
pgsql-pg_dumpman        auto    /usr/pgsql-12/share/man/man1/pg_dump.1
pgsql-pg_dumpallman     auto    /usr/pgsql-12/share/man/man1/pg_dumpall.1
pgsql-pg_restoreman     auto    /usr/pgsql-12/share/man/man1/pg_restore.1
pgsql-psqlman   auto    /usr/pgsql-12/share/man/man1/psql.1
pgsql-reindexdbman      auto    /usr/pgsql-12/share/man/man1/reindexdb.1
pgsql-vacuumdbman       auto    /usr/pgsql-12/share/man/man1/vacuumdb.1
postgis-pgsql2shp       auto    /usr/pgsql-9.6/bin/pgsql2shp
postgis-shp2pgsql       auto    /usr/pgsql-9.6/bin/shp2pgsql


As far as I know, alternatives package uses path /etc/alternatives/ and create links from /usr/bin to /etc/alternatives 
which in turn links to the binaries to the correct selected version (/usr/pgsql-9.6/bin OR /usr/pgsql-12/bin).
We have checked the current alternatives configuration, and it knows only about 9.6 and 12 relases:

[root@xx ~]# alternatives --display pgsql-psql
pgsql-psql - status is auto. link currently points to /usr/pgsql-12/bin/psql
/usr/pgsql-9.6/bin/psql - priority 960
/usr/pgsql-12/bin/psql - priority 1200
Current `best' version is /usr/pgsql-12/bin/psql.


At present in /usr/bin there are not links as aspected for use with alternatives, but there are files belonging to
9.2 version except for pg_basebackup:

[root@xx ~]# ls -l /usr/bin/p*
lrwxrwxrwx. 1 root root     37 Apr 30 08:05 /usr/bin/pg_basebackup -> /etc/alternatives/pgsql-pg_basebackup
-rwxr-xr-x. 1 root root  28672 May 12  2020 /usr/bin/pg_config
-rwxr-xr-x. 1 root root 313120 May 12  2020 /usr/bin/pg_dump
-rwxr-xr-x. 1 root root  75672 May 12  2020 /usr/bin/pg_dumpall
-rwxr-xr-x. 1 root root 129872 May 12  2020 /usr/bin/pg_restore
-rwxr-xr-x. 1 root root 449272 May 12  2020 /usr/bin/psql


[root@xx ~]# /usr/bin/psql --version
psql (PostgreSQL) 9.2.24
[root@xx ~]# /usr/bin/pg_dump --version
pg_dump (PostgreSQL) 9.2.24


we have checked whit rpm and it seems that the 9.2 package is the only one that put files in /usr/bin:


relase 9.2
[root@xx local]# rpm -ql postgresql.x86_64
/usr/bin/clusterdb
/usr/bin/createdb
/usr/bin/createlang
/usr/bin/createuser
/usr/bin/dropdb
/usr/bin/droplang
/usr/bin/dropuser
/usr/bin/pg_config
/usr/bin/pg_dump
/usr/bin/pg_dumpall
/usr/bin/pg_restore
/usr/bin/psql
/usr/bin/reindexdb
/usr/bin/vacuumdb
/usr/lib64/pgsql

release 9.6
[root@xx local]# rpm -ql postgresql96-server.x86_64
/etc/pam.d/postgresql
/etc/sysconfig/pgsql
/usr/lib/systemd/system/postgresql-9.6.service
/usr/lib/tmpfiles.d/postgresql-9.6.conf
/usr/pgsql-9.6/bin/initdb
/usr/pgsql-9.6/bin/pg_controldata
/usr/pgsql-9.6/bin/pg_ctl
/usr/pgsql-9.6/bin/pg_resetxlog
/usr/pgsql-9.6/bin/postgres
/usr/pgsql-9.6/bin/postgresql96-check-db-dir
/usr/pgsql-9.6/bin/postgresql96-setup
/usr/pgsql-9.6/bin/postmaster

release 12
[root@xx local]# rpm -ql postgresql12-server.x86_64
/etc/pam.d/postgresql
/etc/sysconfig/pgsql
/usr/bin/postgresql-12-setup
/usr/lib/systemd/system/postgresql-12.service
/usr/lib/tmpfiles.d/postgresql-12.conf
/usr/pgsql-12/bin/initdb
/usr/pgsql-12/bin/pg_checksums
/usr/pgsql-12/bin/pg_controldata
/usr/pgsql-12/bin/pg_ctl
/usr/pgsql-12/bin/pg_resetwal
/usr/pgsql-12/bin/postgres
/usr/pgsql-12/bin/postgresql-12-check-db-dir
/usr/pgsql-12/bin/postgresql-12-setup
/usr/pgsql-12/bin/postmaster

Of course we will try to test in a VM created as a clone of the producion to verify any step (it is not our own server).
the quesions are:

Could we have trouble having 9.6 and 12 running in the same time (we will upgrade with pg_upgrade) in such server?
HOW can we to fix the presence of release 9.2 files in /usr/bin?
Will the simbolic links in /usr/bin be created by alternatives once the 9.2 release will be dropped/deinstalled/deleted?

Any suggestion is welcome
Thanks in advance

regards
Marco


--
Born in Arizona, moved to Babylonia.

pgsql-general by date:

Previous
From: marco.ptz@tiscali.it
Date:
Subject: Re: Different releases in the same server
Next
From: Karsten Hilbert
Date:
Subject: question on auto_explain