Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. PostgreSQL
  3. Initialisation du système de fichiers
Extrait - PostgreSQL Administration et exploitation de vos bases de données (4e édition)
Extraits du livre
PostgreSQL Administration et exploitation de vos bases de données (4e édition) Revenir à la page d'achat du livre

Initialisation du système de fichiers

Introduction

Une des étapes les plus importantes de l’installation de PostgreSQL consiste à créer un répertoire dans lequel le serveur écrira et lira les données des bases. Cette étape est un préalable nécessaire au démarrage de PostgreSQL.

Le choix du répertoire à utiliser n’est pas anodin ; toutes les données y seront stockées, sauf exception. Il est donc important de choisir un répertoire situé sur un sous-système disque rapide, si possible dédié à cette tâche afin d’optimiser les lectures et les écritures des données.

Décrire le choix du sous-système disque dépasse le cadre de cet ouvrage ; néanmoins, plusieurs types de ces sous-systèmes peuvent être listés en exemple :

  • Contrôleur RAID avec disques SAS ou SSD, configurés en RAID 10.

  • Baie de stockage SAN, avec connexions Fibre Channel.

  • SSD, carte FusionIO, ou tout simplement RAID logiciel.

Ce choix ne doit pas être négligé, l’acquisition de matériel spécifique est fréquente et doit être faite en fonction d’objectifs précis : performances attendues, durabilité, coût, capacité d’hébergement et d’administration... Cette liste n’est pas exhaustive.

Un deuxième...

Initialisation d’une instance

À chaque répertoire créé correspond une instance de PostgreSQL c’est-à-dire un serveur qui a donc son propre espace de stockage, qui accepte des connexions entrantes et dispose de ses propres fichiers de configuration.

Un répertoire peut aussi être appelé groupe de bases de données ou encore cluster. Le terme anglophone cluster peut parfois porter à confusion selon le contexte d’utilisation. Fréquemment utilisé dans le contexte des bases de données, il signifie simplement groupe. Il est ici utilisé dans le sens de groupe de base de données.

L’instance et le groupe de bases de données correspondent aux mêmes bases de données mais de deux points de vue différents : l’instance correspond à une exécution du serveur PostgreSQL et un groupe de base de données correspond à un conteneur de bases de données, sous la forme de répertoires et de fichiers.

L’initialisation d’une instance s’effectue par la commande initdb. En positionnant correctement les options et leurs valeurs, il est possible de personnaliser l’instance. Ces options et valeurs ont une influence non négligeable sur la façon dont se comporte le serveur, par exemple lors de la création de bases de données dans l’instance, lors de la création d’index ou lors de la recherche de données. Il convient donc de paramétrer correctement cette création.

1. Options de la commande

L’ensemble des options de la commande initdb correspond à la liste suivante :

  • -A, --auth=METHOD : méthode d’authentification par défaut.

  • -D, --pgdata=DATADIR : chemin du répertoire des données.

  • -X, --xlogdir=XLOGDIR : définit l’emplacement des journaux de transaction.

  • -k, --data-checksums : active l’utilisation des sommes de contrôle des données.

  • -E, --encoding=ENCODING : encodage par défaut des bases de données.

  • --locale=LOCALE : paramètre régional par défaut des bases de données.

  • --lc-collate, --lc-ctype, --lc-messages, --lc-monetary, --lc-numeric, --lc-time : détails des paramètres régionaux par défaut. Par défaut, les réglages du système...

Arrêt et démarrage du serveur

Comme l’indique le message du résultat de la commande initdb, il existe une méthode simple pour démarrer le serveur PostgreSQL :


[postgres]$ pg_ctl -D data -l journaltrace start
 

La commande postgres correspond au programme du serveur. C’est ce programme qui, une fois chargé, acceptera les connexions entrantes. Il est possible de démarrer le serveur ainsi mais ce n’est pas la meilleure méthode.

La commande pg_ctl est dédiée au contrôle du serveur PostgreSQL et donc au démarrage du serveur postgres. Il est donc possible de démarrer PostgreSQL comme il est indiqué, puis d’arrêter, de redémarrer ou de recharger le serveur. L’option -D permet de préciser le répertoire contenant les données et les fichiers de configuration. L’option -l permet de rediriger les messages vers un fichier de traces et l’option start permet de préciser l’action à effectuer.

Les options start, stop, restart et reload permettent respectivement de démarrer, d’arrêter, de redémarrer et de recharger le serveur.

La commande pg_ctl est utilisée par le script de démarrage du système de démarrage des systèmes GNU/Linux pour arrêter et démarrer le serveur PostgreSQL. Elle permet aussi d’enregistrer...

Scripts Debian

Les paquets fabriqués pour intégrer PostgreSQL dans la distribution Debian ajoutent quelques scripts qui simplifient la gestion des versions et des groupes de bases de données dans un système.

Sur les systèmes Debian et Ubuntu sont disponibles deux paquets spécifiques, postgresql-common et postgresql-client-common apportant ces fonctionnalités.

Le paquet postgresql-common fournit les scripts suivants :

  • /usr/bin/pg_lsclusters : liste les instances existantes avec leur configuration et l’emplacement des données.

  • /usr/bin/pg_createcluster : crée une instance ; ce script utilise initdb et paramètre l’instance en fonction de la version demandée et des autres instances existantes.

  • /usr/bin/pg_ctlcluster : contrôle les instances en utilisant la commande pg_ctl.

  • /usr/bin/pg_upgradecluster : permet de mettre à jour une instance vers une autre version de PostgreSQL, par exemple de 9.6 vers 10.

  • /usr/bin/pg_dropcluster : supprime une instance de PostgreSQL.

  • /usr/sbin/pg_maintenance : permet d’effectuer certaines tâches de maintenance sur les instances existantes.

Le paquet postgresql-client-common apporte le script pg_wrapper qui permet d’utiliser une commande cliente spécifique, en fonction de l’instance sur laquelle l’utilisateur souhaite se connecter. Ce script permet donc de toujours utiliser la bonne version d’une commande en fonction de l’instance.

1. Le script pg_lsclusters

L’exemple suivant montre la commande pg_lsclusters, listant les instances de PostgreSQL fonctionnant dans un système Debian ou Ubuntu. Chaque ligne du résultat de la commande correspond à une instance et chaque colonne indique une propriété de l’instance :


[root]# pg_lsclusters  
Ver Cluster Port Status Owner    Data directory Log file  
10 main    5432 online postgres /var/lib/postgresql/10/main 
/var/log/postgresql/postgresql-10-main.log 
 

La première colonne indique la version de PostgreSQL utilisée pour l’instance, suivie, pour la seconde colonne, du nom utilisé pour cette instance.

La troisième colonne indique le port TCP utilisé par l’instance.

La quatrième colonne indique l’état de l’instance : online signifie que l’instance est démarrée et down...