Vị trí mặc định của cơ sở dữ liệu PostgreSQL trên Linux


Câu trả lời:


134

"Thư mục nơi postgresql sẽ lưu giữ tất cả cơ sở dữ liệu " (và cấu hình) được gọi là "thư mục dữ liệu" và tương ứng với những gì PostgreSQL gọi (hơi khó hiểu) là " cụm cơ sở dữ liệu ", không liên quan đến tính toán phân tán, nó chỉ có nghĩa là một nhóm cơ sở dữ liệu và các đối tượng liên quan do máy chủ PostgreSQL quản lý.

Vị trí của thư mục dữ liệu phụ thuộc vào sự phân phối. Nếu bạn cài đặt từ nguồn, mặc định là /usr/local/pgsql/data:

Theo thuật ngữ hệ thống tệp, một cụm cơ sở dữ liệu sẽ là một thư mục duy nhất trong đó tất cả dữ liệu sẽ được lưu trữ. Chúng tôi gọi đây là thư mục dữ liệu hoặc vùng dữ liệu. Nơi bạn chọn để lưu trữ dữ liệu của mình là hoàn toàn phụ thuộc vào bạn. Không có mặc định, mặc dù các vị trí như / usr / local / pgsql / data hoặc / var / lib / pgsql / data là phổ biến. ( Ref )

Bên cạnh đó, một phiên bản của máy chủ PostgreSQL đang chạy được liên kết với một cụm; vị trí của thư mục dữ liệu của nó có thể được chuyển đến daemon máy chủ (" postmaster " hoặc " postgres ") trong -Dtùy chọn dòng lệnh hoặc bởi PGDATAbiến môi trường (thường là trong phạm vi của người dùng đang chạy postgres). Bạn thường có thể thấy máy chủ đang chạy với một cái gì đó như sau:

[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

Lưu ý rằng có thể, mặc dù không thường xuyên, chạy hai phiên bản của cùng một máy chủ PostgreSQL (cùng một tệp nhị phân, các quy trình khác nhau) phục vụ các "cụm" (thư mục dữ liệu) khác nhau. Tất nhiên, mỗi phiên bản sẽ lắng nghe trên cổng TCP / IP của riêng nó.


Tôi có thể thấy thư mục dữ liệu hiện tại, nhưng tôi thấy nhiều thư mục và tệp khác. Psql có "lưu" cơ sở dữ liệu trong nhiều tệp hay chỉ có một tệp bên trong thư mục dữ liệu này là DB? bởi vì tôi đang nghĩ về một cái gì đó như tệp DB trên máy chủ mysql hoặc sql chẳng hạn ...
CamiloVA

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

Ít nhất là trong Gentoo Linux và Ubuntu 14.04 theo mặc định.

Bạn có thể tìm postgresql.confvà xem thông số data_directory. Nếu nó được nhận xét thì thư mục cơ sở dữ liệu giống như thư mục tệp cấu hình này.


21
Nó sẽ được tùy thuộc vào sự phân phối, tất cả họ làm điều đó hơi khác nhau. Nếu bạn có thể kết nối với hệ thống, sử dụng "SHOW data_directory" có lẽ là cách dễ nhất.
Magnus Hagander

@MagnusHagander đó là một câu trả lời, bạn không đưa nhận xét này thành câu trả lời. Nó hoạt động tốt cho tôi.
Vishal

trong Gnome tôi nhìn thấy tương tự ở đây/var/lib/8.1/postgresql
Junior Mayhé

Đối với tôi '/var/lib/postgresql/9.3/main'
radtek

9
cho Centos 7, đường dẫn postgres 9.3/var/lib/pgsql/9.3
rana_stack 17/12/15


15

Mặc định trong Debian 8.1 và PostgreSQL 9.4 sau khi cài đặt với trình quản lý gói 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

như vậy rõ ràng /var/lib/postgresql/9.4/main.


11

Trên Centos 6.5 / PostgreSQL 9.3:

Thay đổi giá trị của "PGDATA=/var/lib/pgsql/data"thành bất kỳ vị trí nào bạn muốn trong tệp kịch bản ban đầu /etc/init.d/postgresql.

Hãy nhớ đến chmod 700chown postgres:postgresđến vị trí mới và bạn là ông chủ.


2

Lệnh pg_lsclusters(ít nhất là trong Linux / Ubuntu) có thể được sử dụng để liệt kê các cụm hiện có và cùng với nó là thư mục dữ liệu:

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

Tôi nghĩ phương pháp tốt nhất là truy vấn pg_settingchế độ xem:

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

Đầu ra:

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

1

Truy vấn dưới đây sẽ giúp tìm tệp cấu hình 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.