Domyślna lokalizacja bazy danych PostgreSQL w systemie Linux

Odpowiedzi:

134

Katalog, w którym postgresql będzie przechowywać wszystkie bazy danych ” (i konfigurację) nazywa się „katalogiem danych” i odpowiada temu, co PostgreSQL nazywa (trochę myląco) „ klastrem bazy danych ”, co nie jest związane z przetwarzaniem rozproszonym, oznacza po prostu grupę baz danych i powiązanych obiektów zarządzanych przez serwer PostgreSQL.

Lokalizacja katalogu danych zależy od dystrybucji. Jeśli instalujesz ze źródła, wartość domyślna to /usr/local/pgsql/data:

W kategoriach systemu plików klaster bazy danych będzie pojedynczym katalogiem, w którym będą przechowywane wszystkie dane. Nazywamy to katalogiem danych lub obszarem danych. Tylko od Ciebie zależy, gdzie zdecydujesz się przechowywać swoje dane. Nie ma wartości domyślnej, chociaż popularne są takie lokalizacje jak / usr / local / pgsql / data lub / var / lib / pgsql / data. ( Ref )

Poza tym instancja działającego serwera PostgreSQL jest powiązana z jednym klastrem; położenie jego katalogu danych może być przekazane demonowi serwera („ postmaster ” lub „ postgres ”) w -Dopcji wiersza poleceń lub przez PGDATAzmienną środowiskową (zwykle w zakresie uruchomionego użytkownika, zazwyczaj postgres). Zwykle możesz zobaczyć działający serwer za pomocą czegoś takiego:

[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

Zauważ, że możliwe jest, choć niezbyt częste, uruchomienie dwóch instancji tego samego serwera PostgreSQL (te same pliki binarne, różne procesy), które obsługują różne „klastry” (katalogi danych). Oczywiście każda instancja nasłuchuje na swoim własnym porcie TCP / IP.

leonbloy
źródło
Widzę bieżący katalog danych, ale widzę wiele innych folderów i plików. Czy psql „zapisuje” bazę danych w wielu plikach, czy też jest tylko jedna w tym katalogu danych, czyli DB? ponieważ myślałem na przykład w pliku DB na serwerze mysql lub sql ...
CamiloVA
70
/var/lib/postgresql/[version]/data/

Przynajmniej domyślnie w Gentoo Linux i Ubuntu 14.04.

Możesz znaleźć postgresql.confi spojrzeć na param data_directory. Jeśli jest skomentowany, katalog bazy danych jest taki sam jak ten katalog pliku konfiguracyjnego.

cichy
źródło
21
Będzie to zależało od dystrybucji, wszyscy robią to nieco inaczej. Jeśli możesz połączyć się z systemem, prawdopodobnie najłatwiejszym sposobem jest użycie „SHOW data_directory”.
Magnus Hagander
@MagnusHagander to jest odpowiedź, nie czyń tego komentarza odpowiedzią. U mnie to zadziałało.
Vishal,
w Gnome widzę to samo tutaj/var/lib/8.1/postgresql
Junior Mayhé
Dla mnie to '/var/lib/postgresql/9.3/main'
radtek
9
dla Centos 7, ścieżka postgres 9.3/var/lib/pgsql/9.3
rana_stack
15

Domyślnie w Debianie 8.1 i PostgreSQL 9.4 po instalacji za pomocą menedżera pakietów 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

tak najwyraźniej /var/lib/postgresql/9.4/main.

Léo Léopold Hertz 준영
źródło
11

W Centos 6.5 / PostgreSQL 9.3:

Zmień wartość "PGDATA=/var/lib/pgsql/data"na dowolną lokalizację w początkowym pliku skryptu /etc/init.d/postgresql.

Pamiętaj, aby chmod 700 i chown postgres:postgresdo nowej lokacji, a jesteś szefem.

Dum
źródło
2

Polecenie pg_lsclusters(przynajmniej pod Linux / Ubuntu) może być użyte do wyświetlenia listy istniejących klastrów, a wraz z nim także katalogu danych:

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
k_o_
źródło
1

Myślę, że najlepszą metodą jest pg_settingsprawdzenie widoku:

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

Wynik:

      name      |        setting         |            short_desc
----------------+------------------------+-----------------------------------
 data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
zero
źródło
1

Poniższe zapytanie pomoże znaleźć plik konfiguracyjny 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
Srikant Patra
źródło