注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

数据库无法连接: "psql: FATAL: the database system is shutting down"  

2011-06-10 15:36:53|  分类: PG案例分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  
        今天开发人员求助,说是一台开发环境 PostgreSQL 库使用客户端连接不上, 在要得
数据库主机 root 密码后,上去瞧瞧,问题还真奇怪。


--1 连接主机,查看进程
[root@localhost ~]# ps -ef | grep post
postgre   4641 27639  0  2010 ?        00:00:00 postgres: community community 127.0.0.1(57739) idle            
postgre   8270 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40147) idle in transaction
postgre   8271 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40148) idle in transaction
postgre   8273 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40150) idle in transaction
postgre   8274 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40151) idle in transaction
postgre   8275 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40152) idle in transaction
postgre   8279 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40156) idle in transaction
postgre   8280 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40157) idle in transaction
postgre   8282 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40159) idle in transaction
postgre   8283 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40160) idle in transaction
postgre   8286 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40163) idle in transaction
postgre   8287 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40164) idle in transaction
postgre   8289 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40166) idle in transaction
postgre   8292 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40169) idle in transaction
postgre   8294 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40171) idle in transaction
postgre   8296 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40173) idle in transaction
postgre   8297 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40174) idle in transaction
postgre   8300 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40177) idle in transaction
postgre   8302 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40179) idle in transaction
postgre   8303 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40180) idle in transaction
postgre   8304 27639  0 Jan12 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(40181) idle in transaction
root     17571 17467  0 10:07 pts/2    00:00:00 su - postgre
postgre  17572 17571  0 10:07 pts/2    00:00:00 -bash
root     21591 21557  0 14:42 pts/5    00:00:00 grep post
postgre  24561 27639  0 Mar24 ?        00:00:00 postgres: gamehall gamehall 127.0.0.1(41383) idle              
postgre  27639     1  0  2010 ?        00:03:32 /opt/postgresql-9.0.1/bin/postgres -D /opt/postgresql-9.0.1/data
postgre  27641 27639  0  2010 ?        00:00:00 postgres: writer process                                       
postgre  27644 27639  0  2010 ?        00:06:12 postgres: stats collector process                              
[root@localhost ~]# su - postgres

   备注:从上面可以看出,PostgreSQL 进程还在。


--2 准备连接数据库
[postgre@localhost data]$ psql -h 127.0.0.1
psql: could not connect to server: Connection refused
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?
       
[postgre@localhost data]$ psql -p 1921
psql: FATAL:  the database system is shutting down

   备注:数据库连接不上,报 "the database system is shutting down" , 意思是数据库正在关闭, 而 PostgreSQL
            进程明明都还在,再仔细观察了上面步骤的进程,发现有十几个“ 127.0.0.1(40181) idle in transaction”
            难道是这些进程发生了异常,遗憾的是数据库日志参数没打开,无法查看日志。
        
            正在分析的时候,开发人员告诉了个信息,说是这台机器在前段时间可能是断电了。汗,断电了?
            先不管什么原因,努力先把库恢复正常在说。
                 
--3 准备关闭数据库
[postgre@localhost data]$ pg_ctl stop -m fast
pg_ctl: PID file "/opt/postgresql-9.0.1/data/postmaster.pid" does not exist
Is server running?

   备注:数据库无法关闭,  文件 postmaster.pid 不存在。
  
--4 参照其它库的 postmaster,pid 文件,构造了一个
   创建文件 /opt/postgresql-9.0.1/data/postmaster.pid , 并增加以下内容:
  
27639
/opt/postgresql-9.0.1/data

    备注:  第一行: "27639" 表示 PostgreSQL 的父进程,根据步骤一的红色标识可以看到;
             第二行: "/opt/postgresql-9.0.1/data" 表示数据目录;
             第三行:正常情况下,第三行还有两个字段,但具体信息不详,无法构造。
         
--5 再次尝试停数据库,数据库可以正常关闭
[postgre@localhost data]$ pg_ctl stop -m fast -D $PGDATA
waiting for server to shut down.... done
server stopped

             
--6 启动数据库
[postgre@localhost data]$ pg_ctl start -D $PGDATA
server starting

[postgre@localhost data]$ ps -ef | grep post
root     17571 17467  0 10:07 pts/2    00:00:00 su - postgre
postgre  17572 17571  0 10:07 pts/2    00:00:00 -bash
root     21595 21557  0 14:42 pts/5    00:00:00 su - postgre
postgre  21596 21595  0 14:42 pts/5    00:00:00 -bash
postgre  21933     1  6 14:54 pts/5    00:00:00 /opt/postgresql-9.0.1/bin/postgres -D /opt/postgresql-9.0.1/data
postgre  21934 21933  0 14:54 ?        00:00:00 postgres: logger process                                       
postgre  21936 21933  0 14:54 ?        00:00:00 postgres: writer process                                       
postgre  21937 21933  0 14:54 ?        00:00:00 postgres: wal writer process                                   
postgre  21938 21933  0 14:54 ?        00:00:00 postgres: autovacuum launcher process                          
postgre  21939 21933  0 14:54 ?        00:00:00 postgres: stats collector process                              
postgre  21941 21596  0 14:54 pts/5    00:00:00 ps -ef
postgre  21942 21596  0 14:54 pts/5    00:00:00 grep post

   备注:数据库正常启动, 到这里数据库终于恢复正常了!

 

--7 总结

      至今 postmaster.pid  文件丢失原因尚不明确,但这次通过构造 postmaster.pid 
   文件从而将数据库成功恢复! 

  评论这张
 
阅读(30010)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016