Como posso forçar o PostgreSQL a iniciar após a configuração da rede no Ubuntu Server 16?

2

O PostgreSQL não consegue ligar o socket porque ele inicia antes que a rede seja configurada.

Eu uso o Ubuntu Server 16.04.1 LTS e o PostgreSQL 9.5. Eu li muitos documentos pela internet, mas nada resolveu o meu problema.

Tenho certeza de que o problema é: O serviço PostgreSQL tenta criar um soquete antes que a Interface de rede seja configurada corretamente.

sudo systemctl status [email protected][email protected] - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2016-07-27 09:42:36 UTC; 1min 43s ago
  Process: 5274 ExecStart=postgresql@%i --skip-systemctl-redirect %i start (code=exited, status=1/FAILURE)

Jul 27 09:42:34 airpy-server systemd[1]: Starting PostgreSQL Cluster 9.5-main...
Jul 27 09:42:36 airpy-server [email protected][5274]: The PostgreSQL server failed to start. Please check the log outp
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-1] LOG:  could not bind IPv4 socke
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-2] HINT:  Is another postmaster al
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-3] WARNING:  could not create list
Jul 27 09:42:36 airpy-server [email protected][5274]: 2016-07-27 09:42:36 UTC [5332-4] FATAL:  could not create any TC
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Control process exited, code=exited status=1
Jul 27 09:42:36 airpy-server systemd[1]: Failed to start PostgreSQL Cluster 9.5-main.
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Unit entered failed state.
Jul 27 09:42:36 airpy-server systemd[1]: [email protected]: Failed with result 'exit-code'.

Preciso usar o DHCP (e não posso alterá-lo) com uma concessão fixa. Como eu configurei o listen_address='fixed_ip' em postgresql.conf , o cluster não inicia na inicialização. É assim que tudo começou ...

E eu perdi dois dias tentando fazer o postgreSQL aguardar a configuração da rede sem sucesso. Ele estava funcionando como um encanto no Ubuntu Server 14.04 (eu não tinha nada para configurar) e agora ele simplesmente não funciona para a nova versão LTS.

Eu tentei, pelo menos, esses leads:

  • Ubuntu-Forum , ele removeu outros erros (Um job de início está sendo executado para o aumento da interface de rede ...)
  • NetworkTarget , ele adicionou outros erros E meu problema continua.

Como posso forçar o PostgreSQL a iniciar após a configuração da rede no Ubuntu Server 16?

Obrigado pela sua ajuda

    
por jlandercy 27.07.2016 / 11:57

2 respostas

1

Usando o novo gerenciador de serviços systemctl , você pode forçar o serviço a aguardar que a rede esteja ativa até que ele seja iniciado. Isso é obtido editando o arquivo da unidade de serviço (procure em /etc/systemd/system/ ) e adicionando as seguintes linhas na seção unit :

[Unit]

Wants=network-online.target
After=network-online.target

Em seguida, recarregue o serviço com a nova configuração:

systemctl reload name.service

Reinicialize o sistema para verificar se espera pela rede antes de iniciar o serviço.

    
por 19.09.2017 / 23:40
0

No arquivo de serviço (/etc/init.d/<service>) , você pode especificar após qual serviço o PostGre deve iniciar. Seria assim:

#! /bin/sh
### BEGIN INIT INFO
# Provides:             sshd
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:
# Short-Description:    OpenBSD Secure Shell server
### END INIT INFO

No início obrigatório, você pode especificar networking

    
por 27.07.2016 / 14:46