initdb

Nom

initdb — Crée une nouvelle installation du système Postgres
initdb [ --pgdata=dbdir | -r dbdir ]
    [ --pglib=libdir | -l libdir ]
    [ --template=template | -t template ]
    [ --username=name | -u name ]
    [ --noclean | -n ] [ --debug | -d ]
  

Entrées

--pglib=libdir, -l libdir, PGLIB

Quels sont les fichiers qui font fonctionner Postgres ? Hormis les fichiers qui doivent être dans un repertoire particulier de part leur fonction, les fichiers qui font fonctionner le logiciel Postgres sont installé dans un répertoire appelé libdir. Un exemple de fichier qu'on y trouvera et dont initdb a besoin est global1.bki.source, qui contient toutes les informations des tables catalogue partagées.

--pgdata=dbdir, -r dbdir, PGDATA

Où, dans votre système de fichiers Unix, voulez vous que la base soit installée ? Le répertoire principal est appelé PGDATA.

--username=name, -u name, PGUSER

Qui sera le super-utilisateur pour le système Postgres ? Le super-utilisateur Postgres est un utilisateur Unix qui est propriétaire de tous les fichiers système de la base et est également propriétaire des processus postmaster et serveur qui y accèdent. (Ou laisser par défaut celui qui lance initdb).

Note

Seul le super-utilisateur Unix (root) peut créer un database system avec un propriétaire différent du super-utilisateur Postgres.

Également, moins communément utilisé, d'autres paramètres sont disponibles :

--template=template, -t template

Remplacer la base template1 avec une base existante dans le système, et ne touchez à plus rien d'autre. C'est très pratique quand vous avez besoin de mettre à jour la base template1 en utiliant initdb depuis une nouvelle version de Postgres, ou quand la base template1 a été corrompue par des problèmes système. Normalement le contenu de template1 ne changera pas pendant toute la vie du système. Vous ne pouvez rien détruire en lançant initdb avec l'option --template.

--noclean, -n

Par défaut, quand initdb détermine qu'une erreur l'empêche de créer complètement le système, il supprime certains fichiers qu'il avait créé avant de déterminer qu'il ne peut pas finir la tâche. Ceci inclut certains fichiers core laissés par les programmes qu'il invoque. Cette option empêche toute remise en place et ainsi facilite le débugage.

--debug, -d

Imprime les sorties débugage du bootstrap backend. Le bootstrap backend est le programme utilisé par initdb pour créer les table catalogue. Cette option génère un énorme flot de données. Elle arrête aussi l'étape de nettoyage.

Fichiers qui sont aussi des entrées dans initdb:

postconfig

Apparaît quelque part dans la commande de recherche du path Unix (defini par la variable d'environnement PATH). C'est un programme qui spécifie certaines options de commande par défaut. Voir ci-dessous.

PGLIB/global1.bki.source

Contient les tables catalogue partagées dans le nouveau système. Ce fichier fait partie du logiciel Postgres.

PGLIB/local1_template1.bki.source

Contient les tables template1 dans le nouveau système. Ce fichier fait partie du logiciel Postgres.

Sorties

initdb créera des fichiers dans PGDATA qui représentent les tables système et l'ossature de l'installation complète du système.

Description

initdb crée un nouveau système de bases Postgres. Un système de bases est une collection de bases qui sont toutes administrées par le même utilisateur Unix et gérées par un postmaster unique.

Créer un système de bases consiste en la création de répertoires dans lesquels se trouvent les données, générant les tables catalogue partagées (tables qui n'appartiennent à aucune base particulière), et créant la base template1. Qu'est-ce que la base template1 ? Quand vous créez une base, Postgres réalise ceci en copiant chaque chose depuis template1. Elle contient les tables catalogue pour certaines choses comme les types natifs.

Après qu'initdb ait créé la base, il complète l'initialisation en lançant vacuum, qui replace certains paramètres d'optimisation.

Il y a trois façons de passer les paramètres à initdb.

Les options de commande ont toujours priorité sur les paramètres spécifiés d'une autre façon. Les valeurs renvoyés par postconfig ont priorité sur les variables d'environnement, mais votre programme postconfig peut baser ses sorties sur les variables d'environnement si vous désirez que leurs valeurs soient utilisées.

Les valeurs de sortie de postconfig doivent avoir le format
var1=value1 var2=value2 ...
   
Il peut n'y avoir aucune sortie si aucun paramètre n'est fourni. Les valeurs var sont égales aux noms de variables d'environnement correspondantes. Par exemple,
PGDATA=/tmp/postgres_test
   
a le même effet qu'invoquer initdb avec une variable d'environnement PGDATA dont la valeur est /tmp/postgres_test.