Что такое каталог по умолчанию, в котором 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
. Если он прокомментирован, то каталог базы данных совпадает с этим каталогом файлов конфигурации.
Ответ 3
Подключитесь к базе данных и выполните команду:
SHOW data_directory;
Дополнительная информация:
https://www.postgresql.org/docs/current/sql-show.html https://www.postgresql.org/docs/current/runtime-config-file-locations.html
Ответ 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