We have some serious issues with our PostgreSQL-Server (Version 8.4). Our webapplication uses jdbc to connect to the PostgreSQL Server. Suddenly our webapplication cant connect to the PostgreSQL Server. We get the PSQLException: Broken Pipe. Cause of this, i tried to connect via pg_admin. This works, but i'm getting errors like this:
ERROR: could not read block 32570 of relation base/16390/2663: read
only 0 of 8192 bytes
I tried to make a dump to backup the data and this doesnt work too:
(Look on the edit at the bottom of the side)
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: could not read block 32570 of relation
base/16390/2663: read only 0 of
8192 bytespg_dump: The command was: LOCK TABLE
public.results_233_top100_disease_state_karyotype IN ACCESS SHARE MODE
I tried to get some information with
SELECT oid, relname FROM pg_class WHERE oid=2663
The result was this:
2663 ; "pg_class_relname_nsp_index"
During my effort of collecting some information, i read, that recreating that specific index could help. So reindexed it with the following command:
REINDEX INDEX pg_class_relname_nsp_index
This didnt helped at all, and now i'm pretty helpless. Has somebody an idea what i can do ? Another point is, that we do weekly backups. Is it possible to overwrite the data folder: /var/lib/postgresql/8.4./main
with our data from the backup?
EDIT: I fixed the problem with reindexing the table that had the error. Now i'm getting another error:
pg_dump: SQL command failed
pg_dump: Error message from server: ERROR: invalid page header in block 1047 of relation base/16390/16398
pg_dump: The command was: COPY public.data_1 (sampleid, feature, value) TO stdout;
Best Answer
Before doing anything else, read and act on: http://wiki.postgresql.org/wiki/Corruption .
Most likely you have disk or file system problems.
If you suspect any kind of DB corruption for whatever reason you should stop the DB and copy the entire database at the file system level before attempting any recovery.
Once you've done that, then you can look into possible repairs. You'll probably have some significant data loss, so your goal should be to get it working to the point where you can
pg_dump
the damaged databases, re-initdb, and reload.If you have a recent backup, now would be a good time to think about using it.