CentOS 7 上的 postgresql-9.5 无法在启动时启动(挂载点上的 PGDATA)

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-on-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}(代码=已退出,状态=1/FAILURE)

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

但是,我可以立即运行systemctl start postgresql-9.5,并且使用该目录可以正常加载/mnt/data

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

但启动时仍然会出错并显示相同的消息。

运行/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA}对我来说没有任何输出,所以我不知道在哪里继续解决此问题。

任何指导都值得感激!

更新 - 2016 年 4 月 6 日

检查后发现,尽管包含了journalctl该指令,但它显然在挂载 iSCSI 卷之前尝试加载 postgresql-9.5 服务。Requires

答案1

重读后https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files我发现它的表现Requires并不像我想象的那样。

更改指令以After解决问题并让 postgresql-9.5 服务等待直到挂载点可用。

Requires无需After尝试同时加载它们。

您可以使用RequireswithAfter来暗示依赖关系。

相关内容