mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
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
This commit is contained in:
@ -16,7 +16,7 @@ PostgreSQL documentation
|
||||
|
||||
<refnamediv>
|
||||
<refname>pg_checksums</refname>
|
||||
<refpurpose>verify data checksums in a <productname>PostgreSQL</productname> database cluster</refpurpose>
|
||||
<refpurpose>enable, disable or check data checksums in a <productname>PostgreSQL</productname> database cluster</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
@ -36,10 +36,19 @@ PostgreSQL documentation
|
||||
<refsect1 id="r1-app-pg_checksums-1">
|
||||
<title>Description</title>
|
||||
<para>
|
||||
<application>pg_checksums</application> verifies data checksums in a
|
||||
<productname>PostgreSQL</productname> cluster. The server must be shut
|
||||
down cleanly before running <application>pg_checksums</application>.
|
||||
The exit status is zero if there are no checksum errors, otherwise nonzero.
|
||||
<application>pg_checksums</application> checks, enables or disables data
|
||||
checksums in a <productname>PostgreSQL</productname> cluster. The server
|
||||
must be shut down cleanly before running
|
||||
<application>pg_checksums</application>. 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.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
While checking or enabling checksums needs to scan or write every file in
|
||||
the cluster, disabling checksums will only update the file
|
||||
<filename>pg_control</filename>.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@ -60,6 +69,37 @@ PostgreSQL documentation
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-c</option></term>
|
||||
<term><option>--check</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Checks checksums. This is the default mode if nothing else is
|
||||
specified.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-d</option></term>
|
||||
<term><option>--disable</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Disables checksums.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-e</option></term>
|
||||
<term><option>--enable</option></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Enables checksums.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-v</option></term>
|
||||
<term><option>--verbose</option></term>
|
||||
@ -119,4 +159,33 @@ PostgreSQL documentation
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Notes</title>
|
||||
<para>
|
||||
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 <xref linkend="app-pgrewind"/>), 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.
|
||||
</para>
|
||||
<para>
|
||||
If <application>pg_checksums</application> 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 <application>pg_checksums</application> needs to be
|
||||
restarted.
|
||||
</para>
|
||||
<para>
|
||||
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.
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
Reference in New Issue
Block a user