Was ist das Standardverzeichnis, in dem PostgreSQL alle Datenbanken unter Linux aufbewahrt?
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.
/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.
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
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.
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)