Quel est le répertoire par défaut où PostgreSQL conservera toutes les bases de données sous Linux?
Quel est le répertoire par défaut où PostgreSQL conservera toutes les bases de données sous Linux?
Réponses:
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 (un peu déroutant) un " cluster de bases de données ", qui n'est pas lié à l'informatique distribuée, cela signifie simplement un groupe des bases de données et des objets associés gérés par un serveur PostgreSQL.
L'emplacement du répertoire de données dépend de la distribution. Si vous installez à partir de la source, la valeur par défaut est /usr/local/pgsql/data
:
En termes de système de fichiers, un cluster de bases de données sera un répertoire unique sous lequel toutes les données seront stockées. Nous appelons cela le répertoire de données ou la 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 soient populaires. ( réf )
En outre, 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 passé au démon du serveur (" postmaster " ou " postgres ") dans l' -D
option de ligne de commande, ou par la PGDATA
variable d'environnement (généralement dans la portée de l'utilisateur en cours d'exécution, généralement 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 desservent différents "clusters" (répertoires de données). Bien sûr, chaque instance écouterait sur son propre port TCP / IP.
/var/lib/postgresql/[version]/data/
Au moins dans Gentoo Linux et Ubuntu 14.04 par défaut.
Vous pouvez trouver postgresql.conf
et regarder param 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.
/var/lib/8.1/postgresql
/var/lib/pgsql/9.3
Connectez-vous à une base de données et exécutez la commande:
SHOW data_directory;
Plus d'information:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
Valeur 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
.
La commande pg_lsclusters
(au moins sous Linux / Ubuntu) peut être utilisée pour lister les clusters existants et avec elle aussi le répertoire de données:
Ver Cluster Port Status Owner Data directory Log file
9.5 main 5433 down postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
Je pense que la meilleure méthode consiste à interroger la pg_setting
vue:
select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';
Production:
name | setting | short_desc
----------------+------------------------+-----------------------------------
data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
La requête ci-dessous vous aidera à trouver le fichier de configuration postgres.
postgres=# SHOW config_file;
config_file
-------------------------------------
/var/lib/pgsql/data/postgresql.conf
(1 row)
[root@node1 usr]# cd /var/lib/pgsql/data/
[root@node1 data]# ls -lrth
total 48K
-rw------- 1 postgres postgres 4 Nov 25 13:58 PG_VERSION
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_twophase
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_tblspc
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_snapshots
drwx------ 2 postgres postgres 6 Nov 25 13:58 pg_serial
drwx------ 4 postgres postgres 36 Nov 25 13:58 pg_multixact
-rw------- 1 postgres postgres 20K Nov 25 13:58 postgresql.conf
-rw------- 1 postgres postgres 1.6K Nov 25 13:58 pg_ident.conf
-rw------- 1 postgres postgres 4.2K Nov 25 13:58 pg_hba.conf
drwx------ 3 postgres postgres 60 Nov 25 13:58 pg_xlog
drwx------ 2 postgres postgres 18 Nov 25 13:58 pg_subtrans
drwx------ 2 postgres postgres 18 Nov 25 13:58 pg_clog
drwx------ 5 postgres postgres 41 Nov 25 13:58 base
-rw------- 1 postgres postgres 92 Nov 25 14:00 postmaster.pid
drwx------ 2 postgres postgres 18 Nov 25 14:00 pg_notify
-rw------- 1 postgres postgres 57 Nov 25 14:00 postmaster.opts
drwx------ 2 postgres postgres 32 Nov 25 14:00 pg_log
drwx------ 2 postgres postgres 4.0K Nov 25 14:00 global
drwx------ 2 postgres postgres 25 Nov 25 14:20 pg_stat_tmp