Re: Offline enabling/disabling of data checksums
Fabien COELHO <coelho@cri.ensmp.fr>
From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Michael Banck <michael.banck@credativ.de>
Cc: Postgres hackers <pgsql-hackers@postgresql.org>,
Michael Paquier <michael@paquier.xyz>
Date: 2018-12-26T18:43:17Z
Lists: pgsql-hackers
Hallo Michael, > It adds an (now mandatory) --action parameter that takes either verify, > enable or disable as argument. I'd rather have explicit switches for verify, enable & disable, and verify would be the default if none is provided. > This is basically meant as a stop-gap measure in case online activation > of checksums won't make it for v12, but maybe it is independently > useful? I would say yes. > 1. Rename pg_verify_checksums to e.g. pg_checksums as it will no longer > only verify checksums. I'd agree to rename the tool as "pg_checksums". > 2. Rename the scan_* functions (Michael renamed them to operate_file and > operate_directory but I am not sure it is worth it. Hmmm. The file is indeed scanned, and "operate" is kind of very fuzzy. > 3. Once that patch is in, there would be a way to disable checksums so > there'd be a case to also change the initdb default to enabled, but that > required further discussion (and maybe another round of benchmarks). My 0.02€ is that data safety should comes first, thus checksums should be enabled by default. About the patch: applies, compiles, "make check" ok. There is no documentation. In "scan_file", I would open RW only for enable, but keep RO for verify. Also, the full page is rewritten... would it make sense to only overwrite the checksum part itself? It seems that the control file is unlinked and then rewritten. If the rewritting fails, or the command is interrupted, the user has a problem. Could the control file be simply opened RW? Else, I would suggest to rename (eg add .tmp), write the new one, then unlink the old one, so that recovering the old state in case of problem is possible. For enable/disable, while the command is running, it should mark the cluster as opened to prevent an unwanted database start. I do not see where this is done. -- Fabien.
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