LINUX.ORG.RU

postgreSQL - почему БД физически находится в /var/lib, когда в настройках другое

 


0

1

есть же дира /etc/postgresql/16/main/
где лежат все конфиги
pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf
итд

так почему оказывается так, что этот каталог НЕ у дел, а конфиг она берёт из другого (какого?) файла?!
И сама база не там, где прописана в postgrsql.conf, а в /var/lib/postgresql

система 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64 GNU/Linux

она где-то в systemctl что-ли берёт настройки?


она где-то в systemctl что-ли берёт настройки?

Зайдите в консоль psql и посмотрите где лежат используемые файлы настроек:

SHOW config_file;
SHOW hba_file;

Используемый каталог также можно глянуть выполнив в консоли systemctl status postgresql.service. Там будут строки вида

● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled)
     Active: active (running) since Tue 2025-03-18 12:38:45 MSK; 14h ago
 Invocation: 9bb823a038b64baa857646e1a85e3611
    Process: 2079 ExecStart=/usr/share/postgresql/postgresql-script start (code=exited, status=0/SUCCESS)
   Main PID: 2185 (postgres)
      Tasks: 8 (limit: 154245)
        CPU: 6.556s

CGroup: /system.slice/postgresql.service
             ├─2185 /usr/lib/postgresql16/bin/postgres -D /var/lib/pgsql/data
             ├─2307 "postgres: logger "
             ├─2338 "postgres: checkpointer "
             ├─2346 "postgres: background writer "
             ├─2353 "postgres: walwriter "
             ├─2357 "postgres: autovacuum launcher "
             ├─2358 "postgres: stats collector "
             └─2359 "postgres: logical replication launcher "

Вот то что после ключа -D и будет каталогом с файлами конфигов (/var/lib/pgsql/data)

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от mogwai
postgres  5734  0.0  0.0 215748 28148 ?        Ss   02:13   0:01 /usr/lib/postgresql/16/bin/postgres -D /var/lib/postgresql/16/main -c config_file=/etc/postgresql/16/main.dflt.bak/postgresql.conf


я не понял, какого чёрта это /16/main.dflt.bak
когда рабочий в просто /main/

после перезагрузки сервака почему-то грузится так...
хотя я даже apt update не делал

# systemctl list-unit-files |grep postgres
postgresql.service                     enabled        
postgresql@.service                    indirect 

норм?

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 5)
Ответ на: комментарий от tip78

я не понял, какого

Ты увидел из под какого пользователя и с какими параметрами запущен процесс.

Если вопрос твой в том, почему он с такими параметрами запустился - значт в юните системды или инит скрипте, или ещё где-то такие параметры указаны.

Выше уже подсказали про переменную окружения PGDATA.

Если вопрос «зачем этот конфиг передается» - это к тому, кто настраивал, зачем он это сделал.

норм?

Если такие вопросы задаёшь, положи клавиатуру на стол и медленно отходи от сервера с БД. А потом зови ответственного специалиста.

mogwai ★★★★★
()
Ответ на: комментарий от mogwai

да пустой PGDATA
он вообще не установлен

вопрос - почему после перезагрузки сервера поменялся источник конфига?
сервер был UP 264 дня
что изменилось?
это же стандартная установка через apt была

у юзера postgres нет директории в /home/ и настроек каких-то

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 1)
Ответ на: комментарий от anonymous

да смотрел, нет там ничего
/var/lib/postgresql

вот в /var/lib/postgresql/16/main/ есть файл postgresql.auto.conf
со строкой

/usr/lib/postgresql/16/bin/postgres "-D" "/crm/postgresql/16/main" "-c" "config_file=/etc/postgresql/16/main/postgresql.conf"

здесь всё правильно написано
но у него на старте то вот так:
postgres 13480  0.0  0.1 636324 50856 ?        Ss   06:22   0:12 /usr/lib/postgresql/16/bin/postgres -D /crm/postgresql/16/main -c config_file=/etc/postgresql/16/main.dflt.bak/postgresql.conf

а вот эту строчку я вообще не знаю, где искать:
в /etc/systemd такого нет
в /usr/lib/systemd такого нет
в /usr/lib/systemd/system/postgresql[@].service такого нет

как вообще в строку запуска попала дира main.dflt.bak
где эта строчка?!

tip78
() автор топика
Последнее исправление: tip78 (всего исправлений: 2)
Ответ на: комментарий от tip78

как вообще в строку запуска попала дира main.dflt.bak

Если не вы создавали main.dflt.bak то похоже что у вас больше одного администратора могут ковырять этот сервер.

где эта строчка?!

grep -rnw '/' -e 'main.dflt.bak'
Obezyan
()
Ответ на: комментарий от Obezyan

похоже что у вас больше одного администратора могут ковырять этот сервер.

Ставлю 1 рубль, что судя по словам «дира», «юзер» и «сервак» - отгадка будет в «накатил тулзу».

Toxo2 ★★★★
()