/ var / run / postgresql отсутствует после перезагрузки

У меня настроена машина Centos7, и у меня проблемы с тем, что postgres не запускается после перезагрузки. Даже когда я пытаюсь запустить службу вручную, я получаю

UTC FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory

При внимательном рассмотрении я заметил, что / var / run / postgresql не является событием, существующим после перезагрузки.

Итак, пара вопросов, поскольку я не нашел четких ответов в своем исследовании.

Как и когда вообще создаются каталоги в / var / run, это что-то, что создается при запуске службы, или как это происходит?

Что может быть причиной возникновения этой конкретной проблемы и не запускать postgres после перезагрузки?

Я никогда раньше не видел такого поведения, хотя в честно говоря, я до сих пор в основном использую ubuntu.

Спасибо

4
задан 27 March 2016 в 02:03
2 ответа

Если вы изучите / var / run в своей системе , вы увидите, что на самом деле это символическая ссылка на / run :

# ls -ld /var/run
lrwxrwxrwx. 1 root root 6 Jan 19 09:12 /var/run -> ../run

И если вы изучите / run ,вы увидите, что на самом деле это точка монтирования tmpfs :

# mount | grep /run
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)

Файловая система tmpfs - это файловая система в памяти: все, что там есть, исчезает при перезагрузке системы. Как говорит Федерико в своем комментарии, CentOS 7 (и Fedora, и RHEL 7, и т. Д.) Используют средство systemd-tmpfiles для автоматического создания таких вещей, как каталоги блокировки и другие временные места хранения при загрузке системы.

Пакет postgresql-server , включенный в CentOS 7, уже работает правильно:

# rpm -ql postgresql-server | grep tmpfiles
/usr/lib/tmpfiles.d/postgresql.conf

# cat /usr/lib/tmpfiles.d/postgresql.conf
d /var/run/postgresql 0755 postgres postgres -

Если вы используете сторонний пакет postgresql, не удивляйтесь, что он некорректно интегрируется с CentOS . Вы можете исправить это вручную, установив ту же запись tmpfiles.d , показанную здесь.

9
ответ дан 3 December 2019 в 02:43

Добавьте unix_socket_directories = '/ tmp' # список каталогов, разделенных запятыми, в ваш файл конфигурации postgresql. Файл должен быть где-то (в RHEL 7.x и CentOS 7.x)

/var/lib/pgsql/9.5/data/postgresql.conf

или

/ var / lib / pgsql / data /postgresql.conf

, затем перезагрузите сервер, и ваша служба postgresql должна запуститься без проблем.

0
ответ дан 3 December 2019 в 02:43

Теги

Похожие вопросы