首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的PostgresQL 11数据库集群在通过systemctl启动后立即关闭?

为什么我的PostgresQL 11数据库集群在通过systemctl启动后立即关闭?
EN

Server Fault用户
提问于 2019-01-13 17:05:50
回答 1查看 2.5K关注 0票数 3

我已经通过apt-get在Debian 9上安装了PostgresQL 11,安装后我删除了默认的数据库集群,并删除了所有自动启动该集群的服务。现在,我已经运行initdb来初始化自定义位置中的新集群,并编写并启用了一个systemd .service文件来自动运行该文件。

当机器启动时,我在服务成功启动时遇到了问题,但随后数据库立即关闭,服务立即停止。当我使用systemctl手动启动服务时,也会发生同样的情况。

.service文件:

代码语言:javascript
运行
复制
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)

[Service]
Environment=PGDATA=/home/(user)/.db
Environment=PGLOG=/home/(user)/postgres.log
Environment=PGSTARTTIMEOUT=270

Type=notify
User=(user)
Group=(group)
ExecStart=/usr/lib/postgresql/11/bin/pg_ctl start -D ${PGDATA} -l ${PGLOG} -t ${PGSTARTTIMEOUT}
ExecStop=/usr/lib/postgresql/11/bin/pg_ctl stop -D ${PGDATA} -m fast
ExecReload=/usr/lib/postgresql/11/bin/pg_ctl reload -D ${PGDATA}
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=300

[Install]
WantedBy=multi-user.target

用于手动启动集群的Command:

代码语言:javascript
运行
复制
su (user) -c '/usr/lib/postgresql/11/bin/pg_ctl start -D /home/(user)/.db -l /home/(user)/postgres.log -t 270'

通过systemctl启动时的PostgreSQL日志:

2019-01-13 11:36:16.506 EST日志:收听IPv4地址"127.0.0.1",端口5432 2019-01-13 11:36:16.508 EST日志:侦听Unix套接字"/var/run/postgresql/.s.PGSQL.5432“209-01-13 11:36:16.530 EST日志:数据库系统在2019年01-13 11:17:07 EST 2019-01-01-13 11:36:16.537 EST日志:数据库系统准备接受连接209-01-13 11: 16.595 EST日志:收到快速关闭请求2019-01-13 11:36:16.600 EST日志:中止任何活动事务2019-01-13 11:36:16.605 EST日志:后台工作者“逻辑复制启动程序”(PID 1476)退出代码1 2019-01-13 11:36:16.605 EST日志:关闭2019年-01-13 11:36:16.625 EST日志:数据库系统被关闭

journalctl \ grep postgres:

1月13日11:42:01 vps76296系统d:启动PostgreSQL数据库服务器1月13日11:42:01 vps76296系统d:启动PostgreSQL关系数据库管理系统1月13日11:42:02 vps76296 systemd: Started关系数据库管理系统。1月13日11:42:02 vps76296 systemd: postgres-start.service:从PID 749获得通知消息,但只允许接收主PID 729 1月13 :42:02 vps76296 pg_ctl:等待服务器启动.完成1月13日11:42:02 vps76296 pg_ctl:服务器启动1月13日11:42 vps76296 pg_ctl:等待服务器关闭.完成1月13日11:42:02 vps76296 pg_ctl: pg_ctl:服务器停止1月13日11:42:02 vps76296 systemd: Started数据库服务器。

根据请求,也可以使用strace日志。它真的很长,所以我选择不包括它,除非需要。

为什么我的服务一开始就立即停止?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-01-13 17:34:06

那个Type=notify让我在这里产生了怀疑。根据系统文档:“类似于exec的…;但是,预计该服务通过sd_notify(3)…发送通知消息”

而且pg_ctl本身不是一个守护进程,而是它的控制实用程序,它将立即退出。

我建议使用不同的Type - oneshot

也要注意systemctl status …serviceName…的输出--它可能有解释。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/948857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档