Después de la actualización 14.04 a 16.04.1, el servidor Postgresql no se inicia

22

Acabo de actualizar mi sistema desde 14.04. LTS a 16.04.1 LTS, postgresql no se inicia en systemd:

/etc/init.d/postgresql start                                                                                                                                                                              
[ ok ] Starting postgresql (via systemctl): postgresql.service

# /etc/init.d/postgresql status                                                                                                                                                                             
● postgresql.service - PostgreSQL RDBMS
  Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor     preset: enabled)
  Active: active (exited) since Вт 2016-08-09 13:40:51 MSK; 3min 23s ago
  Process: 23142 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
  Main PID: 23142 (code=exited, status=0/SUCCESS)Seems that 

Parece que el script systemd contiene datos incorrectos:

# cat /lib/systemd/system/postgresql.service                                                                                                                                                                
# systemd service for managing all PostgreSQL clusters on the system. This
# service is actually a systemd target, but we are using a service since
# targets cannot be reloaded.

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=oneshot
ExecStart=/bin/true
ExecReload=/bin/true
RemainAfterExit=on

[Install]
WantedBy=multi-user.target

¿Cuál debería ser la secuencia de comandos correcta para postgresql?

    
pregunta Artur Eshenbrener 09.08.2016 - 11:13

4 respuestas

7

Esto debería funcionar fuera de la caja si proporciona la versión correcta y el nombre del clúster.

Digamos que está ejecutando la versión 9.5 y el clúster se llama main :

Inicio: systemctl start postgresql@9.5-main

Detener: systemctl stop postgresql@9.5-main

Estado: systemctl status postgresql@9.5-main

Habilitar inicio automático en el arranque: systemctl enable postgresql@9.5-main

Deshabilitar el inicio automático en el arranque: systemctl disable postgresql@9.5-main

foo@postgres:~$ systemctl status postgresql@9.5-main
●  postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-31 17:44:46 CEST; 59s ago
   Main PID: 4546 (postgres)
   CGroup: /system.slice/system-postgresql.slice/postgresql@9.5-main.service
           ├ ─ 4546 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├ ─ 4548 postgres: checkpointer process
           ├ ─ 4549 postgres: writer process
           ├ ─ 4550 postgres: wal writer process
           ├ ─ 4551 postgres: autovacuum launcher process
           └ ─ 4552 postgres: stats collector process

Mar 31 17:44:44 postgres postgres[4546]: [1-2] 2017-03-31 17:44:44 CEST [4546] @ HINT:  Future log output will go to log destination "syslog".
Mar 31 17:44:44 postgres postgres[4547]: [2-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  database system was shut down at 2017-03-31 17:44:43 CEST
Mar 31 17:44:44 postgres postgres[4547]: [3-1] 2017-03-31 17:44:44 CEST [4547] @ LOG:  MultiXact member wraparound protections are now enabled
Mar 31 17:44:44 postgres postgres[4546]: [2-1] 2017-03-31 17:44:44 CEST [4546] @ LOG:  database system is ready to accept connections
Mar 31 17:44:44 postgres postgres[4551]: [2-1] 2017-03-31 17:44:44 CEST [4551] @ LOG:  autovacuum launcher started
Mar 31 17:44:45 postgres postgres[4553]: [3-1] 2017-03-31 17:44:45 CEST [4553] [unknown]@[unknown] LOG:  incomplete startup packet
Mar 31 17:44:46 postgres systemd[1]: Started PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres systemd[1]: Reloading PostgreSQL Cluster 9.5-main.
Mar 31 17:44:47 postgres postgres[4546]: [3-1] 2017-03-31 17:44:47 CEST [4546] @ LOG:  received SIGHUP, reloading configuration files
Mar 31 17:44:47 systemd[1]: Reloaded PostgreSQL Cluster 9.5-main.
    
respondido por el malte 31.03.2017 - 15:56
15

Systemd debería usar el script de /etc/init.d . En su lugar, systemd usa algún tipo de archivo de plantilla. Para solucionarlo, siga los pasos:

  1. Eliminar script de servicio no válido:

    # rm /lib/systemd/system/postgresql.service

  2. Recargar scripts del demonio:

    # systemctl daemon-reload

  3. Habilitar el servicio postgresql:

    # systemctl enable postgresql

Después de eso, podrás iniciar Postgres con cualquier variante preferida: sudo systemctl start postgresql , sudo service postgresql start o sudo /etc/init.d/postgresql start . Para verificar que postgresql se ejecute realmente, verifique el estado del servicio: sudo systemctl status postgresql . Podría verse como:

% sudo systemctl status postgresql                                                                                                                                                                          
● postgresql.service - LSB: PostgreSQL RDBMS server
   Loaded: loaded (/etc/init.d/postgresql; bad; vendor preset: enabled)
   Active: active (running) since Пт 2016-08-12 10:13:43 MSK; 1h 37min ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/postgresql.service
           ├─4086 /usr/lib/postgresql/9.5/bin/postgres -D     /var/lib/postgresql/9.5/main -c  config_file=/etc/postgresql/9.5/main/postgresql.conf
           ├─4099 postgres: checkpointer process                                                                                              
           ├─4100 postgres: writer process                                                                                                    
           ├─4101 postgres: wal writer process                                                                                                
           ├─4102 postgres: autovacuum launcher process                                                                                       
           └─4103 postgres: stats collector process                                                                                           

авг 12 10:13:40 ubuntu-precise systemd[1]: Starting LSB: PostgreSQL RDBMS server...
авг 12 10:13:40 ubuntu-precise postgresql[4009]:  * Starting PostgreSQL 9.5 database server
авг 12 10:13:43 ubuntu-precise postgresql[4009]:    ...done.
авг 12 10:13:43 ubuntu-precise systemd[1]: Started LSB: PostgreSQL RDBMS server.
    
respondido por el Artur Eshenbrener 09.08.2016 - 11:13
1

Tuve el mismo problema después de purgar postges9 e instalé 10 en mi ubuntu16. Inicialmente edité el archivo /lib/systemd/system/postgresql.service con el siguiente contenido:

[Unit]
Description=PostgreSQL RDBMS

[Service]
Type=notify
User=postgres
ExecStart=/usr/lib/postgresql/10/bin/postgres -D /analysis2/postgresql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Y puedo usar systemctl restart / stop / start para controlar el servicio postgresql. Sin embargo, por alguna razón, el archivo anterior se sobrescribió (quizás después de la actualización del sistema) y no pude ejecutar el comando systemctl para iniciar y detener el servidor postgresql más. Después de leer un poco, me di cuenta de que no se supone que edite el archivo anterior. En su lugar, debe usar systemctl edit foo para sobrescribir los valores predeterminados. Después de seguir la solución sugerida por el siguiente enlace, mi sistema parece funcionar correctamente con postgresql.

¿Cómo invalido o configuro los servicios de systemd?

    
respondido por el Kemin Zhou 04.01.2018 - 22:36
-2

No es la mejor solución, pero esto resuelve el problema sin tener que sumergirse en nada. Añade esto a cron:

@reboot sleep 5; systemctl start postgresql
    
respondido por el user3136936 24.08.2017 - 07:44

Lea otras preguntas en las etiquetas