157 votes

Emplacement par défaut de la base de données PostgreSQL sous Linux

Quel est le répertoire par défaut où PostgreSQL conservera toutes les bases de données sous Linux ?

2 votes

Un autre fil de discussion où les mêmes questions ont été abordées. stackoverflow.com/questions/1137060/

2 votes

161voto

leonbloy Points 27119

Le " répertoire où postgresql conservera toutes les bases de données "(et la configuration) est appelé "répertoire de données" et correspond à ce que PostgreSQL appelle (de manière un peu confuse) un " grappe de données ", qui n'est pas lié à l'informatique distribuée, il désigne simplement un groupe de bases de données et d'objets connexes gérés par un serveur PostgreSQL.

L'emplacement du répertoire de données dépend de la distribution. Si vous installez à partir des sources, l'emplacement par défaut est /usr/local/pgsql/data :

En termes de système de fichiers, une base de données sera un répertoire unique sous lequel toutes les données seront stockées. Nous l'appelons le répertoire de données ou zone de données. C'est à vous de décider où vous choisissez de stocker vos données. Il n'y a pas de valeur par défaut, bien que des emplacements tels que /usr/local/pgsql/data ou /var/lib/pgsql/data sont populaires. ( réf. )

De plus, une instance d'un serveur PostgreSQL en cours d'exécution est associée à un cluster ; l'emplacement de son répertoire de données peut être transmis au démon du serveur (" maître de poste " ou " postgres ") dans le -D ou par l'option de ligne de commande PGDATA variable d'environnement (généralement dans la portée de l'utilisateur en cours d'exécution, typiquement postgres ). Vous pouvez généralement voir le serveur en cours d'exécution avec quelque chose comme ceci :

[root@server1 ~]# ps auxw |  grep postgres | grep -- -D
postgres  1535  0.0  0.1  39768  1584 ?        S    May17   0:23 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

Notez qu'il est possible, bien que peu fréquent, d'exécuter deux instances du même serveur PostgreSQL (mêmes binaires, processus différents) qui servent différents "clusters" (répertoires de données). Bien sûr, chaque instance écoutera sur son propre port TCP/IP.

1 votes

Je peux voir le répertoire de données actuel, mais je vois beaucoup d'autres dossiers et fichiers. Est-ce que psql "enregistre" la base de données dans plusieurs fichiers ou y a-t-il un seul fichier à l'intérieur de ce répertoire de données qui est la BD ? parce que je pensais à quelque chose comme le fichier de la BD sur mysql ou sql server par exemple...

0 votes

Cela fonctionne jusqu'à CentOS 7, mais pas CentOS 8. Je ne suis pas sûr pour les autres distributions. Il existe une autre réponse avec la nouvelle commande pour CentOS 8. Voir mon commentaire.

0 votes

@MacGyver Merci de le signaler. Pourriez-vous fournir le lien vers votre commentaire ?

96voto

silent Points 2156
/var/lib/postgresql/[version]/data/

Au moins dans Gentoo Linux et Ubuntu 14.04 par défaut.

Vous pouvez trouver postgresql.conf et regardez le paramètre data_directory . S'il est commenté, le répertoire de la base de données est le même que celui du fichier de configuration.

24 votes

Cela dépendra de la distribution, elles le font toutes légèrement différemment. Si vous pouvez vous connecter au système, utiliser "SHOW data_directory" est probablement le moyen le plus simple.

0 votes

@MagnusHagander c'est une réponse, vous ne faites pas de ce commentaire une réponse. Cela a bien fonctionné pour moi.

0 votes

Dans Gnome, je vois la même chose ici /var/lib/8.1/postgresql

54voto

Roby Sottini Points 902

Connectez-vous à une base de données et exécutez la commande :

SHOW data_directory;

Plus d'informations :

https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html

19voto

Masi Points 22232

Par défaut dans Debian 8.1 et PostgreSQL 9.4 après l'installation avec le gestionnaire de paquets apt-get

ps auxw |  grep postgres | grep -- -D
postgres 17340  0.0  0.5 226700 21756 ?        S    09:50   0:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf

donc apparemment /var/lib/postgresql/9.4/main .

13voto

Dum Points 11

Sur Centos 6.5/PostgreSQL 9.3 :

Changez la valeur de "PGDATA=/var/lib/pgsql/data" à l'endroit que vous voulez dans le fichier initial script. /etc/init.d/postgresql .

N'oubliez pas de chmod 700 et chown postgres:postgres au nouvel emplacement et vous êtes le patron.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X