我有一台服务器,它一直运行着 PostgreSQL,直到今天早上崩溃。尝试重新启动 Postgres,但失败了:
sudo /etc/init.d/postgresql start
Starting PostgreSQL 9.1 database server
Removed stale pid file.
The PostgreSQL server failed to start. Please check the log output:
...fail!
执行后tail /var/log/postgresql/postgresql-9.1-main.log
,我看到了崩溃前的一些消息 —— 但没有重新启动的输出。较旧的消息显示:
UTC WARNING: pgstat wait timeout
操作系统:Ubuntu 12.04.3
答案1
对于可能遇到同样问题的人们。
我敢打赌你有一个卡住的共享内存段。
这里我们展示了我们的共享内存段。Postgres 有一个很大的 shared_buffers 段。不同的版本可能有不同的用户,有些使用“pgsql”
[root@host~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xf90007aa 0 root 600 222 1
0x0052e2c1 32769 postgres 600 6602235904 95
首先确保您的服务器确实已关闭!检查“nattch”,即附加进程的数量。检查是否有任何正在运行的 postgres/pgsql 进程。
[root@host ~]# ps -fu postgres
UID PID PPID C STIME TTY TIME CMD
[root@host ~]#
没什么,很好。现在,您可以删除共享内存段
ipcrm -m 32769
重新启动也可以,但我们不喜欢这样做:-)
答案2
重新启动服务器似乎已经解决了该问题。