Re: Offline enabling/disabling of data checksums
Michael Banck <michael.banck@credativ.de>
From: Michael Banck <michael.banck@credativ.de>
To: Bernd Helmle <mailings@oopsware.de>, Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Magnus Hagander <magnus@hagander.net>, Michael Paquier
<michael@paquier.xyz>, Postgres hackers <pgsql-hackers@postgresql.org>
Date: 2019-01-08T14:49:22Z
Lists: pgsql-hackers
Am Dienstag, den 08.01.2019, 15:39 +0100 schrieb Bernd Helmle: > Am Dienstag, den 08.01.2019, 15:09 +0100 schrieb Fabien COELHO: > > > The question is how to reliably do this in an acceptable way? Just > > > faking a postmaster.pid sounds pretty hackish to me, do you have > > > any > > > suggestions here? > > > > Adding a new state to ControlFileData which would prevent it from > > starting? > > But then you have to make sure the control flag gets cleared in any > case pg_verify_checksums crashes somehow or gets SIGKILL'ed ... > > Setting the checksum flag is done after having finished all blocks, so > there is no problem. But we need to set this new flag before and reset > it afterwards, so in between strange things can happen (as the various > calls to exit() within error handling illustrates). It seems writing a note like "pg_checksums is running" into the postmaster.pid would work, and would give a hopefully useful hint to somebody trying to start Postgres while pg_checksums is running: postgres@kohn:~$ echo "pg_checksums running with pid 1231, cluster disabled" > data/postmaster.pid postgres@kohn:~$ pg_ctl -D data -l logfile start pg_ctl: invalid data in PID file "data/postmaster.pid" postgres@kohn:~$ echo $? 1 postgres@kohn:~$ If the DBA then just simply deletes postmaster.pid and starts over, well then I call pilot error; though we could in theory change pg_ctl (or whatever checks postmaster.pid) to emit an even more useful error message if it encounters a "cluster is locked" keyword in it. Not sure whether everybody likes that (or is future-proof for that matter), but I like it better than adding a new field to the control file, for the reasons Bernd outlined above. Michael -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.banck@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer Unser Umgang mit personenbezogenen Daten unterliegt folgenden Bestimmungen: https://www.credativ.de/datenschutz
Commits
-
Reorganize Notes section in documentation of pg_checksums
- a7cc52370b2b 12.0 landed
-
Add option -N/--no-sync to pg_checksums
- e0090c869008 12.0 landed
-
Add options to enable and disable checksums in pg_checksums
- ed308d783790 12.0 landed
-
Refactor more code logic to update the control file
- 8b938d36f744 12.0 landed
-
Rename pg_verify_checksums to pg_checksums
- 6dd263cfaa84 12.0 landed
-
Fix cross-version compatibility checks of pg_verify_checksums
- 501f58359b59 11.3 landed
- c9ae7f704c67 12.0 landed
-
Add routine able to update the control file to src/common/
- ce6afc6823fb 12.0 landed