Re: Offline enabling/disabling of data checksums

Magnus Hagander <magnus@hagander.net>

From: Magnus Hagander <magnus@hagander.net>
To: Sergei Kornilov <sk@zsrv.org>
Cc: Michael Paquier <michael@paquier.xyz>, Fabien COELHO <coelho@cri.ensmp.fr>, Michael Banck <michael.banck@credativ.de>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-13T11:43:49Z
Lists: pgsql-hackers
On Wed, Mar 13, 2019 at 12:40 PM Sergei Kornilov <sk@zsrv.org> wrote:

> Hi
>
> >> One new question from me: how about replication?
> >> Case: primary+replica, we shut down primary and enable checksum, and
> "started streaming WAL from primary" without any issue. I have master with
> checksums, but replica without.
> >> Or cluster with checksums, then disable checksums on primary, but
> standby think we have checksums.
> >
> > Enabling or disabling the checksums offline on the master quite clearly
> requires a rebuild of the standby, there is no other way (this is one of
> the reasons for the online enabling in that patch, so I still hope we can
> get that done -- but not for this version).
>
> I mean this should be at least documented.
> Change system id... Maybe is reasonable
>

I think this is dangerous enough that it needs to be enforced and not
documented.

Most people who care about checksums are also going to be having either
replication or backup...


>> Also we support ./configure --with-blocksize=(not equals 8)? make check
> on HEAD fails for me. If we support this - i think we need recheck BLCKSZ
> between compiled pg_checksum and used in PGDATA
> >
> > You mean if the backend and pg_checksums is built with different
> blocksize? Yeah, that sounds like something which is a cheap check and
> should be done.
>
> Yep
>

This one I could more live with it only being a documented problem rather
than enforced, but it also seems very simple to enforce.

-- 
 Magnus Hagander
 Me: https://www.hagander.net/ <http://www.hagander.net/>
 Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>

Commits

  1. Reorganize Notes section in documentation of pg_checksums

  2. Add option -N/--no-sync to pg_checksums

  3. Add options to enable and disable checksums in pg_checksums

  4. Refactor more code logic to update the control file

  5. Rename pg_verify_checksums to pg_checksums

  6. Fix cross-version compatibility checks of pg_verify_checksums

  7. Add routine able to update the control file to src/common/