Thread: Checksums and full_page_writes

Checksums and full_page_writes

From
Borodin Vladimir
Date:
Hi all.

I’ve read thread [0], src/backend/storage/page/README and everything I found in the documentation about checksums [1, 2] but I haven’t understood what is my risk if I enable checksums during initdb and turn off full_page_writes?

Am I right that I can get torn pages on disk in that case but I will somehow know about it during checksum checking when this page will be read from disk to shared buffers? And is there any way to recover such torn page (from replica or backup+archived logs, for example)?

Re: Checksums and full_page_writes

From
Bruce Momjian
Date:
On Fri, Dec 26, 2014 at 01:11:57PM +0300, Borodin Vladimir wrote:
> Hi all.
>
> I ve read thread [0], src/backend/storage/page/README and everything I found in
> the documentation about checksums [1, 2] but I haven t understood what is my
> risk if I enable checksums during initdb and turn off full_page_writes?
>
> Am I right that I can get torn pages on disk in that case but I will somehow
> know about it during checksum checking when this page will be read from disk to
> shared buffers? And is there any way to recover such torn page (from replica or

Yes.

> backup+archived logs, for example)?

There is no way to _fix_ the torn page, but you can ignore the error
with ignore_checksum_failure:

    http://www.postgresql.org/docs/9.4/static/runtime-config-developer.html

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

  + Everyone has their own god. +


Re: Checksums and full_page_writes

From
Bruce Momjian
Date:
On Fri, Dec 26, 2014 at 04:07:11PM -0500, Bruce Momjian wrote:
> On Fri, Dec 26, 2014 at 01:11:57PM +0300, Borodin Vladimir wrote:
> > Hi all.
> >
> > I ve read thread [0], src/backend/storage/page/README and everything I found in
> > the documentation about checksums [1, 2] but I haven t understood what is my
> > risk if I enable checksums during initdb and turn off full_page_writes?
> >
> > Am I right that I can get torn pages on disk in that case but I will somehow
> > know about it during checksum checking when this page will be read from disk to
> > shared buffers? And is there any way to recover such torn page (from replica or
>
> Yes.
>
> > backup+archived logs, for example)?
>
> There is no way to _fix_ the torn page, but you can ignore the error
> with ignore_checksum_failure:
>
>     http://www.postgresql.org/docs/9.4/static/runtime-config-developer.html

Oh, you can fail-over to the replica, of course, but there is no clean
way to restore just the torn page.

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

  + Everyone has their own god. +