偶尔在我们的实验室中,我们的postgres 8.3数据库将从pid文件中获取孤立,并且在尝试关闭数据库时会收到此消息:
错误:pid文件无效,请手动终止过时的服务器进程postgres
发生这种情况时,我们会立即执行pg_dump,以便稍后恢复数据库.但是,如果我们只是杀死-9孤立postgres进程然后启动它,数据库只启动上次成功关闭的数据.但是如果你在杀死它之前使用psql,那么数据全部可用,这就是pg_dump工作的原因.
有没有办法优雅地关闭孤立的postgres进程,所以我们不必通过pg_dump并恢复?或者有没有办法让数据库在杀死孤立进程后恢复?
解决方法
根据
documentation,您可以发送SIGTERM或SIGQUIT. SIGTERM是首选.无论哪种方式都不使用SIGKILL(正如您从个人经验中所知).
编辑:另一方面,您遇到的不正常,可能表示错误配置或错误.请在pgsql-admin邮件列表上寻求帮助.