Расположение базы данных PostgreSQL по умолчанию в Linux

Ответы:

134

« Каталог, в котором postgresql будет хранить все базы данных » (и конфигурацию), называется «каталогом данных» и соответствует тому, что PostgreSQL называет (немного сбивчиво) « кластером базы данных », который не имеет отношения к распределенным вычислениям, это просто означает группу баз данных и связанных объектов, управляемых сервером PostgreSQL.

Расположение каталога данных зависит от распределения. Если вы устанавливаете из исходного кода, значение по умолчанию /usr/local/pgsql/data:

С точки зрения файловой системы кластер базы данных представляет собой единый каталог, в котором будут храниться все данные. Мы называем это каталогом данных или областью данных. Выбор места для хранения данных полностью зависит от вас. По умолчанию нет, хотя популярны такие места, как / usr / local / pgsql / data или / var / lib / pgsql / data. ( ссылка )

Кроме того, экземпляр работающего сервера PostgreSQL связан с одним кластером; расположение его каталога данных может быть передано демону сервера (« postmaster » или « postgres ») в параметре -Dкомандной строки или с помощью PGDATAпеременной среды (обычно в области действия запущенного пользователя postgres). Обычно вы можете увидеть работающий сервер примерно так:

[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

Обратите внимание, что возможно, хотя и не очень часто, запустить два экземпляра одного и того же сервера PostgreSQL (одинаковые двоичные файлы, разные процессы), которые обслуживают разные «кластеры» (каталоги данных). Конечно, каждый экземпляр будет прослушивать свой собственный порт TCP / IP.

leonbloy
источник
Я могу видеть текущий каталог данных, но я вижу много других папок и файлов. «Сохраняет» ли psql базу данных во многих файлах или внутри этого каталога данных есть только один файл, который является БД? потому что я думал о чем-то вроде файла DB на сервере mysql или sql, например ...
CamiloVA
70
/var/lib/postgresql/[version]/data/

По крайней мере, в Gentoo Linux и Ubuntu 14.04 по умолчанию.

Вы можете найти postgresql.confи посмотреть в param data_directory. Если он прокомментирован, то каталог базы данных совпадает с каталогом этого файла конфигурации.

бесшумный
источник
21
Это будет в зависимости от дистрибутива, все делают немного по-разному. Если вы можете подключиться к системе, вероятно, самый простой способ - это SHOW data_directory.
Магнус Хагандер 09
@MagnusHagander, это ответ, не делайте этот комментарий ответом. У меня это сработало.
Vishal
в Gnome я вижу то же самое здесь/var/lib/8.1/postgresql
Джуниор Мэйхе
Для меня это '/var/lib/postgresql/9.3/main'
radtek
9
для Centos 7, путь postgres 9.3/var/lib/pgsql/9.3
rana_stack
15

По умолчанию в Debian 8.1 и PostgreSQL 9.4 после установки с помощью диспетчера пакетов 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

так очевидно /var/lib/postgresql/9.4/main.

Лео Леопольд Герц 준영
источник
11

В Centos 6.5 / PostgreSQL 9.3:

Измените значение "PGDATA=/var/lib/pgsql/data"на любое место в исходном файле сценария /etc/init.d/postgresql.

Не забывайте chmod 700 и chown postgres:postgresк новому месту, и вы будете боссом.

Dum
источник
2

Команду pg_lsclusters(по крайней мере, в Linux / Ubuntu) можно использовать для вывода списка существующих кластеров, а также каталога данных:

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_
источник
1

Я думаю, что лучший способ - запросить pg_settingпредставление:

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

Вывод:

      name      |        setting         |            short_desc
----------------+------------------------+-----------------------------------
 data_directory | /var/lib/pgsql/10/data | Sets the server's data directory.
(1 row)
ноль
источник
1

Запрос ниже поможет найти файл конфигурации 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
Шрикант Патра
источник