Standardspeicherort der PostgreSQL-Datenbank unter Linux


Antworten:


133

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:-DPGDATApostgres

[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.


Ich kann das aktuelle Datenverzeichnis sehen, aber ich sehe viele andere Ordner und Dateien. Speichert psql die Datenbank in vielen Dateien oder gibt es nur eine in diesem Datenverzeichnis, nämlich die Datenbank? weil ich zum Beispiel in so etwas wie der DB-Datei auf MySQL oder SQL Server gedacht habe ...
CamiloVA

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

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

Sie können postgresql.confparam finden und betrachten data_directory. Wenn es kommentiert ist, ist das Datenbankverzeichnis dasselbe wie dieses Konfigurationsdateiverzeichnis.


21
Es wird abhängig von der Verteilung sein, alle machen es etwas anders. Wenn Sie eine Verbindung zum System herstellen können, ist die Verwendung von "SHOW data_directory" wahrscheinlich der einfachste Weg.
Magnus Hagander

@MagnusHagander es ist eine Antwort, y machst du diesen Kommentar nicht zu einer Antwort. Es hat gut für mich funktioniert.
Vishal

in Gnome sehe ich das gleiche hier/var/lib/8.1/postgresql
Junior Mayhé

Für mich ist es '/var/lib/postgresql/9.3/main'
radtek

9
für Centos 7, postgres 9.3 Pfad/var/lib/pgsql/9.3
rana_stack


15

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.


11

Unter Centos 6.5 / PostgreSQL 9.3:

Ändern Sie den Wert von "PGDATA=/var/lib/pgsql/data"an einen beliebigen Speicherort in der anfänglichen Skriptdatei/etc/init.d/postgresql .

Denken Sie an chmod 700 und chown postgres:postgresan den neuen Standort und Sie sind der Chef.


2

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

1

Ich denke, die beste Methode ist, die pg_settingAnsicht 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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.