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

PostgreSQL 9.5 не слушает; кластер не работает; «Слишком много уровней символических ссылок»

Я работаю над удаленным VPS под управлением Ubuntu 16.04 LTS. После обновления ПО (apt upgrade) в котором postgresql-common был обновлен, мой сервер PostgreSQL 9.5 перестал прослушивать любой порт.

# All produce no results
sudo netstat -nltp | grep 5432
sudo netstat -nltp | grep postgres
sudo netstat | grep postgres

Я много чего пытался заставить это работать, но с тех пор очистил установку PostgreSQL 9.5 и переустановил все.

sudo apt purge postgresql-9.5 postgresql-client-9.5 postgresql-client-common postgresql-common postgresql-contrib
sudo apt install postgresql-9.5 postgresql-client-9.5 postgresql-client-common postgresql-common postgresql-contrib

Вот усеченный результат этого успешный переустановка:

Creating config file /etc/logrotate.d/postgresql-common with new version
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
Failed to validate path /var/run/postgresql: Too many levels of symbolic links
Setting up postgresql-9.5 (9.5.21-0ubuntu0.16.04.1) ...
Creating new cluster 9.5/main ...
  config /etc/postgresql/9.5/main
  data   /var/lib/postgresql/9.5/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5432
update-alternatives: using /usr/share/postgresql/9.5/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql-contrib-9.5 (9.5.21-0ubuntu0.16.04.1) ...
Setting up postgresql-contrib (9.5+173ubuntu0.3) ...
Processing triggers for systemd (229-4ubuntu21.27) ...

Обратите внимание на ключевую строку выше:

Failed to validate path /var/run/postgresql: Too many levels of symbolic links

Пока service postgresql status подтверждает, что сервер запущен, кластер отключен сразу после установки:

$ pg_lsclusters 
Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5432 down   postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log

Попытка запустить кластер приводит к сбою через несколько секунд:

$ sudo pg_ctlcluster 9.5 main start
Redirecting start request to systemctl
Job for postgresql@9.5-main.service failed because a timeout was exceeded. See "systemctl status postgresql@9.5-main.service" and "journalctl -xe" for details.

И journalctl подразумевает то сообщение об ошибке, которое мы видели ранее:

Apr 17 09:27:25 remoteserver systemd[1]: postgresql@9.5-main.service: Can't open PID file /var/run/postgresql/9.5-main.pid (yet?) after start: Too many levels of symbolic links
Apr 17 09:27:28 remoteserver sm-mta[2726]: ruleset=check_relay, arg1=[45.142.195.2], arg2=45.142.195.2, relay=[45.142.195.2], reject=421 4.3.2 Connection rat
Apr 17 09:28:18 remoteserver sm-mta[2727]: ruleset=check_relay, arg1=[45.142.195.2], arg2=45.142.195.2, relay=[45.142.195.2], reject=421 4.3.2 Connection rat
Apr 17 09:28:53 remoteserver systemd[1]: postgresql@9.5-main.service: Start operation timed out. Terminating.
Apr 17 09:28:53 remoteserver systemd[1]: Failed to start PostgreSQL Cluster 9.5-main.

Как мне решить эту проблему с файлом PID ???