From ed308d78379008b2cebca30a986f97f992ee6122 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Sat, 23 Mar 2019 08:12:55 +0900 Subject: Add options to enable and disable checksums in pg_checksums An offline cluster can now work with more modes in pg_checksums: - --enable enables checksums in a cluster, updating all blocks with a correct checksum, and updating the control file at the end. - --disable disables checksums in a cluster, updating only the control file. - --check is an extra option able to verify checksums for a cluster, and the default used if no mode is specified. When running --enable or --disable, the data folder gets fsync'd for durability, and then it is followed by a control file update and flush to keep the operation consistent should the tool be interrupted, killed or the host unplugged. If no mode is specified in the options, then --check is used for compatibility with older versions of pg_checksums (named pg_verify_checksums in v11 where it was introduced). Author: Michael Banck, Michael Paquier Reviewed-by: Fabien Coelho, Magnus Hagander, Sergei Kornilov Discussion: https://postgr.es/m/20181221201616.GD4974@nighthawk.caipicrew.dd-dns.de --- doc/src/sgml/ref/pg_checksums.sgml | 79 +++++++++++++++++++++++++++++++++++--- 1 file changed, 74 insertions(+), 5 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/ref/pg_checksums.sgml b/doc/src/sgml/ref/pg_checksums.sgml index 6a47dda6837..5343a8aa7e8 100644 --- a/doc/src/sgml/ref/pg_checksums.sgml +++ b/doc/src/sgml/ref/pg_checksums.sgml @@ -16,7 +16,7 @@ PostgreSQL documentation pg_checksums - verify data checksums in a PostgreSQL database cluster + enable, disable or check data checksums in a PostgreSQL database cluster @@ -36,10 +36,19 @@ PostgreSQL documentation Description - pg_checksums verifies data checksums in a - PostgreSQL cluster. The server must be shut - down cleanly before running pg_checksums. - The exit status is zero if there are no checksum errors, otherwise nonzero. + pg_checksums checks, enables or disables data + checksums in a PostgreSQL cluster. The server + must be shut down cleanly before running + pg_checksums. The exit status is zero if there + are no checksum errors when checking them, and nonzero if at least one + checksum failure is detected. If enabling or disabling checksums, the + exit status is nonzero if the operation failed. + + + + While checking or enabling checksums needs to scan or write every file in + the cluster, disabling checksums will only update the file + pg_control. @@ -60,6 +69,37 @@ PostgreSQL documentation + + + + + + Checks checksums. This is the default mode if nothing else is + specified. + + + + + + + + + + Disables checksums. + + + + + + + + + + Enables checksums. + + + + @@ -119,4 +159,33 @@ PostgreSQL documentation + + + Notes + + When disabling or enabling checksums in a replication setup of multiple + clusters, it is recommended to stop all the clusters before doing + the switch to all the clusters consistently. When using a replication + setup with tools which perform direct copies of relation file blocks + (for example ), enabling or disabling + checksums can lead to page corruptions in the shape of incorrect + checksums if the operation is not done consistently across all nodes. + Destroying all the standbys in the setup first, enabling or disabling + checksums on the primary and finally recreating the standbys from + scratch is also safe. + + + If pg_checksums is aborted or killed in + its operation while enabling or disabling checksums, the cluster + will have the same state with respect of checksums as before the + operation and pg_checksums needs to be + restarted. + + + When enabling checksums in a cluster, the operation can potentially + take a long time if the data directory is large. During this operation, + the cluster or other programs that write to the data directory must not + be started or else data loss may occur. + + -- cgit v1.2.3