Quel est le répertoire par défaut où PostgreSQL gardera toutes les bases de données sur Linux?
Le répertoire "où postgresql conservera toutes les bases de données" (et sa configuration) est appelé "répertoire de données" et correspond à ce que PostgreSQL appelle (de façon quelque peu confuse) un " groupe de bases de données ", En rapport avec l'informatique distribuée, cela signifie simplement un groupe de bases de données et d'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 des sources, la valeur par défaut est /usr/local/pgsql/data
:
En termes de système de fichiers, une base de données le cluster sera un répertoire unique sous lequel toutes les données seront stockées . Nous appelons cela le répertoire de données ou zone de données. C'est entièrement à vous où vous choisissez de stocker vos données . Il n'y a pas de valeur par défaut, bien que endroits tels que /usr/local/pgsql/data ou /var/lib/pgsql/data sont populaires . ( ref )
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 transmis au démon du serveur (" postmaster " ou " postgres ") dans l'option de ligne de commande -D
ou par la variable d'environnement PGDATA
(généralement dans l'étendue 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 entendu, chaque instance écoutera 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 consulter param data_directory
. S'il est commenté, le répertoire de la base de données est identique à celui du fichier de configuration.
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
.
Connectez-vous à une base de données et exécutez la commande:
SHOW data_directory;
Plus d'information:
http://www.postgresql.org/docs/current/sql-show.htmlhttps://www.postgresql.org/docs/current/runtime-config-file-locations html
Sur Centos 6.5/PostgreSQL 9.3:
Modifiez la valeur de "PGDATA=/var/lib/pgsql/data"
à l'emplacement de votre choix dans le fichier de script initial /etc/init.d/postgresql
.
N'oubliez pas de chmod 700
et chown postgres:postgres
au nouvel emplacement et vous êtes le patron.
La commande pg_lsclusters
(au moins sous Linux/Ubuntu) peut être utilisée pour lister les clusters existants et avec elle 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 vue pg_setting
:
select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';
Sortie:
name | setting | short_desc
----------------+------------------------+-----------------------------------
data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)