PG :: ConnectionBad Postgres Cluster down

时间:2018-01-27 18:38:17

标签: postgresql digital-ocean postgresql-9.5

Digitalocean禁用了我的Droplet的互联网访问。修复错误(回滚到较旧的备份)后,他们恢复了Internet访问。但是在部署之后我经常遇到错误,我似乎无法启动并运行我的Postgres数据库。

每次尝试部署我的应用程序时都会收到错误。

PG::ConnectionBad: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

所以我使用SSH登录我的服务器并检查我的Postgres是否实际运行:

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

Postgres服务器状态

所以我的Postgres服务器似乎失败了。我试过把它放到'再次:

pg_ctlcluster 9.5 main start这样做后我收到错误:Insecure directory in $ENV{PATH} while running with -T switch at /usr/bin/pg_ctlcluster line 403.

第403行的/usr/bin/pg_ctlcluster说:

system 'systemctl', 'is-active', '-q', "postgresql\@$version-$cluster"; 但是我不确定这里可能出现的问题以及如何解决这个问题。

更新

我还尝试将/bin上的权限更新为755 here。可悲的是,这并没有解决我的问题。

更新2

我将/ usr / bin更改为755.现在,当我尝试pg_ctlcluster 9.5 main start时,我得到了这个:

  

postgresql@9.5-main.service的作业失败,因为控制进程退出并显示错误代码。参见" systemctl status postgresql@9.5-main.service"和" journalctl -xe"详情。

systemctl status postgresql@9.5-main.service

postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sun 2018-01-28 17:32:38 EST; 45s ago
  Process: 22473 ExecStart=postgresql@%i --skip-systemctl-redirect %i start (code=exited, status=1/FAILURE)

Jan 28 17:32:08 *url* systemd[1]: Starting PostgreSQL Cluster 9.5-main...
Jan 28 17:32:38 *url* postgresql@9.5-main[22473]: The PostgreSQL server failed to start.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Control process exited, code=exited status=1
Jan 28 17:32:38 *url* systemd[1]: Failed to start PostgreSQL Cluster 9.5-main.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Unit entered failed state.
Jan 28 17:32:38 *url* systemd[1]: postgresql@9.5-main.service: Failed with result 'exit-code'.

谢谢!

2 个答案:

答案 0 :(得分:1)

最好不要混用systemctlpg_ctlcluster。让systemctl使用正确的用户和权限调用pg_ctlcluster。你应该用

启动你的postgresql实例
sudo systemctl start postgresql@9.5-main.service

另外,检查启动日志中的错误。您也可以发布它们,以帮助您了解正在发生的事情。

您的systemctl status也会输出该服务被禁用,因此,当服务器重新启动时,您必须手动启动该服务。要启用它,请运行:

sudo systemctl enable postgresql@9.5-main.service

我希望它有所帮助

答案 1 :(得分:0)

主要是因为/ etc / hosts文件有所更改。我已经删除了/ etc / hosts文件中的多余空间。使用cat / etc / hosts 将这些行添加到文件中

  1. 127.0.0.1本地主机
  2. 127.0.1.1您的主机名
  3. :: 1 ip6-localhost ip6-loopback

我已经授予/ etc / hosts文件644的权限。即使重新启动系统,它也对我有用。