Jaki jest domyślny katalog, w którym PostgreSQL będzie przechowywać wszystkie bazy danych w systemie Linux?
Jaki jest domyślny katalog, w którym PostgreSQL będzie przechowywać wszystkie bazy danych w systemie Linux?
Odpowiedzi:
„ 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 -D
opcji wiersza poleceń lub przez PGDATA
zmienną ś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.
/var/lib/postgresql/[version]/data/
Przynajmniej domyślnie w Gentoo Linux i Ubuntu 14.04.
Możesz znaleźć postgresql.conf
i spojrzeć na param data_directory
. Jeśli jest skomentowany, katalog bazy danych jest taki sam jak ten katalog pliku konfiguracyjnego.
/var/lib/8.1/postgresql
/var/lib/pgsql/9.3
Połącz się z bazą danych i wykonaj polecenie:
SHOW data_directory;
Więcej informacji:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
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
.
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
Myślę, że najlepszą metodą jest pg_setting
sprawdzenie 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)
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