Місце за замовчуванням бази даних PostgreSQL в Linux


118

Який каталог за замовчуванням, де PostgreSQL буде зберігати всі бази даних в Linux?


1
Ще одна тема, де обговорювали ті самі питання. stackoverflow.com/questions/1137060/…
Вішал

Відповіді:


134

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

Розташування каталогу даних залежить від розподілу. Якщо ви встановлюєте з джерела, типовим є /usr/local/pgsql/data:

У термінах файлової системи кластер бази даних буде єдиним каталогом, в якому будуть зберігатися всі дані. Ми називаємо це каталогом даних або областю даних. Ви повністю вирішуєте, де зберігати свої дані. За замовчуванням немає, хоча такі місця, як / usr / local / pgsql / data або / var / lib / pgsql / data, є популярними. ( ref )

Крім того, екземпляр працюючого сервера 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.


Я бачу поточний каталог даних, але бачу багато інших папок і файлів. Чи psql "зберігає" базу даних у багатьох файлах, чи є лише один у цьому каталозі даних, який є БД? тому що я думав про щось подібне до файлу БД на сервері mysql або sql, наприклад ...
CamiloVA,

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

Принаймні, у Gentoo Linux та Ubuntu 14.04 за замовчуванням.

Ви можете знайти postgresql.confі подивитися на парам data_directory. Якщо це коментується, то каталог баз даних такий самий, як і цей каталог конфігураційних файлів.


21
Це буде залежно від розподілу, всі вони це роблять трохи інакше. Якщо ви можете підключитися до системи, використання "SHOW data_directory" - це, мабуть, найпростіший спосіб.
Магнус Хагандр

@MagnusHagander це відповідь, y ти не робиш цей коментар відповіддю. Це добре спрацювало для мене.
Вішал

в Gnome я бачу те саме тут/var/lib/8.1/postgresql
Junior Mayhé

Для мене його '
/var/lib/postgresql/9.3/main

9
для Centos 7, postgres 9.3 path/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на нове місце , і ви бос.


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

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.