使用systemd重启后,PostgreSQL 9.5无法启动

时间:2016-10-18 19:13:11

标签: linux database postgresql ubuntu-16.04 systemd

我在Ubuntu 16.04上遇到了PostgreSQL 9.5 + 173的问题,我偶然发现我的研究中的以下线程有点描述了我所看到的行为:

https://www.postgresql.org/message-id/CAFyxdeT%2B%3Dx-d0oNbFPoe%2B4xnt0Qdfi%2BzAEn%2BrQmEK0AZbJFRtg%40mail.gmail.com

https://www.postgresql.org/message-id/562E4453.5090803%40aklaver.com

长话短说我有一个全新的Ubuntu 16安装,没有任何内容和PostgreSQL运行。我已经停止PostgreSQL更改了数据目录和端口以及其他一些设置,它开始恢复正常。

我可以通过systemctl手动启动和停止PostgreSQL,没有任何问题。我也可以连接到数据库,并可以通过ps ax | grep postgres验证它是否正在运行。

然而,我重新启动后PostgreSQL将无法启动。任何通过systemctl start postgresql.service启动它的尝试都不会做任何事情并且不会失败。我能够启动它的唯一方法是调用systemctl start postgresql@9.5-main.service

我做了一些调查并查看了 postgresql.service postgresql@9.5-main.service 脚本,并意识到postgresql.service脚本没有按照规定执行任何操作在上面的线程中,postgresql @ 9.5-main.service有PartOf指令,这意味着它应该从postgresql.service作为sytemd docs状态被触发,但它不是出于某种原因。基本上我不知道为什么一切都在我重新启动之前工作,然后在我重新启动后不起作用。有什么我想念的吗?我开始对 CRAZY 开始这么简单。

更新:我在 postgresql@9.5-main.service 中添加了ExecStartPre=/bin/touch /tmp/postgresq.log,看看它是否真的在启动时被调用,但事实并非如此。手动调用systemctl start postgresql@9.5-main.service会在/ tmp目录中创建文件。

更新:我还发现重启后调用systemd daemon-reload将允许我通过systemctl start postgresql命令启动postgres。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用systemctl启用postgresql?这将告诉systemd在启动后启动此服务。之后尝试重新启动。

答案 1 :(得分:0)

事实证明,问题在于我将跨越分区的/etc/postgresql/9.5/main/符号链接到一个立即无法使用的自定义分区,所以当PostgreSQL尝试启动它时它不会因为它的配置文件不可用。这描述了我登录后手动启动PostgreSQL后发生的事情。