Detecting database corruption

Started by Jack Orensteinabout 22 years ago2 messagesgeneral
Jump to latest
#1Jack Orenstein
jorenstein@reference-info.com

My company is developing a PostgreSQL 7.4 application. We don't want
our customers to have to manage the database, so we're automating as
much maintenance as possible. If the database ever becomes corrupt,
we have procedures for restoring the database from backup data.
The question we've been wondering about is how to detect a corrupt
database. False positives are acceptable (database isn't really
corrupt but we think it is); false negatives are not, (database
is corrupt but we can't tell).

- Are any cases of corruption detected in the normal operation of
PostgreSQL?

- If there are, then how are applications notified when corruption
is detected?

- What symptoms should prompt us to suspect and check for corruption?

- Are there any tools we can run to determine whether a database is
corrupt?

Jack Orenstein

#2scott.marlowe
scott.marlowe@ihs.com
In reply to: Jack Orenstein (#1)
Re: Detecting database corruption

On Wed, 14 Jan 2004, Jack Orenstein wrote:

My company is developing a PostgreSQL 7.4 application. We don't want
our customers to have to manage the database, so we're automating as
much maintenance as possible. If the database ever becomes corrupt,
we have procedures for restoring the database from backup data.
The question we've been wondering about is how to detect a corrupt
database. False positives are acceptable (database isn't really
corrupt but we think it is); false negatives are not, (database
is corrupt but we can't tell).

- Are any cases of corruption detected in the normal operation of
PostgreSQL?

- If there are, then how are applications notified when corruption
is detected?

- What symptoms should prompt us to suspect and check for corruption?

- Are there any tools we can run to determine whether a database is
corrupt?

Just a couple of points:

99.9% of all the corruption I've ever seen on postgresql servers has been
bad hardware. Test your hardware well, and you shouldn't have much, if
any, of a problem.

If postgresql gets corrupted, it's usually an individual table that it
will show up in, but could be a transaction log or something similar as
well. Generally the errors say things about not being able to read a
block, etc... I'd suggest looking through the source code for all the
error messages and harvesting the ones that look like they'd show up if a
table / index etc got corrupted.