Назад | Перейти на главную страницу

Postgresql больше не запускается

Debian 9.5 - кластер postgresql 9.4. Это не новая установка - это была прекрасно работающая система, пока я не попытался перезапустить службу.

все команды: /etc/init.d/postgresql start и service postgresql start и systemctl start postgresql ведите себя так же: приглашение зависает примерно на 10-15 секунд, а затем ничего не происходит - postgres не работает!

вот системный журнал:

Jul 18 18:15:35 intranet systemd[1]: Starting PostgreSQL Cluster 9.4-main...
Jul 18 18:16:06 intranet postgresql@9.4-main[27610]: The PostgreSQL server failed to start. Please check the log output.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Control process exited, code=exited status=1
Jul 18 18:16:06 intranet systemd[1]: Failed to start PostgreSQL Cluster 9.4-main.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Unit entered failed state.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Failed with result 'exit-code'.

Журнал postgres (/ var / log / postgresql /) пуст.

journalctl -xe:

-- Unit postgresql@9.4-main.service has begun starting up.
Jul 18 18:16:06 intranet postgresql@9.4-main[27610]: The PostgreSQL server failed to start. Please check the log output.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Control process exited, code=exited status=1
Jul 18 18:16:06 intranet systemd[1]: Failed to start PostgreSQL Cluster 9.4-main.
-- Subject: Unit postgresql@9.4-main.service has failed

systemctl статус postgresql

● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2018-07-18 17:42:02 CEST; 37min ago
 Main PID: 29934 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/postgresql.service

Jul 18 17:42:02 intranet systemd[1]: Starting PostgreSQL RDBMS...
Jul 18 17:42:02 intranet systemd[1]: Started PostgreSQL RDBMS.

статус systemctl postgresql@9.4-main

● postgresql@9.4-main.service - PostgreSQL Cluster 9.4-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2018-07-18 18:16:06 CEST; 1 day 14h ago
  Process: 27610 ExecStart=postgresql@9.4-main --skip-systemctl-redirect 9.4-main start (code=exited, status=1/FAILURE)

Jul 18 18:15:35 intranet systemd[1]: Starting PostgreSQL Cluster 9.4-main...
Jul 18 18:16:06 intranet postgresql@9.4-main[27610]: The PostgreSQL server failed to start. Please check the log output.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Control process exited, code=exited status=1
Jul 18 18:16:06 intranet systemd[1]: Failed to start PostgreSQL Cluster 9.4-main.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Unit entered failed state.
Jul 18 18:16:06 intranet systemd[1]: postgresql@9.4-main.service: Failed with result 'exit-code'.

Так что нет абсолютно никаких указателей на то, что случилось. Как ни странно, система все время работала без проблем - мое приложение просто вылетело из строя, и я попытался перезапустить postgres - и теперь он больше не запускается.

После нескольких часов поисков я обнаружил, что, как ни странно, его можно запустить вручную.

Я вошел как пользователь postgres и использовал команду:

/usr/lib/postgresql/9.4/bin/postgres -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf

он просто отлично работает - без ошибок, ничего. Я даже попытался добавить '-d 3', чтобы получить более подробный результат ... однако в этом нет ничего необычного. он работает нормально - проблема только в скриптах инициализации. Как это исправить - или хотя бы выяснить корень проблемы?

Думаю, я решил это. Спасибо комментаторам за то, что помогли мне найти проблему.

Разрешения для /var/log/postgresql были как-то изменены. Папка (и файлы журнала в ней) больше не принадлежали пользователю postgres. Очевидно, он больше не мог писать / открывать журнал.

После выполнения chown postgres:postgres /var/log/postgresql/ -R, Мне удалось запустить postgres через скрипты инициализации