From: Robert Haas <rhaas@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Do not summarize WAL if generated with wal_level=minimal.
Date: Thu, 18 Jul 2024 16:25:51 +0000
Message-ID: <E1sUTx1-0009dA-OO@gemulon.postgresql.org> (raw)
Do not summarize WAL if generated with wal_level=minimal.
To do this, we must include the wal_level in the first WAL record
covered by each summary file; so add wal_level to struct Checkpoint
and the payload of XLOG_CHECKPOINT_REDO and XLOG_END_OF_RECOVERY.
This, in turn, requires bumping XLOG_PAGE_MAGIC and, since the
Checkpoint is also stored in the control file, also
PG_CONTROL_VERSION. It's not great to do that so late in the release
cycle, but the alternative seems to ship v17 without robust
protections against this scenario, which could result in corrupted
incremental backups.
A side effect of this patch is that, when a server with
wal_level=replica is started with summarize_wal=on for the first time,
summarization will no longer begin with the oldest WAL that still
exists in pg_wal, but rather from the first checkpoint after that.
This change should be harmless, because a WAL summary for a partial
checkpoint cycle can never make an incremental backup possible when
it would otherwise not have been.
Report by Fujii Masao. Patch by me. Review and/or testing by Jakub
Wartak and Fujii Masao.
Discussion: http://postgr.es/m/6e30082e-041b-4e31-9633-95a66de76f5d@oss.nttdata.com
Branch
------
REL_17_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/2b5819e2b4d6c69676c61ee799fd9590be2308ce
Modified Files
--------------
doc/src/sgml/config.sgml | 16 +-
doc/src/sgml/func.sgml | 11 ++
src/backend/access/rmgrdesc/xlogdesc.c | 47 +++--
src/backend/access/transam/xlog.c | 8 +-
src/backend/postmaster/walsummarizer.c | 197 +++++++++++++++------
src/bin/pg_combinebackup/meson.build | 1 +
.../pg_combinebackup/t/007_wal_level_minimal.pl | 73 ++++++++
src/include/access/xlog_internal.h | 3 +-
src/include/catalog/pg_control.h | 3 +-
9 files changed, 278 insertions(+), 81 deletions(-)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-committers@postgresql.org
Cc: rhaas@postgresql.org, pgsql-committers@lists.postgresql.org
Subject: Re: pgsql: Do not summarize WAL if generated with wal_level=minimal.
In-Reply-To: <E1sUTx1-0009dA-OO@gemulon.postgresql.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox