Clusters PostgreSQL 10 sur RHEL 7

Initialiser un ou plusieurs clusters PostgreSQL sur un serveur RHEL

      Après avoir installé PostgreSQL, vous allez être amené à créer un cluster (ensemble de bases) pour accueillir vos données. Nous reprenons ici les choix effectuées à l’initialisation d’un cluster sous Debian :

# Création des dossiers pour le nouveau cluster mkdir -p /var/lib/postgresql/10/apptra001 mkdir -p /var/tmp/postgresql/10/apptra001 mkdir -p /var/log/postgresql chown -R postgres:postgres /var/lib/postgresql/10/apptra001 chown -R postgres:postgres /var/tmp/postgresql/10/apptra001 chown -R postgres:postgres /var/log/postgresql chmod -R 700 /var/lib/postgresql/10/apptra001 chmod -R 700 /var/tmp/postgresql/10/apptra001 chmod -R 700 /var/log/postgresql # Création d’un service systemd pour le nouveau cluster cp -p /lib/systemd/system/postgresql-10.service /etc/systemd/system/postgresql_10_apptra001.service vi /etc/systemd/system/postgresql_10_apptra001.service remplacer Environment=PGDATA=/var/lib/pgsql/10/data/ par Environment=PGDATA=/var/lib/postgresql/10/apptra001 # Verification de la locale, beaucoup de parametres de postgresql dependront par defaut de l’environnement systeme locale LANG=fr_FR.UTF-8 ... (vous pouvez modifier la locale avec localectl set-locale LANG=fr_FR.UTF-8) # Création du cluster apptra001 avec activation des checksums export PGSETUP_INITDB_OPTIONS="-k" /usr/pgsql-10/bin/postgresql-10-setup initdb postgresql_10_apptra001 Initializing database ... OK # Activation du service systemd de notre cluster systemctl enable postgresql_10_apptra001 Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql_10_apptra001.service to /etc/systemd/system/postgresql_10_apptra001.service. # Démarrage du cluster apptra001 systemctl start postgresql_10_apptra001 # Controle de l’activation des checksums et modification des parametres de logging, redirection vers /var/log/postgresql psql psql (10.1) Saisissez « help » pour l'aide. postgres=# show data_checksums; data_checksums ---------------- on (1 ligne) alter system set log_directory = '/var/log/postgresql'; ALTER SYSTEM alter system set log_truncate_on_rotation = on; ALTER SYSTEM alter system set log_filename = 'postgresql-10-apptra001-%a.log'; ALTER SYSTEM alter system set log_rotation_age = '1d'; ALTER SYSTEM select pg_reload_conf(); pg_reload_conf ---------------- t (1 ligne) \l Liste des bases de données Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès -----------+--------------+----------+-----------------+--------------+----------------------- postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres \q cd /var/log/postgresql -bash-4.2$ ls postgresql-10-apptra001-Sun.log

      Il faut beaucoup plus de paramétrage sur RHEL que sur Debian pour "unixiser" PostgreSQL mais c’est bien sûr tout à fait possible. Les choix présentés sont donnés à titre d’exemple. Vous pouvez en faire d’autres, les automatiser via Ansible etc.

Mise à jour : 04/02/2018