Posizione predefinita del database PostgreSQL su Linux


Risposte:


134

La " directory in cui postgresql manterrà tutti i database " (e la configurazione) è chiamata "directory dei dati" e corrisponde a ciò che PostgreSQL chiama (in modo un po 'confuso) un " cluster di database ", che non è correlato al calcolo distribuito, significa solo un gruppo di database e oggetti correlati gestiti da un server PostgreSQL.

La posizione della directory dei dati dipende dalla distribuzione. Se installi dalla sorgente, l'impostazione predefinita è /usr/local/pgsql/data:

In termini di file system, un cluster di database sarà una singola directory in cui verranno archiviati tutti i dati. Chiamiamo questa directory o area dati. Dipende completamente da te dove scegliere di memorizzare i tuoi dati. Non ci sono impostazioni predefinite, sebbene posizioni come / usr / local / pgsql / data o / var / lib / pgsql / data siano popolari. ( rif )

Inoltre, un'istanza di un server PostgreSQL in esecuzione è associata a un cluster; la posizione della sua directory di dati può essere passata al demone del server (" postmaster " o " postgres ") -Dnell'opzione della riga di comando, o dalla PGDATAvariabile d'ambiente (di solito nell'ambito dell'utente in esecuzione, in genere postgres). Di solito puoi vedere il server in esecuzione con qualcosa del genere:

[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

Si noti che è possibile, sebbene non molto frequente, eseguire due istanze dello stesso server PostgreSQL (stessi binari, processi diversi) che servono diversi "cluster" (directory di dati). Naturalmente, ogni istanza ascolterebbe sulla propria porta TCP / IP.


Riesco a vedere la directory dei dati corrente, ma vedo molte altre cartelle e file. Psql "salva" il database in molti file o ce n'è solo uno all'interno di questa directory di dati che è il DB? perché stavo pensando a qualcosa come il file DB su mysql o sql server, ad esempio ...
CamiloVA

70
/var/lib/postgresql/[version]/data/

Almeno in Gentoo Linux e Ubuntu 14.04 per impostazione predefinita.

Puoi trovare postgresql.confe guardare param data_directory. Se è commentato, la directory del database è la stessa di questa directory del file di configurazione.


21
Dipende dalla distribuzione, tutti lo fanno in modo leggermente diverso. Se puoi connetterti al sistema, usare "SHOW data_directory" è probabilmente il modo più semplice.
Magnus Hagander

@MagnusHagander è una risposta, non rendi questo commento una risposta. Ha funzionato bene nel mio caso.
Vishal

in Gnome vedo lo stesso qui/var/lib/8.1/postgresql
Junior Mayhé

Per me è '/var/lib/postgresql/9.3/main'
radtek

9
per Centos 7, percorso postgres 9.3/var/lib/pgsql/9.3
rana_stack


15

Predefinito in Debian 8.1 e PostgreSQL 9.4 dopo l'installazione con apt-get del gestore di pacchetti

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

così a quanto pare /var/lib/postgresql/9.4/main.


11

Su Centos 6.5 / PostgreSQL 9.3:

Modificare il valore di "PGDATA=/var/lib/pgsql/data"in qualsiasi posizione desiderata nel file di script iniziale /etc/init.d/postgresql.

Ricordati di chmod 700 e chown postgres:postgresnella nuova posizione e tu sei il capo.


2

Il comando pg_lsclusters(almeno sotto Linux / Ubuntu) può essere utilizzato per elencare i cluster esistenti e con esso anche la directory dei dati:

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

1

Penso che il metodo migliore sia interrogare la pg_settingvista:

 select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';

Produzione:

      name      |        setting         |            short_desc
----------------+------------------------+-----------------------------------
 data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)

1

La query sottostante aiuterà a trovare il file di configurazione di 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.