mar*_*tin 5 postgresql postgresql-9.4
我在 Windows Server 2008 R2 上将 Postgresql 9.4 作为服务运行。它通常是一种魅力,但现在有一种情况,服务器显然正在运行(我可以连接到它,任务管理器显示正在运行的进程),但 Windows 服务似乎已停止。
我尝试使用 pg_ctl,但我得到:
$>pg_ctl restart -D c:\psqldata94
pg_ctl: old server process (PID: 1436) seems to be gone
starting server anyway
server starting
2016-02-23 09:59:00 CET LOG: could not bind IPv6 socket: No error
2016-02-23 09:59:00 CET HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2016-02-23 09:59:00 CET LOG: could not bind IPv4 socket: No error
2016-02-23 09:59:00 CET HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2016-02-23 09:59:00 CET WARNING: could not create listen socket for "*"
2016-02-23 09:59:00 CET FATAL: could not create any TCP/IP sockets
$>pg_ctl stop
pg_ctl: PID file "c:/psqldata94/postmaster.pid" does not exist
Is server running?
Run Code Online (Sandbox Code Playgroud)
我尝试在线寻求帮助,但我唯一能找到的是psql-admin mailing list 上的这篇不祥的帖子。
正如帖子的作者所描述的那样:服务器正在运行,但它不响应命令。我想我可以重新启动底层的 Windows 服务器,但显然如果我只是杀死正在运行的进程,这可能会产生严重的后果。
有人知道在这种情况下如何优雅地停止服务器吗?
对我来说,答案在于更仔细地阅读这本优秀的手册。特别是以下三点:
关于服务器关闭的一般讨论在这里。
所以我所做的就是终止所有通过pg_stat_activity
视图可见的后端pg_terminate_backend
,然后登录到服务器并运行pg_ctl kill TERM <pid>
到剩余的正在运行的 postgres 进程。
归档时间: |
|
查看次数: |
14209 次 |
最近记录: |