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

Что такое каталог по умолчанию, в котором PostgreSQL будет хранить все базы данных в Linux?

Ответ 1

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

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

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

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

[[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

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

Ответ 2

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

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

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

Ответ 4

По умолчанию в 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.

Ответ 5

On Centos 6.5/PostgreSQL 9.3:

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

Помните chmod 700 и chown postgres:postgres в новом месте, и вы босс.

Ответ 6

Я думаю, что лучший способ - запросить представление 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 data directory.
(1 row)

Ответ 7

Команда 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