Thread: [GENERAL] pg_rewind - enable wal_log_hints or data-checksums

[GENERAL] pg_rewind - enable wal_log_hints or data-checksums

From
Dylan Luong
Date:

Hi

 

In the PostgreSQL documentation for pg_rewind:

 

pg_rewind requires that the target server either has the wal_log_hints option enabled in postgresql.conf or data checksums enabled when the cluster was initialized with initdb.

 

 

What is the difference between the two options?

What are the advantages and disadvantages between the two?

Which one is the the preferred option?

 

Thanks

Regards

Dylan

 

Re: [GENERAL] pg_rewind - enable wal_log_hints or data-checksums

From
Michael Paquier
Date:
On Mon, Jun 5, 2017 at 9:37 AM, Dylan Luong <Dylan.Luong@unisa.edu.au> wrote:
> pg_rewind requires that the target server either has the wal_log_hints
> option enabled in postgresql.conf or data checksums enabled when the cluster
> was initialized with initdb.

Yes, this is to make sure that you don't finish with a corrupted
target server if a hint bit is set on a page after a checkpoint. Any
of those options make sure that a full-page write is generated in this
case.

> What is the difference between the two options?

Data checksums calculate 2 bytes of checksum data and write it to each
page that is evicted from shared buffers. Each page read from disk has
its checksum checked. In some workloads, like a heavy read load where
a lot of page evictions happen, this can induce a couple of percents
of performance lost. In my own experience, that's 1~2%.

> What are the advantages and disadvantages between the two?
> Which one is the the preferred option?

If you care more about performance or if you use a file system that
has its own block-level checksum, wal_log_hints would be preferred.
Data checksums offer more guarantees in terms of integrity though when
looking for corrupted data. Things get found more quickly.
--
Michael