aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2021-01-17 15:31:23 +0100
committerMagnus Hagander <magnus@hagander.net>2021-01-17 15:31:23 +0100
commitcf621d9d84db1e6edaff8ffa26bad93fdce5f830 (patch)
treea8776faef923e19090a1bcfec3dc7b8ba6a818cd
parent1db0d173a2201119f297ea35edfb41579893dd8c (diff)
downloadpostgresql-cf621d9d84db1e6edaff8ffa26bad93fdce5f830.tar.gz
postgresql-cf621d9d84db1e6edaff8ffa26bad93fdce5f830.zip
Add documentation chapter about checksums
Data checksums did not have a longer discussion in the docs, this adds a short section with an overview. Extracted from the larger patch for on-line enabling of checksums, which has many more authors and reviewers. Author: Daniel Gustafsson Reviewed-By: Magnus Hagander, Michael Banck (and others through the big patch) Discussion: https://postgr.es/m/5ff49fa4.1c69fb81.658f3.04ac@mx.google.com
-rw-r--r--doc/src/sgml/amcheck.sgml4
-rw-r--r--doc/src/sgml/ref/initdb.sgml1
-rw-r--r--doc/src/sgml/wal.sgml49
3 files changed, 51 insertions, 3 deletions
diff --git a/doc/src/sgml/amcheck.sgml b/doc/src/sgml/amcheck.sgml
index 8dfb01a77be..a2571d33ae6 100644
--- a/doc/src/sgml/amcheck.sgml
+++ b/doc/src/sgml/amcheck.sgml
@@ -393,7 +393,7 @@ SET client_min_messages = DEBUG1;
<para>
<filename>amcheck</filename> can be effective at detecting various types of
failure modes that <link
- linkend="app-initdb-data-checksums"><application>data page
+ linkend="app-initdb-data-checksums"><application>data
checksums</application></link> will fail to catch. These include:
<itemizedlist>
@@ -497,7 +497,7 @@ SET client_min_messages = DEBUG1;
Structural corruption can happen due to faulty storage hardware, or
relation files being overwritten or modified by unrelated software.
This kind of corruption can also be detected with
- <link linkend="app-initdb-data-checksums"><application>data page
+ <link linkend="checksums"><application>data page
checksums</application></link>.
</para>
diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml
index 995d78408e5..afd344b4c06 100644
--- a/doc/src/sgml/ref/initdb.sgml
+++ b/doc/src/sgml/ref/initdb.sgml
@@ -219,6 +219,7 @@ PostgreSQL documentation
failures will be reported in the
<link linkend="monitoring-pg-stat-database-view">
<structname>pg_stat_database</structname></link> view.
+ See <xref linkend="checksums" /> for details.
</para>
</listitem>
</varlistentry>
diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml
index f4bc147b106..66de1ee2f81 100644
--- a/doc/src/sgml/wal.sgml
+++ b/doc/src/sgml/wal.sgml
@@ -196,7 +196,7 @@
Data pages are not currently checksummed by default, though full page images
recorded in WAL records will be protected; see <link
linkend="app-initdb-data-checksums"><application>initdb</application></link>
- for details about enabling data page checksums.
+ for details about enabling data checksums.
</para>
</listitem>
<listitem>
@@ -230,6 +230,53 @@
</para>
</sect1>
+ <sect1 id="checksums">
+ <title>Data Checksums</title>
+ <indexterm>
+ <primary>checksums</primary>
+ </indexterm>
+
+ <para>
+ Data pages are not checksum protected by default, but this can optionally be
+ enabled for a cluster. When enabled, each data page will be assigned a
+ checksum that is updated when the page is written and verified every time
+ the page is read. Only data pages are protected by checksums, internal data
+ structures and temporary files are not.
+ </para>
+
+ <para>
+ Checksums are normally enabled when the cluster is initialized using <link
+ linkend="app-initdb-data-checksums"><application>initdb</application></link>.
+ They can also be enabled or disabled at a later time as an offline
+ operation. Data checksums are enabled or disabled at the full cluster
+ level, and cannot be specified individually for databases or tables.
+ </para>
+
+ <para>
+ The current state of checksums in the cluster can be verified by viewing the
+ value of the read-only configuration variable <xref
+ linkend="guc-data-checksums" /> by issuing the command <command>SHOW
+ data_checksums</command>.
+ </para>
+
+ <para>
+ When attempting to recover from corrupt data it may be necessary to bypass
+ the checksum protection in order to recover data. To do this, temporarily
+ set the configuration parameter <xref linkend="guc-ignore-checksum-failure" />.
+ </para>
+
+ <sect2 id="checksums-offline-enable-disable">
+ <title>Off-line Enabling of Checksums</title>
+
+ <para>
+ The <link linkend="app-pgchecksums"><application>pg_checksums</application></link>
+ application can be used to enable or disable data checksums, as well as
+ verify checksums, on an offline cluster.
+ </para>
+
+ </sect2>
+ </sect1>
+
<sect1 id="wal-intro">
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>