Postgresql 无法启动,“套接字冲突”

Postgresql 无法启动,“套接字冲突”

我在 Gentoo 上启动 Postgresql 时遇到问题。

$ /etc/init.d/postgresql-9.1 start
 * Socket conflict.
 * A server is already listening on:
 *     /var/run/postgresql/.s.PGSQL.5432
 * HINT: Change PGPORT to listen on a different socket.

我删除了文件,/var/run/postgresql/.s.PGSQL.5432服务启动并正常运行。我猜服务器关闭了,文件就留在那里了。我用 netstat 检查了是否有进程正在监听该端口,但没有。

我的问题是,我以后该如何避免这个问题?

答案1

当 postgres 关闭时(干净地),应该删除套接字。最可能的原因是,您的计算机不干净地重新启动(断电、重置按钮……),或者 postgres 崩溃,并且没有时间/机会删除套接字文件。

如果您完全关闭/重启,这种情况根本不会发生。如果 postgres 崩溃,那么您面临的问题比陈旧的套接字更大。如果经常发生硬重启,则很有可能出现数据丢失/损坏。

您可以在启动时从其中一个 init 脚本(取决于发行版)中删除套接字,或者编辑 postgres init 脚本以在启动之前删除套接字(如果您在一个 postgresd 已在运行时无意中运行它并删除它的套接字,则很危险)。

答案2

如果不是软件错误,你只需要确保在需要时正常停止 postgresql 服务器。这对于避免数据丢失也至关重要。

相关内容