Lokasi default database PostgreSQL di Linux

Jawaban:

134

" Direktori tempat postgresql akan menyimpan semua database " (dan konfigurasi) disebut "direktori data" dan sesuai dengan apa yang disebut oleh PostgreSQL (agak membingungkan) sebagai " cluster database ", yang tidak terkait dengan komputasi terdistribusi, itu hanya berarti grup database dan objek terkait yang dikelola oleh server PostgreSQL.

Lokasi direktori data bergantung pada distribusinya. Jika Anda menginstal dari sumber, defaultnya adalah /usr/local/pgsql/data:

Dalam istilah sistem file, cluster database akan menjadi satu direktori tempat semua data akan disimpan. Kami menyebutnya direktori data atau area data. Terserah Anda di mana Anda memilih untuk menyimpan data Anda. Tidak ada default, meskipun lokasi seperti / usr / local / pgsql / data atau / var / lib / pgsql / data populer. ( ref )

Selain itu, sebuah instance dari server PostgreSQL yang sedang berjalan dikaitkan dengan satu cluster; lokasi direktori datanya dapat diteruskan ke daemon server (" postmaster " atau " postgres ") di -Dopsi baris perintah, atau oleh PGDATAvariabel lingkungan (biasanya dalam lingkup pengguna yang menjalankan, biasanya postgres). Anda biasanya dapat melihat server yang berjalan dengan sesuatu seperti ini:

[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

Perhatikan bahwa dimungkinkan, meskipun tidak terlalu sering, untuk menjalankan dua instance dari server PostgreSQL yang sama (biner yang sama, proses berbeda) yang melayani "cluster" berbeda (direktori data). Tentu saja, setiap instance akan mendengarkan pada port TCP / IP-nya sendiri.

leonbloy.dll
sumber
Saya dapat melihat direktori data saat ini, tetapi saya melihat banyak folder dan file lain. Apakah psql "menyimpan" database dalam banyak file atau hanya ada satu di dalam direktori data ini yaitu DB? karena saya sedang memikirkan sesuatu seperti file DB di mysql atau sql server misalnya ...
CamiloVA
70
/var/lib/postgresql/[version]/data/

Setidaknya di Gentoo Linux dan Ubuntu 14.04 secara default.

Anda dapat menemukan postgresql.confdan melihat param data_directory. Jika dikomentari maka direktori database sama dengan direktori file konfigurasi ini.

diam
sumber
21
Itu akan tergantung pada distribusinya, mereka semua melakukannya dengan sedikit berbeda. Jika Anda dapat terhubung ke sistem, menggunakan "SHOW data_directory" mungkin adalah cara termudah.
Magnus Hagander
@MagnusHagander itu adalah sebuah jawaban, y jangan kamu buat komentar ini sebagai jawaban. Ini bekerja dengan baik untuk saya.
Vishal
di Gnome Saya melihat hal yang sama di sini/var/lib/8.1/postgresql
Junior Mayhé
Bagi saya ini '
/var/lib/postgresql/9.3/main
9
untuk Centos 7, postgres 9.3 jalur/var/lib/pgsql/9.3
rana_stack
15

Default di Debian 8.1 dan PostgreSQL 9.4 setelah instalasi dengan manajer paket 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

begitu rupanya /var/lib/postgresql/9.4/main.

Léo Léopold Hertz 준영
sumber
11

Pada Centos 6.5 / PostgreSQL 9.3:

Ubah nilai "PGDATA=/var/lib/pgsql/data"ke lokasi apa pun yang Anda inginkan di file skrip awal /etc/init.d/postgresql.

Ingatlah untuk chmod 700 dan chown postgres:postgreske lokasi baru dan Anda adalah bosnya.

Dum
sumber
2

Perintah pg_lsclusters(setidaknya di Linux / Ubuntu) dapat digunakan untuk membuat daftar cluster yang ada dan juga direktori data:

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
k_o_
sumber
1

Saya pikir metode terbaik adalah dengan query pg_settingview:

 select s.name, s.setting, s.short_desc from pg_settings s where s.name='data_directory';

Keluaran:

      name      |        setting         |            short_desc
----------------+------------------------+-----------------------------------
 data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
batal
sumber
1

Kueri di bawah ini akan membantu menemukan file konfigurasi 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
Srikant Patra
sumber