我想让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来暗示依赖关系。