¿Cuál es el directorio predeterminado donde PostgreSQL mantendrá todas las bases de datos en Linux?
¿Cuál es el directorio predeterminado donde PostgreSQL mantendrá todas las bases de datos en Linux?
Respuestas:
El " directorio donde postgresql mantendrá todas las bases de datos " (y la configuración) se llama "directorio de datos" y corresponde a lo que PostgreSQL llama (un poco confuso) un " clúster de base de datos ", que no está relacionado con la computación distribuida, solo significa un grupo de bases de datos y objetos relacionados gestionados por un servidor PostgreSQL.
La ubicación del directorio de datos depende de la distribución. Si instala desde la fuente, el valor predeterminado es /usr/local/pgsql/data
:
En términos de sistema de archivos, un clúster de base de datos será un único directorio en el que se almacenarán todos los datos. A esto lo llamamos directorio de datos o área de datos. Depende completamente de usted dónde elija almacenar sus datos. No hay un valor predeterminado, aunque las ubicaciones como / usr / local / pgsql / data o / var / lib / pgsql / data son populares. ( ref )
Además, una instancia de un servidor PostgreSQL en ejecución está asociada a un clúster; la ubicación de su directorio de datos se puede pasar al demonio del servidor (" postmaster " o " postgres ") en la -D
opción de línea de comando, o por la PGDATA
variable de entorno (generalmente en el alcance del usuario que ejecuta, típicamente postgres
). Por lo general, puede ver el servidor en ejecución con algo como esto:
[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
Tenga en cuenta que es posible, aunque no muy frecuente, ejecutar dos instancias del mismo servidor PostgreSQL (mismos binarios, procesos diferentes) que sirven a diferentes "clústeres" (directorios de datos). Por supuesto, cada instancia escucharía en su propio puerto TCP / IP.
/var/lib/postgresql/[version]/data/
Al menos en Gentoo Linux y Ubuntu 14.04 por defecto.
Puede buscar postgresql.conf
y mirar param data_directory
. Si se comenta, el directorio de la base de datos es el mismo que este directorio de archivos de configuración.
/var/lib/8.1/postgresql
/var/lib/pgsql/9.3
Conéctese a una base de datos y ejecute el comando:
SHOW data_directory;
Más información:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
Por defecto en Debian 8.1 y PostgreSQL 9.4 después de la instalación con el administrador de paquetes 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
tan aparentemente /var/lib/postgresql/9.4/main
.
El comando pg_lsclusters
(al menos en Linux / Ubuntu) se puede usar para listar los clústeres existentes y con él también el directorio de datos:
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
Creo que el mejor método es consultar la pg_setting
vista:
select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';
Salida:
name | setting | short_desc
----------------+------------------------+-----------------------------------
data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
La siguiente consulta ayudará a encontrar el archivo de configuración de 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