Linux'ta PostgreSQL veritabanı varsayılan konumu


Yanıtlar:


134

" Postgresql'in tüm veritabanlarını tutacağı dizine " (ve yapılandırmaya) "veri dizini" denir ve PostgreSQL'in dağıtılmış hesaplamayla ilgili olmayan bir " veritabanı kümesi " olarak adlandırdığı (biraz kafa karıştırıcı bir şekilde) karşılık gelir, yalnızca bir grup anlamına gelir. PostgreSQL sunucusu tarafından yönetilen veritabanları ve ilgili nesneler.

Veri dizininin konumu dağıtıma bağlıdır. Kaynaktan kurarsanız, varsayılan şudur /usr/local/pgsql/data:

Dosya sistemi terimleriyle, bir veritabanı kümesi, tüm verilerin depolanacağı tek bir dizin olacaktır. Buna veri dizini veya veri alanı diyoruz. Verilerinizi nerede depolayacağınız tamamen size bağlıdır. Varsayılan bir seçenek yoktur, ancak / usr / local / pgsql / data veya / var / lib / pgsql / data gibi konumlar popülerdir. ( ref )

Ayrıca, çalışan bir PostgreSQL sunucusunun bir örneği bir kümeyle ilişkilendirilir; veri dizininin konumu , komut satırı seçeneğinde sunucu arka plan programına (" postmaster " veya " postgres ") -Dveya PGDATAortam değişkeni (genellikle çalışan kullanıcının kapsamında) tarafından iletilebilir postgres. Çalışan sunucuyu genellikle şuna benzer bir şekilde görebilirsiniz:

[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

Çok sık olmasa da, aynı PostgreSQL sunucusunun farklı "kümelere" (veri dizinleri) hizmet eden iki örneğini (aynı ikili dosyalar, farklı işlemler) çalıştırmanın mümkün olduğuna dikkat edin. Elbette, her örnek kendi TCP / IP bağlantı noktasında dinleyecektir.


Mevcut veri dizinini görebiliyorum, ancak birçok başka klasör ve dosya görüyorum. Psql veritabanını birçok dosyaya "kaydeder" mi yoksa bu veri dizini içinde DB olan yalnızca bir tane mi var? çünkü mysql veya sql sunucusundaki DB dosyası gibi bir şey düşünüyordum ...
CamiloVA

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

Varsayılan olarak en azından Gentoo Linux ve Ubuntu 14.04'te.

postgresql.confParam'ı bulabilir ve bakabilirsiniz data_directory. Yorumlanmışsa, veritabanı dizini bu yapılandırma dosyası dizini ile aynıdır.


21
Dağıtıma bağlı olacak, hepsi biraz farklı yapıyor. Sisteme bağlanabiliyorsanız, "SHOW data_directory" kullanmak muhtemelen en kolay yoldur.
Magnus Hagander

@MagnusHagander bu bir cevap, bu yorumu bir cevap haline getirmiyorsun. Benim için iyi çalıştı.
Vishal

Gnome'da da aynısını burada görüyorum/var/lib/8.1/postgresql
Junior Mayhé


9
Centos 7, postgres 9.3 yolu/var/lib/pgsql/9.3
rana_stack


15

Apt-get paket yöneticisi ile kurulumdan sonra Debian 8.1 ve PostgreSQL 9.4'te varsayılan

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

çok görünüşe göre /var/lib/postgresql/9.4/main.


11

Centos 6.5 / PostgreSQL 9.3'te:

"PGDATA=/var/lib/pgsql/data"İlk komut dosyasında istediğiniz konuma değerini değiştirin /etc/init.d/postgresql.

Yeni yeri hatırla chmod 700 ve chown postgres:postgrespatron sensin.


2

Komut pg_lsclusters(en azından Linux / Ubuntu altında) mevcut kümeleri ve bununla birlikte veri dizinini listelemek için kullanılabilir:

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

Bence en iyi yöntem pg_settinggörünümü sorgulamaktır :

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

Çıktı:

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

1

Aşağıdaki sorgu, postgres yapılandırma dosyasını bulmaya yardımcı olacaktır.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.