我正在尝试让 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
尝试同时加载它们。
您可以使用Requires
withAfter
来暗示依赖关系。