1
0
mirror of https://github.com/postgres/postgres.git synced 2025-09-05 02:22:28 +03:00

Add GUC ignore_invalid_pages.

Detection of WAL records having references to invalid pages
during recovery causes PostgreSQL to raise a PANIC-level error,
aborting the recovery. Setting ignore_invalid_pages to on causes
the system to ignore those WAL records (but still report a warning),
and continue recovery. This behavior may cause crashes, data loss,
propagate or hide corruption, or other serious problems.
However, it may allow you to get past the PANIC-level error,
to finish the recovery, and to cause the server to start up.

Author: Fujii Masao
Reviewed-by: Michael Paquier
Discussion: https://www.postgresql.org/message-id/CAHGQGwHCK6f77yeZD4MHOnN+PaTf6XiJfEB+Ce7SksSHjeAWtg@mail.gmail.com
This commit is contained in:
Fujii Masao
2020-01-22 11:56:34 +09:00
parent 79a3efb84d
commit 41c184bc64
3 changed files with 52 additions and 2 deletions

View File

@@ -9950,6 +9950,31 @@ LOG: CleanUpLock: deleting: lock(0xb7acd844) id(24688,24696,0,0,0,1)
</listitem>
</varlistentry>
<varlistentry id="guc-ignore-invalid-pages" xreflabel="ignore_invalid_pages">
<term><varname>ignore_invalid_pages</varname> (<type>boolean</type>)
<indexterm>
<primary><varname>ignore_invalid_pages</varname> configuration parameter</primary>
</indexterm>
</term>
<listitem>
<para>
If set to <literal>off</literal> (the default), detection of
WAL records having references to invalid pages during
recovery causes <productname>PostgreSQL</productname> to
raise a PANIC-level error, aborting the recovery. Setting
<varname>ignore_invalid_pages</varname> to <literal>on</literal>
causes the system to ignore invalid page references in WAL records
(but still report a warning), and continue the recovery.
This behavior may <emphasis>cause crashes, data loss,
propagate or hide corruption, or other serious problems</emphasis>.
However, it may allow you to get past the PANIC-level error,
to finish the recovery, and to cause the server to start up.
The parameter can only be set at server start. It only has effect
during recovery or in standby mode.
</para>
</listitem>
</varlistentry>
<varlistentry id="guc-jit-debugging-support" xreflabel="jit_debugging_support">
<term><varname>jit_debugging_support</varname> (<type>boolean</type>)
<indexterm>