使用 systemd 重启后 PostgreSQL 9.5 不启动
PostgreSQL 9.5 doesn't start after reboot with systemd
我在 Ubuntu 16.04 上遇到了 PostgreSQL 9.5+173 的问题,我在研究中偶然发现了以下线程,这些线程在某种程度上描述了我所看到的行为:
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 文档状态,但它不是出于某种原因。基本上我不知道为什么在我重新启动之前一切正常,然后在我重新启动后却不起作用。有什么我想念的吗?我开始为如此简单的事情 疯狂。
更新: 我在 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。
您尝试过 systemctl enable postgresql 吗?这将告诉 systemd 在引导后启动此服务。之后尝试重新启动。
事实证明,问题是我跨分区将 /etc/postgresql/9.5/main/
符号链接到一个不能立即使用的自定义分区,所以当 PostgreSQL 试图在启动时启动它不能,因为它是配置文件不可用。这描述了我在登录后可以手动启动 PostgreSQL 后发生的情况。
我在 Ubuntu 16.04 上遇到了 PostgreSQL 9.5+173 的问题,我在研究中偶然发现了以下线程,这些线程在某种程度上描述了我所看到的行为:
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 文档状态,但它不是出于某种原因。基本上我不知道为什么在我重新启动之前一切正常,然后在我重新启动后却不起作用。有什么我想念的吗?我开始为如此简单的事情 疯狂。
更新: 我在 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。
您尝试过 systemctl enable postgresql 吗?这将告诉 systemd 在引导后启动此服务。之后尝试重新启动。
事实证明,问题是我跨分区将 /etc/postgresql/9.5/main/
符号链接到一个不能立即使用的自定义分区,所以当 PostgreSQL 试图在启动时启动它不能,因为它是配置文件不可用。这描述了我在登录后可以手动启动 PostgreSQL 后发生的情况。