it-swarm.com.de

PostgreSQL-Datenbank-Standardspeicherort unter Linux

Was ist das Standardverzeichnis, in dem PostgreSQL alle Datenbanken unter Linux aufbewahrt?

95
gruszczy

Das "-Verzeichnis, in dem postgresql alle Datenbanken" (und die Konfiguration) aufbewahrt, wird als "Datenverzeichnis" bezeichnet und entspricht dem, was PostgreSQL (etwas verwirrend) einen " Datenbankcluster " nennt, der nicht damit zusammenhängt Verteiltes Computing bedeutet nur eine Gruppe von Datenbanken und verwandten Objekten, die von einem PostgreSQL-Server verwaltet werden. 

Die Position des Datenverzeichnisses hängt von der Verteilung ab. Wenn Sie von der Quelle installieren, lautet der Standardwert /usr/local/pgsql/data:

In Bezug auf das Dateisystem eine Datenbank Cluster wird ein einzelnes Verzeichnis sein unter denen alle Daten gespeichert werden . Wir nennen dies das Datenverzeichnis oder Datenbereich. Es liegt ganz bei Ihnen. wo Sie Ihre Daten speichern möchten . Es gibt keine Vorgabe, obwohl Standorte wie /usr/local/pgsql/data oder /var/lib/pgsql/data sind beliebt . ( ref )

Außerdem ist eine Instanz eines laufenden PostgreSQL-Servers einem Cluster zugeordnet. Der Speicherort seines Datenverzeichnisses kann an den Server - Daemon (" postmaster " oder " postgres ") in der -D - Befehlszeilenoption oder durch die Umgebungsvariable PGDATA übergeben werden (normalerweise im Bereich der laufender Benutzer, normalerweise postgres). Sie können den laufenden Server normalerweise folgendermaßen sehen:

[[email protected] ~]# 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, jedoch nicht sehr häufig ist, zwei Instanzen desselben PostgreSQL-Servers (gleiche Binärdateien, unterschiedliche Prozesse) auszuführen, die verschiedene "Cluster" (Datenverzeichnisse) bedienen. Natürlich würde jede Instanz ihren eigenen TCP/IP-Port überwachen.

116
leonbloy
/var/lib/postgresql/[version]/data/

Zumindest in Gentoo Linux und Ubuntu 14.04 standardmäßig.

Sie können postgresql.conf finden und sich den Parameter data_directory anschauen. Wenn es kommentiert wird, stimmt das Datenbankverzeichnis mit diesem Verzeichnis der Konfigurationsdatei überein.

52
silent

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

Stellen Sie eine Verbindung zu einer Datenbank her und führen Sie den Befehl aus:

SHOW data_directory;

Mehr Informationen:

https://www.postgresql.org/docs/current/sql-show.htmlhttps://www.postgresql.org/docs/current/runtime-config-file-locations html

13
Roby Sottini

Zu Centos 6.5/PostgreSQL 9.3:

Ändern Sie den Wert von "PGDATA=/var/lib/pgsql/data" an den gewünschten Ort in der ursprünglichen Skriptdatei /etc/init.d/postgresql.

Vergessen Sie nicht, chmod 700 und chown postgres:postgres an den neuen Ort und Sie sind der Chef. 

9
Dum

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
0
k_o_

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)
0
Null