postgres有时在重启后无法启动

时间:2014-05-05 07:39:39

标签: postgresql

升级到版本9.3.2自制软件后,我的postgres安装发生了一些奇怪的事情。

有时而不是每次,如果我输入psql,我会收到以下错误消息:

  
    

无法连接到服务器:没有这样的文件或目录         服务器是在本地运行还是接受         Unix域套接字上的连接" /tmp/.s.PGSQL.5432"?

  

似乎postgres正在运行,因为如果我尝试使用此命令停止postgres:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

我收到了这个回复:

  

pg_ctl:服务器没有关闭

如果我查看server.log,我可以看到以下条目:

  

致命:锁定文件" postmaster.pid"已经存在提示:是另一个   postmaster(PID 208)在数据目录中运行   "在/ usr /本地的/ var / postgres的"

经过一些疯狂的谷歌搜索后,我可以通过输入以下命令来解决这个问题:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

我首先要了解发生了什么,其次我想一劳永逸地解决这个问题。

任何人都可以解释可能发生的事情和治疗方法吗?

1 个答案:

答案 0 :(得分:0)

首先,尝试在OSX(以及PG 9.3)上提取PostgreSQL上的日志,这很可能就在这里:

/Library/PostgreSQL/9.3/data/pg_log

检查此日志,看看是否有任何内容可以解释更多正在发生的事情。将它贴在这里或过去的某个地方。这可以帮助社区调试问题。

接下来,'pg_ctl'表示服务器未关闭的原因是因为您有一个陈旧的套接字文件和/或过时的.plist文件,该文件在上次关闭时未被删除。这可能表明PostgreSQl守护程序被“崩溃”或被强制关闭并且没有干净的完成。

您使用的命令删除了陈旧文件,从而为创建新的套接字文件腾出空间。

同样重要的是要知道这是PostgreSQL的次要升级还是重大升级。主要升级始终需要迁移数据目录。使用新引擎运行旧的PostgreSQL数据目录可能会产生意外结果。