CentOS 7上的postgresql-9.5在启动时不会启动(装载点上的PGDATA)

我想让postgresql-9.5在CentOS 7上启动。

我已经按照这里的安装和启动步骤https://wiki.postgresql.org/wiki/YUM_Installation并尝试了一些额外的疑难解答从这个问题这里https://stackoverflow.com/questions/35492893/unable-to-start -postgresql-9-5-上的centos-7

这可能是相关的,我正在使用一个自定义的PGDATA目录是一个挂载点。 ( /mnt/data

数据库被初始化为指向/mnt/data目录。

su postgres -c "/usr/pgsql-9.5/bin/pg_ctl initdb -D /mnt/data"

我对/usr/lib/systemd/system/postgresql-9.5.service文件进行了必要的更改以指向/mnt/data目录。

该服务已启用并成功启动。

systemctl enable postgresql-9.5

systemctl start postgresql-9.5

重新启动后, systemctl status postgresql-9.5显示如下:

  ●postgresql-9.5.service  -  PostgreSQL 9.5数据库服务器
   加载:加载(/usr/lib/systemd/system/postgresql-9.5.service;启用;供应商预设:禁用)
   活跃:失败(结果:退出代码)自从星期三2016-04-06 00:53:02 EDT;  4分36秒前
  进程:9911 ExecStartPre = / usr / pgsql-9.5 / bin / postgresql95-check-db-dir $ {PGDATA}(code = exited,status = 1 / FAILURE)

 4月06 00:53:02 pgdev-fl1 systemd [1]:启动PostgreSQL 9.5数据库服务器...
 4月06 00:53:02 pgdev-fl1 systemd [1]:postgresql-9.5.service:控制进程退出,代码=退出状态= 1
 Apr 06 00:53:02 pgdev-fl1 systemd [1]:无法启动PostgreSQL 9.5数据库服务器。
 Apr 06 00:53:02 pgdev-fl1 systemd [1]:单元postgresql-9.5.service进入失败状态。
 Apr 06 00:53:02 pgdev-fl1 systemd [1]:postgresql-9.5.service失败。

但是,我可以立即运行systemctl start postgresql-9.5并使用/mnt/data目录加载得很好。

考虑到这可能是一个时间问题,它试图在挂载点存在之前启动服务,我在/usr/lib/systemd/system/postgresql-9.5.service[Unit]部分包含了Requires=mnt-data.mount /usr/lib/systemd/system/postgresql-9.5.service ,并在systemctl daemon-reload之后重新启用该服务。

但是在启动时仍然出现相同的错误。

运行/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA}不会为我生成任何输出,因此我无法继续解决此问题。

任何指导表示赞赏!

更新 – 4/6/16

在检查journalctl ,显然它正试图在挂载iSCSI卷之前加载postgresql-9.5服务,尽pipe包含了Requires指令。

在重读了https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files之后,对我来说显而易见的是, Requires并不像我想象的那样行事。

将指令更改为解决问题后,使postgresql-9.5服务等待,直到装入点可用。

Requires没有After会尝试并同时加载它们。

您可以使用Requires with After来暗示依赖关系。