Was ist das Standardverzeichnis, in dem PostgreSQL alle Datenbanken unter Linux speichert?
Was ist das Standardverzeichnis, in dem PostgreSQL alle Datenbanken unter Linux speichert?
Antworten:
Das " Verzeichnis, in dem postgresql alle Datenbanken speichert " (und Konfiguration) heißt "Datenverzeichnis" und entspricht dem, was PostgreSQL (etwas verwirrend) als " Datenbankcluster " bezeichnet, der sich nicht auf verteiltes Rechnen bezieht, sondern nur eine Gruppe von Datenbanken und verwandten Objekten, die von einem PostgreSQL-Server verwaltet werden.
Der Speicherort des Datenverzeichnisses hängt von der Verteilung ab. Wenn Sie von der Quelle installieren, lautet die Standardeinstellung /usr/local/pgsql/data
:
In Bezug auf das Dateisystem ist ein Datenbankcluster ein einzelnes Verzeichnis, in dem alle Daten gespeichert werden. Wir nennen dies das Datenverzeichnis oder den Datenbereich. Es liegt ganz bei Ihnen, wo Sie Ihre Daten speichern. Es gibt keine Standardeinstellung, obwohl Speicherorte wie / usr / local / pgsql / data oder / var / lib / pgsql / data beliebt sind. ( ref )
Außerdem ist eine Instanz eines laufenden PostgreSQL-Servers einem Cluster zugeordnet. Der Speicherort des Datenverzeichnisses kann in der Befehlszeilenoption oder über die Umgebungsvariable (normalerweise im Bereich des laufenden Benutzers ) an den Server-Daemon (" postmaster " oder " postgres " ) übergeben werden. Normalerweise sehen Sie den laufenden Server wie folgt:-D
PGDATA
postgres
[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
Beachten Sie, dass es möglich ist, wenn auch nicht sehr häufig, zwei Instanzen desselben PostgreSQL-Servers (gleiche Binärdateien, unterschiedliche Prozesse) auszuführen, die unterschiedliche "Cluster" (Datenverzeichnisse) bedienen. Natürlich würde jede Instanz ihren eigenen TCP / IP-Port abhören.
/var/lib/postgresql/[version]/data/
Zumindest in Gentoo Linux und Ubuntu 14.04 standardmäßig.
Sie können postgresql.conf
param finden und betrachten data_directory
. Wenn es kommentiert ist, ist das Datenbankverzeichnis dasselbe wie dieses Konfigurationsdateiverzeichnis.
/var/lib/8.1/postgresql
/var/lib/pgsql/9.3
Stellen Sie eine Verbindung zu einer Datenbank her und führen Sie den folgenden Befehl aus:
SHOW data_directory;
Mehr Informationen:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
Standard in Debian 8.1 und PostgreSQL 9.4 nach der Installation mit dem Paketmanager 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
so anscheinend /var/lib/postgresql/9.4/main
.
Mit dem Befehl pg_lsclusters
(zumindest unter Linux / Ubuntu) können die vorhandenen Cluster und damit auch das Datenverzeichnis aufgelistet werden:
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
Ich denke, die beste Methode ist, die pg_setting
Ansicht abzufragen :
select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';
Ausgabe:
name | setting | short_desc
----------------+------------------------+-----------------------------------
data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
Die folgende Abfrage hilft beim Auffinden der Postgres-Konfigurationsdatei.
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