Re: Offline enabling/disabling of data checksums
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Michael Banck <michael.banck@credativ.de>
Cc: Magnus Hagander <magnus@hagander.net>, Fabien COELHO <coelho@cri.ensmp.fr>, Sergei Kornilov <sk@zsrv.org>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2019-03-15T02:50:27Z
Lists: pgsql-hackers
Attachments
- 0001-Add-options-to-enable-and-disable-checksums-in-pg_ch.patch (text/x-diff) patch 0001
On Thu, Mar 14, 2019 at 04:26:20PM +0100, Michael Banck wrote: > Am Donnerstag, den 14.03.2019, 15:26 +0100 schrieb Magnus Hagander: >> One big-hammer method could be similar to what pg_upgrade does -- >> temporarily rename away the controlfile so postgresql can't start, and >> when done, put it back. > > That sounds like a good solution to me. I've made PoC patch for that, > see attached. Indeed. I did not know this trick from pg_upgrade. We could just use the same. > The only question is whether pg_checksums should try to move pg_control > back (i) on failure (ii) when interrupted? Yes, we should have a callback on SIGINT and SIGTERM here which just moves back in place the control file if the temporary one exists. I have been able to grab some time to incorporate the feedback gathered on this thread, and please find attached a new version of the patch to add --enable/--disable. The main changes are: - When enabling checksums, fsync first the data directory, and at the end then update/flush the control file and its parent folder as Fabien has reported. - When disabling checksums, only work on the control file, as Fabien has also reported. - Rename the control file when beginning the enabling operation, with a callback to rename the file back if the operation is interrupted. Does this make sense? -- Michael
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