Is there a tool for checking database integrity
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
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
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. +
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
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