Subject: pg_rewind - enable wal_log_hints or data-checksums

From: Dylan Luong <[email-masked]>
Date: Mon, 5 Jun 2017 00:37:15 +0000

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

---

From: Michael Paquier <[email-masked]>
Date: Mon, 5 Jun 2017 10:38:04 +0900

On Mon, Jun 5, 2017 at 9:37 AM, Dylan Luong <[email-masked]> 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%.

> 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

-- 
Sent via pgsql-general mailing list ([email-masked])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general