/ var / run / postgresql ausente após a reinicialização

4

Eu tenho a máquina Centos7 configurada e estou tendo problemas com o postgres não iniciar após a reinicialização. Mesmo quando tento executar o serviço manualmente, estou chegando

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

Olhando mais de perto, notei que /var/run/postgresql não é um evento existente após a reinicialização.

Então, algumas perguntas, na verdade, porque não encontrei respostas claras na minha pesquisa.

Como e quando os diretórios em / var / run são criados, é algo que é criado ao iniciar um serviço ou qual é o caminho?

O que poderia estar causando esse problema específico e não iniciar o postgres após a reinicialização?

Eu nunca vi esse comportamento antes, embora com toda a justiça eu tenha usado o Ubuntu na maioria das vezes até agora.

Obrigado

    
por iblazevic 27.03.2016 / 01:03

2 respostas

8

Se você analisar /var/run em seu sistema, verá que é realmente um link simbólico para /run :

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

E se você examinar /run , verá que na verdade é um ponto de montagem tmpfs :

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

Um sistema de arquivos tmpfs é um sistema de arquivos na memória: qualquer coisa lá desaparece quando o sistema é reinicializado. Como Federico diz em seu comentário, o CentOS 7 (e o Fedora e o RHEL 7, etc.) usam o recurso systemd-tmpfiles para criar automaticamente coisas como diretórios de bloqueio e outros locais de armazenamento efêmero quando o sistema inicializa.

O pacote postgresql-server incluído no CentOS 7 já faz a coisa certa:

# 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 -

Se você estiver usando um pacote postgresql de terceiros, não se surpreenda se ele não se integrar corretamente ao CentOS. Você pode corrigir manualmente configurando a mesma entrada tmpfiles.d mostrada aqui.

    
por 27.03.2016 / 05:54
0

Adicione unix_socket_directories = '/ tmp' # lista separada por vírgulas de diretórios em seu arquivo de configuração postgresql. O arquivo deve estar em algum lugar (no RHEL 7.xe no CentOS 7.x)

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

ou

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

depois reinicie o servidor e seu serviço postgresql deve ser iniciado sem problemas.

    
por 22.06.2018 / 12:43