2015-10-06 24 views
1

我使用pg_dump备份了一个postgres 9.4数据库。我将数据库内容转储到Linux /tmp目录中。不幸的是,当我使用filezilla将转储转移到新服务器时,我不小心删除了套接字文件/tmp/s.PGSQL.5432。现在我甚至无法重新启动postgres或运行此服务器。有谁知道在丢失socket文件后如何恢复数据库?如果postgres套接字被删除怎么办?

+3

听起来不对。文件系统命名空间中的Unix套接字是在进程启动过程中用'bind()'系统调用创建的,所以我会检查你是否意外地也损坏了'/ tmp'的权限,所以服务器无法在运行时创建套接字'postgres'用户。 –

+1

我不太明白。你的PostgreSQL集群是否仍在运行(没有套接字文件),你不能重新启动它?如果是这样,你可以用'pg_ctl -m fast stop'命令停止服务器吗?你可以发布特定的错误消息,你尝试重新启动? –

回答

1

kill数据库服务器强制快速关闭。做不是使用kill -KILL(即)。默认信号SIGTERM就足够了。

sudo pkill postgres 
0

您可以停止使用pg_ctl数据库:

pg_ctl stop -m fast -D /path/to/data/directory 

理想的情况下运行此为您的数据库使用(在大多数情况下,“Postgres的)相同的用户。

“-m fast”选项将终止所有打开的连接,然后关闭数据库。 “pg_ctl stop”的默认行为是等到所有连接都关闭 - 可能是永远的。

相关问题