Installation d'un serveur de base de données PostgreSQL (version 13 ou version 14)
Installation des binaires

Au travers du repository local, il n'y a aucun accès aux sources "postgresql 13 ou 14"

[root@thierry ~]# yum search postgresql
postgresql.x86_64 : PostgreSQL client programs
postgresql-server.x86_64 : The programs needed to create and run a PostgreSQL server
[root@thierry ~]# yum search postgresql-13
Aucune correspondance trouvée.

Donc, il est nécessaire d'installer le repository de postgresql.

Pour info, les commandes suivantes, en fonction de la version, de la plateforme et architecture, ont été générées à l'adresse https://www.postgresql.org/download/linux/redhat/ :

[root@thierry ~]# dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
…
Installé:
  pgdg-redhat-repo-42.0-20.noarch
Terminé !

Il est aussi important de désactiver l'éventuelle installation de version antérieure :

[root@thierry ~]# dnf -qy module disable postgresql
Import de la clef GPG 0x442DF0F8 :
Utilisateur : « PostgreSQL RPM Building Project <pgsql-pkg-yum@postgresql.org> »
Empreinte : 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8
Provenance : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
…

Ok, on peut installer la version souhaitée (13 ou 14) via le repo officiel de postgresql (ici la version 14) :

[root@thierry ~]# dnf install -y postgresql14-server
Installation:
 postgresql14-server               x86_64               14.1-1PGDG.rhel8                 pgdg14               5.7 M
Installation des dépendances:
 postgresql14                      x86_64               14.1-1PGDG.rhel8                 pgdg14               1.5 M
 postgresql14-libs                 x86_64               14.1-1PGDG.rhel8                 pgdg14               274 k
…
Installé:
  postgresql14-14.1-1PGDG.rhel8.x86_64                      postgresql14-libs-14.1-1PGDG.rhel8.x86_64
  postgresql14-server-14.1-1PGDG.rhel8.x86_64
Terminé !
Initialisation du service

Avant toute initialisation, il est important de choisir le répertoire de destination des fichiers de la base de de données.

Pour cela, il faut modifier le fichier service (normalement systemctl edit <service>) pour remplacer la destination des fichiers de la base de données :

[root@thierry ~]# vi /usr/lib/systemd/system/postgresql-14.service
...
Environment=PGDATA=/datas/pgdata14/
...

Bien sur, le répertoire doit exister, et les droits d'accès doivent être correctement positionnés pour l'utilisateur "postgres" :

[root@thierry ~]# chmod 777 /datas/
[root@thierry ~]# chown postgres /datas/pgdata14/

On peut alors initialiser le serveur avec la création des fichiers :

[root@thierry ~]# /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK

Voici un aperçu des fichiers générés :

[root@thierry ~]# ls -l /datas/pgdata14/
total 56
drwx------. 5 postgres postgres    41 17 nov.  09:07 base
drwx------. 2 postgres postgres  4096 17 nov.  09:07 global
drwx------. 2 postgres postgres     6 17 nov.  09:07 log
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_commit_ts
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_dynshmem
-rw-------. 1 postgres postgres  4577 17 nov.  09:07 pg_hba.conf
-rw-------. 1 postgres postgres  1636 17 nov.  09:07 pg_ident.conf
drwx------. 4 postgres postgres    68 17 nov.  09:07 pg_logical
drwx------. 4 postgres postgres    36 17 nov.  09:07 pg_multixact
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_notify
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_replslot
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_serial
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_snapshots
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_stat
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_stat_tmp
drwx------. 2 postgres postgres    18 17 nov.  09:07 pg_subtrans
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_tblspc
drwx------. 2 postgres postgres     6 17 nov.  09:07 pg_twophase
-rw-------. 1 postgres postgres     3 17 nov.  09:07 PG_VERSION
drwx------. 3 postgres postgres    60 17 nov.  09:07 pg_wal
drwx------. 2 postgres postgres    18 17 nov.  09:07 pg_xact
-rw-------. 1 postgres postgres    88 17 nov.  09:07 postgresql.auto.conf
-rw-------. 1 postgres postgres 28775 17 nov.  09:07 postgresql.conf
Activation du service
[root@thierry ~]# systemctl enable postgresql-14
Démarrage du service
[root@thierry ~]# systemctl start postgresql-14
[root@thierry ~]# ps -eafd | grep post
postgres    6346       1  0 09:07 ?        00:00:00 /usr/pgsql-14/bin/postmaster -D /datas/pgdata14/
postgres    6347    6346  0 09:07 ?        00:00:00 postgres: logger
postgres    6349    6346  0 09:07 ?        00:00:00 postgres: checkpointer
postgres    6350    6346  0 09:07 ?        00:00:00 postgres: background writer
postgres    6351    6346  0 09:07 ?        00:00:00 postgres: walwriter
postgres    6352    6346  0 09:07 ?        00:00:00 postgres: autovacuum launcher
postgres    6353    6346  0 09:07 ?        00:00:00 postgres: stats collector
postgres    6354    6346  0 09:07 ?        00:00:00 postgres: logical replication launcher
root        6369    3963  0 09:08 pts/0    00:00:00 grep --color=auto post
État du service

L'état des process du serveur peut être affiché avec la commande "systemctl status" :

[xanata@thierry ~]$ systemctl status postgresql-14
● postgresql-14.service - PostgreSQL 14 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-11-17 09:07:59 EST; 7h ago
     Docs: https://www.postgresql.org/docs/14/static/
  Process: 6340 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 6346 (postmaster)
    Tasks: 8 (limit: 96484)
   Memory: 24.3M
   CGroup: /system.slice/postgresql-14.service
           ├─6346 /usr/pgsql-14/bin/postmaster -D /datas/pgdata14/
           ├─6347 postgres: logger
           ├─6349 postgres: checkpointer
           ├─6350 postgres: background writer
           ├─6351 postgres: walwriter
           ├─6352 postgres: autovacuum launcher
           ├─6353 postgres: stats collector
           └─6354 postgres: logical replication launcher