PostgreSQL挂在Linux中closures?

我使用PostgreSQL 9.0。 它在关机期间挂起。 当我使用pg_ctl stop它挂起后,其显示味精:

 pg_ctl: server does not shut down 

当我用psql时显示:

 psql: FATAL: the database system is shutting down 

并在日志中写下这些消息

  DEBUG: postmaster received signal 15 2011-07-14 09:36:00 ETC/GMT LOG: received smart shutdown request 

请告诉我如何解决它?

默认情况下, pg_ctl将尝试“智能closures”。 这种关机将告诉系统不接受任何新的连接,但在现有连接断开之前不会closures。

您可能想使用“快速”closures(通过pg_ctl -m fast执行pg_ctl -m fast ),这也将断开现有的用户。

对于Debian( pg_ctl$PATH不是默认的):

 pg_ctlcluster 9.4 main restart -m fast 

一个正常的closures请求将等到所有的连接都被终止。

pg_ctl stop “挂起”时,这意味着你仍然有开放的连接到数据库。 closures连接到该服务器的所有应用程序,然后Postgres应该正常closures。

“数据库系统正在closures”的错误来自Postgres试图closures的事实,因此它不允许任何新的连接。

当试图确定发生了什么,你可以通过psqllogin并input:

 test=> SELECT * FROM pg_stat_activity; datid | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | waiting | current_query -------+---------+---------+----------+--------------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+---------+--------------------------------- 18703 | test | 7604 | 18702 | test_sean | psql | | | -1 | 2011-07-14 07:23:40.021921+00 | | 2011-07-14 07:23:46.398894+00 | f | <IDLE> 18703 | test | 7673 | 18702 | test_sean | psql | | | -1 | 2011-07-14 07:24:54.507982+00 | 2011-07-14 07:25:00.102369+00 | 2011-07-14 07:25:00.102369+00 | f | SELECT * FROM pg_stat_activity; (2 rows) 

除非你绝对要使用pg_ctl,为什么不使用下面的代码:

 sudo /etc/init.d/postgresql-9.1 stop 

init.d脚本问题:

 $SU -l postgres -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null 

这是一个快速关机并执行你所需要的。