postgresql:即使在删除和重新创build之后,“无效页头”消息

运行postgresql 8.4.11的我的Ubuntu 14.04 LTS服务器崩溃了,在重新启动之后,运行针对postgresql的查询的应用程序服务器报告了以下错误

ERROR: invalid page header in block 40 of relation base/18038/22194 

我GOOGLE了,试图创build一个转储,并使用由此产生的错误消息来确定一个破表。 然后我执行了

 SET zero_damaged_pages = on; VACUUM FULL damaged_table; -- vacuum didn't report any errors here REINDEX TABLE damaged_table; 

别人提到reindexdb ,所以我跑了

 $ reindexdb -s mydb 

而且,问题仍然保持不变。

最后 – 我从数据库中得到了一个工作备份 – 我删除并重新创build了整个数据库

 DROP DATABASE mydb; CREATE DATABASE mydb; 

并恢复备份:

 cat mydump| sudo -u postgres pgsql mydb 

但是即使现在这个问题还是一样的。 我对postgresql知之甚less,但是如何在数据库的重新创build中存在这样的错误呢? 不幸的是我需要再次在同一台机器上运行数据库。

还有什么我可以尝试让数据库再次工作?

这听起来像你的文件系统或磁盘上的某种腐败。

我build议看看这里: postgresql腐败

接下来,我会在dmesg/var/log/messages查找您可能会看到的任何硬件错误。

如果你有一个工作转储,我会复制当前的数据目录远离/var/lib/postgresql/8.4/main ,运行pg_createcluster 8.4 main在一个新的目录,并尝试恢复那里,看看是否有助于修复任何挥之不去的问题。

如果之后仍然有问题, #postgresql在Freenode IRC上使用#postgresql或者[email protected]是我的下一个步骤,如果我必须尽快启动并运行它的话。

希望有所帮助。 祝你好运。 =)