/var/run/postgres продолжает удаляться, предотвращая запуск postgres

По умолчанию моя установка PostgreSQL создавала сокет в /tmp но мой psql клиент командной строки искал в /var/run/postgresql/.s.PGSQL.5432,

Чтобы исправить это, я отредактировал postgresql.conf и изменил каталог на

unix_socket_directories = '/var/run/postgresql/'

К сожалению, по умолчанию нет postgresql каталог в var/run каталог. Итак, я создал его и запустил сервер, и все это работало хорошо. Как только я выключаю и перезагружаю сервер, по какой-то причине /var/run/postgresql каталог исчезает. Это приводит к сбою запуска postgres с ошибкой:

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

Помощь оценена!

1 ответ

Решение 1 (путем управления временным каталогом /run/postgresql, /var/run/postgresql)

Каталог /run/postgresql — это временный каталог. Путь /var/run/postgresql обычно является символической ссылкой на /run/postgresql.

systemd-tmpfiles — это механизм для управления такими временными файлами и каталогами. systemd-tmpfiles создает временные каталоги во время загрузки и устанавливает их владельца, группу и разрешения. Он может читать файлы конфигурации в трех разных местах. Файлы в /etc/tmpfiles.d переопределяют файлы с тем же именем в /usr/lib/tmpfiles.d и /run/tmpfiles.d.

Мы можем создать каталог /run/postgresql «на лету» во время загрузки, используя механизм systemd-tmpfiles , создав файл конфигурации postgresql, как показано ниже.

      echo "d /run/postgresql 0755 postgres postgres -" > /usr/lib/tmpfiles.d/postgresql.conf

Решение 2 (путем перемещения файла блокировки PostgreSQL)

Другой способ решить эту проблему — изменить местоположение файла блокировки PostgreSQL. Мы можем сделать это, используя приведенный ниже запрос

      ALTER SYSTEM SET unix_socket_directories='<any-existing-path-with-valid-permissions>, /tmp';

Здесь мы можем указать любой путь к файлу блокировки PostgreSQL, который уже присутствует в системе и имеет необходимые разрешения для управления файлами блокировки пользователем postgres.

Другие вопросы по тегам