aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2018-04-09 19:02:42 +0200
committerMagnus Hagander <magnus@hagander.net>2018-04-09 19:03:42 +0200
commita228cc13aeabff308d6dfc98a1015865f5393fce (patch)
tree4704837fb075ccf7c8e5ecc10f341e527ed0e16d /doc/src
parent03c11796a95cc20a4559a103019d4d22a116a13c (diff)
downloadpostgresql-a228cc13aeabff308d6dfc98a1015865f5393fce.tar.gz
postgresql-a228cc13aeabff308d6dfc98a1015865f5393fce.zip
Revert "Allow on-line enabling and disabling of data checksums"
This reverts the backend sides of commit 1fde38beaa0c3e66c340efc7cc0dc272d6254bb0. I have, at least for now, left the pg_verify_checksums tool in place, as this tool can be very valuable without the rest of the patch as well, and since it's a read-only tool that only runs when the cluster is down it should be a lot safer.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/func.sgml65
-rw-r--r--doc/src/sgml/ref/initdb.sgml6
-rw-r--r--doc/src/sgml/reference.sgml1
-rw-r--r--doc/src/sgml/wal.sgml81
4 files changed, 3 insertions, 150 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 3bf21477adb..53a40ddeecf 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -19566,71 +19566,6 @@ postgres=# SELECT * FROM pg_walfile_name_offset(pg_stop_backup());
</sect2>
- <sect2 id="functions-admin-checksum">
- <title>Data Checksum Functions</title>
-
- <para>
- The functions shown in <xref linkend="functions-checksums-table" /> can
- be used to enable or disable data checksums in a running cluster.
- See <xref linkend="checksums" /> for details.
- </para>
-
- <table id="functions-checksums-table">
- <title>Checksum <acronym>SQL</acronym> Functions</title>
- <tgroup cols="3">
- <thead>
- <row>
- <entry>Function</entry>
- <entry>Return Type</entry>
- <entry>Description</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>
- <indexterm>
- <primary>pg_enable_data_checksums</primary>
- </indexterm>
- <literal><function>pg_enable_data_checksums(<optional><parameter>cost_delay</parameter> <type>int</type>, <parameter>cost_limit</parameter> <type>int</type></optional>)</function></literal>
- </entry>
- <entry>
- void
- </entry>
- <entry>
- <para>
- Initiates data checksums for the cluster. This will switch the data checksums mode
- to <literal>in progress</literal> and start a background worker that will process
- all data in the database and enable checksums for it. When all data pages have had
- checksums enabled, the cluster will automatically switch to checksums
- <literal>on</literal>.
- </para>
- <para>
- If <parameter>cost_delay</parameter> and <parameter>cost_limit</parameter> are
- specified, the speed of the process is throttled using the same principles as
- <link linkend="runtime-config-resource-vacuum-cost">Cost-based Vacuum Delay</link>.
- </para>
- </entry>
- </row>
- <row>
- <entry>
- <indexterm>
- <primary>pg_disable_data_checksums</primary>
- </indexterm>
- <literal><function>pg_disable_data_checksums()</function></literal>
- </entry>
- <entry>
- void
- </entry>
- <entry>
- Disables data checksums for the cluster.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
-
- </sect2>
-
<sect2 id="functions-admin-dbobject">
<title>Database Object Management Functions</title>
diff --git a/doc/src/sgml/ref/initdb.sgml b/doc/src/sgml/ref/initdb.sgml
index 10a8a86a030..feefd9a41e0 100644
--- a/doc/src/sgml/ref/initdb.sgml
+++ b/doc/src/sgml/ref/initdb.sgml
@@ -214,9 +214,9 @@ PostgreSQL documentation
<para>
Use checksums on data pages to help detect corruption by the
I/O system that would otherwise be silent. Enabling checksums
- may incur a noticeable performance penalty. If set, checksums
- are calculated for all objects, in all databases. See
- <xref linkend="checksums" /> for details.
+ may incur a noticeable performance penalty. This option can only
+ be set during initialization, and cannot be changed later. If
+ set, checksums are calculated for all objects, in all databases.
</para>
</listitem>
</varlistentry>
diff --git a/doc/src/sgml/reference.sgml b/doc/src/sgml/reference.sgml
index 78c214f1b08..ef2270c4673 100644
--- a/doc/src/sgml/reference.sgml
+++ b/doc/src/sgml/reference.sgml
@@ -284,7 +284,6 @@
&pgtestfsync;
&pgtesttiming;
&pgupgrade;
- &pgVerifyChecksums;
&pgwaldump;
&postgres;
&postmaster;
diff --git a/doc/src/sgml/wal.sgml b/doc/src/sgml/wal.sgml
index 6249cb41361..f4bc2d4161e 100644
--- a/doc/src/sgml/wal.sgml
+++ b/doc/src/sgml/wal.sgml
@@ -230,87 +230,6 @@
</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 runtime. In all cases, 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-enable-disable">
- <title>On-line enabling of checksums</title>
-
- <para>
- Checksums can be enabled or disabled online, by calling the appropriate
- <link linkend="functions-admin-checksum">functions</link>.
- Disabling of checksums takes effect immediately when the function is called.
- </para>
-
- <para>
- Enabling checksums will put the cluster in <literal>inprogress</literal> mode.
- During this time, checksums will be written but not verified. In addition to
- this, a background worker process is started that enables checksums on all
- existing data in the cluster. Once this worker has completed processing all
- databases in the cluster, the checksum mode will automatically switch to
- <literal>on</literal>.
- </para>
-
- <para>
- The process will initially wait for all open transactions to finish before
- it starts, so that it can be certain that there are no tables that have been
- created inside a transaction that has not committed yet and thus would not
- be visible to the process enabling checksums. It will also, for each database,
- wait for all pre-existing temporary tables to get removed before it finishes.
- If long-lived temporary tables are used in the application it may be necessary
- to terminate these application connections to allow the process to complete.
- Information about open transactions and connections with temporary tables is
- written to log.
- </para>
-
- <para>
- If the cluster is stopped while in <literal>inprogress</literal> mode, for
- any reason, then this process must be restarted manually. To do this,
- re-execute the function <function>pg_enable_data_checksums()</function>
- once the cluster has been restarted. It is not possible to resume the work,
- the process has to start over and re-process the cluster.
- </para>
-
- <note>
- <para>
- Enabling checksums can cause significant I/O to the system, as most of the
- database pages will need to be rewritten, and will be written both to the
- data files and the WAL.
- </para>
- </note>
-
- </sect2>
- </sect1>
-
<sect1 id="wal-intro">
<title>Write-Ahead Logging (<acronym>WAL</acronym>)</title>