Is there a tool for checking database integrity

Started by Clemens Eissereralmost 14 years ago5 messagesgeneral
Jump to latest
#1Clemens Eisserer
linuxhippy@gmail.com

Hi,

Is there a tool for checking a postgresql database for integrity, so I
would be notified immediatly if something went wrong e.g. with memory
and can go back to the last good backup?
Such a tool would guarantee me I am not sitting on a ticking time bomb
(corrupted database) without even noticing it.

Thank you in advance, Clemens

#2Tomas Vondra
tomas.vondra@2ndquadrant.com
In reply to: Clemens Eisserer (#1)
Re: Is there a tool for checking database integrity

Hi,

On 6.5.2012 20:47, Clemens Eisserer wrote:

Hi,

Is there a tool for checking a postgresql database for integrity, so I
would be notified immediatly if something went wrong e.g. with memory
and can go back to the last good backup?
Such a tool would guarantee me I am not sitting on a ticking time bomb
(corrupted database) without even noticing it.

No, at least in the current version. The next version (9.2) will support
checksums, but it's meant mostly as a protection against failures at the
I/O level. It might catch some memory issues, but it certainly won't be
100% protection.

There are unofficial tools (e.g. pg_check @ github, written by me) that
perform some checking when requested, but it's not (and never will be)
automatic.

Moreover, in many cases it's impossible to identify hw-level corruption,
unless you take the mainframe approach (running the task on multiple
devices and check if they produce the same result).

The best thing you can do is:

(1) watch the PostgreSQL log for unexpected failures - for example
memory issues often manifest themselves as "invalid memory alloc"
crashes etc.

(2) do regular backups and **check them** i.e. check that the backup
finished OK and restore them somewhere else (a backup of a
corrupted database usually fails)

(3) use good hw (ECC memory, ...) / test it thoroughly etc.

kind regards
Tomas

#3Bruce Momjian
bruce@momjian.us
In reply to: Tomas Vondra (#2)
Re: Is there a tool for checking database integrity

On Mon, May 07, 2012 at 12:37:47AM +0200, Tomas Vondra wrote:

Hi,

On 6.5.2012 20:47, Clemens Eisserer wrote:

Hi,

Is there a tool for checking a postgresql database for integrity, so I
would be notified immediatly if something went wrong e.g. with memory
and can go back to the last good backup?
Such a tool would guarantee me I am not sitting on a ticking time bomb
(corrupted database) without even noticing it.

No, at least in the current version. The next version (9.2) will support
checksums, but it's meant mostly as a protection against failures at the
I/O level. It might catch some memory issues, but it certainly won't be
100% protection.

Postgres 9.2 will _not_ support checksums.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

#4Tomas Vondra
tomas.vondra@2ndquadrant.com
In reply to: Bruce Momjian (#3)
Re: Is there a tool for checking database integrity

On 7.5.2012 00:56, Bruce Momjian wrote:

On Mon, May 07, 2012 at 12:37:47AM +0200, Tomas Vondra wrote:

Hi,

On 6.5.2012 20:47, Clemens Eisserer wrote:

Hi,

Is there a tool for checking a postgresql database for integrity, so I
would be notified immediatly if something went wrong e.g. with memory
and can go back to the last good backup?
Such a tool would guarantee me I am not sitting on a ticking time bomb
(corrupted database) without even noticing it.

No, at least in the current version. The next version (9.2) will support
checksums, but it's meant mostly as a protection against failures at the
I/O level. It might catch some memory issues, but it certainly won't be
100% protection.

Postgres 9.2 will _not_ support checksums.

Oh, I see - it was bumped to 9.3 and I've missed that.

Sorry for confusion.

Tomas

#5Clemens Eisserer
linuxhippy@gmail.com
In reply to: Tomas Vondra (#2)
Re: Is there a tool for checking database integrity

HI Tomas,

No, at least in the current version. The next version (9.2) will support
checksums, but it's meant mostly as a protection against failures at the
I/O level. It might catch some memory issues, but it certainly won't be
100% protection.

Oh, I see - it was bumped to 9.3 and I've missed that.

Glad to see there is work going on in the integrity area.

There are unofficial tools (e.g. pg_check @ github, written by me) that
perform some checking when requested, but it's not (and never will be)
automatic.

Moreover, in many cases it's impossible to identify hw-level corruption,
unless you take the mainframe approach (running the task on multiple
devices and check if they produce the same result).

Sure, but checksumming in combination with a structural integrity
check should give at least some confidence everything is ok.

(3) use good hw (ECC memory, ...) / test it thoroughly etc.

Thats the problem - because of cost constraints I have to deploy
postgresql on non-ECC boxes.
So I am looking forward to the checksum feature and hope no bit will toogle ;)

Thanks again, Clemens