postgres 服务器启动失败,无日志,如何排查?

Max*_* L. 41 postgresql

我正在 ubuntu 12.04 服务器上启动 postgres 9.3 实例:

~# service postgresql start 

 * The PostgreSQL server failed to start. Please check the log output.
                                                                     [fail]
Run Code Online (Sandbox Code Playgroud)

启动失败,但没有留下任何日志,此文件为空:

tail /var/log/postgresql/postgresql-9.3-main.log 
Run Code Online (Sandbox Code Playgroud)

并且此目录中没有其他文件:/var/log/postgresql/

解决此问题的最佳方法是什么?

Chr*_*ell 65

尝试在启用调试的情况下手动运行它。这将导致它在前台运行并将任何错误消息打印到标准错误,同时也会增加详细程度。

我相信这将是 Ubuntu 上 PostgreSQL 9.3 的正确命令行,但它可能需要一些非常小的调整(注意:为了可读性,行被拆分;如果需要,您可以将其重新组合为一行(不带反斜杠)):

/usr/lib/postgresql/9.3/bin/postgres -d 3 -D /var/lib/postgresql/9.3/main \
   -c config_file=/etc/postgresql/9.3/main/postgresql.conf
Run Code Online (Sandbox Code Playgroud)

开头是postgres二进制文件的位置,然后我们启用调试并将其设置为级别 3(您可以向上或向下调整以增加或减少详细程度)。接下来,我们指定要开始的数据目录和配置文件。我认为这些应该是 Ubuntu Server 12.04 的默认设置。

希望这会给您足够的信息来确定问题所在。

  • 谢谢,我已经解决了这个问题,数据目录存在权限问题,似乎服务也必须与 sudo 一起运行 (3认同)
  • 救星。我找不到任何其他方法来说明 PostgreSQL 无法启动的原因,因为它由于权限问题而无法访问其数据目录。 (2认同)
  • 对我来说这是配置 /etc/postgresql/ 的许可 (2认同)