PostgreSQL 启动失败,但登录后运行正常

PostgreSQL 启动失败,但登录后运行正常

我不确定我的问题是否在更新后开始出现。我正在运行 Debian Squeeze 和 postgresql-8.4(8.4.12-0squeeze1)。在启动或重启后,我注意到我的 PostgreSQL 数据库服务失败了。但是,当我以 root 身份登录时,该服务已在运行,我可以在控制台中执行 /etc/init.d/postgresql restart,并且它运行正常。什么可能导致此错误消息?

这是我的 /var/log/boot 中的日志

...
Tue Jul 24 09:40:23 2012: + pg_ctlcluster 8.4 main start
Tue Jul 24 09:41:04 2012: + ERRMSG=The PostgreSQL server failed to start. Please check the log output:
Tue Jul 24 09:41:04 2012: + res=1
Tue Jul 24 09:41:04 2012: + set -e
Tue Jul 24 09:41:04 2012: + [ 1 -eq 0 ]
Tue Jul 24 09:41:04 2012: + [ 1 -eq 2 ]
Tue Jul 24 09:41:04 2012: + status=1
Tue Jul 24 09:41:04 2012: + [ 1 -ne 0 -a -n The PostgreSQL server failed to start. Please check the log output: ]
Tue Jul 24 09:41:04 2012: + log_failure_msg The PostgreSQL server failed to start. Please check the log output:
Tue Jul 24 09:41:04 2012: + [ -n The PostgreSQL server failed to start. Please check the log output: ]
Tue Jul 24 09:41:04 2012: + log_begin_msg The PostgreSQL server failed to start. Please check the log output: ...
Tue Jul 24 09:41:04 2012: + [ -z The ]
Tue Jul 24 09:41:04 2012: + echo -n The PostgreSQL server failed to start. Please check the log output: ...
Tue Jul 24 09:41:04 2012: The PostgreSQL server failed to start. Please check the log output: ...+ log_end_msg 1
Tue Jul 24 09:41:04 2012: + [ -z 1 ]
Tue Jul 24 09:41:04 2012: + retval=1
Tue Jul 24 09:41:04 2012: + log_end_msg_pre 1
Tue Jul 24 09:41:04 2012: + :
Tue Jul 24 09:41:04 2012: + log_use_fancy_output
Tue Jul 24 09:41:04 2012: + TPUT=/usr/bin/tput
Tue Jul 24 09:41:04 2012: + EXPR=/usr/bin/expr
Tue Jul 24 09:41:04 2012: + [ -t 1 ]
Tue Jul 24 09:41:04 2012: + [ xlinux != x ]
Tue Jul 24 09:41:04 2012: + [ xlinux != xdumb ]
Tue Jul 24 09:41:04 2012: + [ -x /usr/bin/tput ]
Tue Jul 24 09:41:04 2012: + [ -x /usr/bin/expr ]
Tue Jul 24 09:41:04 2012: + /usr/bin/tput hpa 60
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 1
Tue Jul 24 09:41:04 2012: + [ -z ]
Tue Jul 24 09:41:04 2012: + FANCYTTY=1
Tue Jul 24 09:41:04 2012: + true
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 1
Tue Jul 24 09:41:04 2012: + RED=^[[31m
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 3
Tue Jul 24 09:41:04 2012: + YELLOW=^[[33m
Tue Jul 24 09:41:04 2012: + /usr/bin/tput op
Tue Jul 24 09:41:04 2012: + NORMAL=^[[39;49m
Tue Jul 24 09:41:04 2012: + [ 1 -eq 0 ]
Tue Jul 24 09:41:04 2012: + [ 1 -eq 255 ]
Tue Jul 24 09:41:04 2012: + /bin/echo -e  ^[[31mfailed!^[[39;49m
Tue Jul 24 09:41:04 2012:  ^[[31mfailed!^[[39;49m
Tue Jul 24 09:41:04 2012: + log_end_msg_post 1
Tue Jul 24 09:41:04 2012: + :
Tue Jul 24 09:41:04 2012: + return 1
Tue Jul 24 09:41:04 2012: + true
Tue Jul 24 09:41:04 2012: + log_end_msg 1
Tue Jul 24 09:41:04 2012: + [ -z 1 ]
Tue Jul 24 09:41:04 2012: + retval=1
Tue Jul 24 09:41:04 2012: + log_end_msg_pre 1
Tue Jul 24 09:41:04 2012: + :
Tue Jul 24 09:41:04 2012: + log_use_fancy_output
Tue Jul 24 09:41:04 2012: + TPUT=/usr/bin/tput
Tue Jul 24 09:41:04 2012: + EXPR=/usr/bin/expr
Tue Jul 24 09:41:04 2012: + [ -t 1 ]
Tue Jul 24 09:41:04 2012: + [ xlinux != x ]
Tue Jul 24 09:41:04 2012: + [ xlinux != xdumb ]
Tue Jul 24 09:41:04 2012: + [ -x /usr/bin/tput ]
Tue Jul 24 09:41:04 2012: + [ -x /usr/bin/expr ]
Tue Jul 24 09:41:04 2012: + /usr/bin/tput hpa 60
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 1
Tue Jul 24 09:41:04 2012: + [ -z 1 ]
Tue Jul 24 09:41:04 2012: + true
Tue Jul 24 09:41:04 2012: + true
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 1
Tue Jul 24 09:41:04 2012: + RED=^[[31m
Tue Jul 24 09:41:04 2012: + /usr/bin/tput setaf 3
Tue Jul 24 09:41:04 2012: + YELLOW=^[[33m
Tue Jul 24 09:41:04 2012: + /usr/bin/tput op
Tue Jul 24 09:41:04 2012: + NORMAL=^[[39;49m
Tue Jul 24 09:41:04 2012: + [ 1 -eq 0 ]
Tue Jul 24 09:41:04 2012: + [ 1 -eq 255 ]
Tue Jul 24 09:41:04 2012: + /bin/echo -e  ^[[31mfailed!^[[39;49m
Tue Jul 24 09:41:04 2012:  ^[[31mfailed!^[[39;49m
Tue Jul 24 09:41:04 2012: + log_end_msg_post 1
Tue Jul 24 09:41:04 2012: + :
Tue Jul 24 09:41:04 2012: + return 1

这是来自 /var/log/postgresql/postgresql-8.4-main.log 的日志

2012-07-25 10:40:41 CEST LOG:  could not receive data from client: Connection reset by peer
2012-07-25 10:40:41 CEST LOG:  unexpected EOF on client connection
2012-07-25 10:45:46 CEST LOG:  incomplete startup packet
2012-07-25 10:45:46 CEST LOG:  received fast shutdown request
2012-07-25 10:45:46 CEST LOG:  aborting any active transactions
2012-07-25 10:45:46 CEST LOG:  autovacuum launcher shutting down
2012-07-25 10:45:46 CEST LOG:  shutting down
2012-07-25 10:45:46 CEST LOG:  database system is shut down
2012-07-25 10:46:18 CEST LOG:  database system was shut down at 2012-07-25 10:45:46 CEST
2012-07-25 10:48:45 CEST LOG:  autovacuum launcher started
2012-07-25 10:48:45 CEST LOG:  database system is ready to accept connections

答案1

根据这两个日志文件(以及我昨晚阅读时错过的问题顶部的描述:x),您的启动脚本有一个错误,导致它认为 Postgres 启动失败,而实际上它已经启动并正在运行(database system is ready to accept connections)。

如果我不得不猜测的话,我会说错误在 中pg_ctlcluster,从上面的启动日志来看,它似乎返回了1(“其他故障”),尽管数据库服务器正在运行。如果没有看到脚本,pg_ctlcluster我无法告诉你问题是什么,但是由于该脚本是由 Debian 人员提供的,我的答案是一样的:将此作为错误报告给 Debian,以便他们可以修复脚本以正确确定 Postgres 是否已成功启动。

(抱歉,我的回答没有更多帮助,但是pg_ctlclusterDebianism。即使我们查看脚本,找出问题所在,并告诉您如何修复它,包管理器也会在下次 Debian 发布 Postgres 升级时覆盖它,并且它会再次开始报告错误故障...)

相关内容