From: | Michael Paquier <michael(at)paquier(dot)xyz> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Add -c/--restore-target-wal to pg_rewind |
Date: | 2020-04-01 02:13:11 |
Message-ID: | E1jJSsR-0006lO-Ov@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Add -c/--restore-target-wal to pg_rewind
pg_rewind needs to copy from the source cluster to the target cluster a
set of relation blocks changed from the previous checkpoint where WAL
forked up to the end of WAL on the target. Building this list of
relation blocks requires a range of WAL segments that may not be present
anymore on the target's pg_wal, causing pg_rewind to fail. It is
possible to work around this issue by copying manually the WAL segments
needed but this may lead to some extra and actually useless work.
This commit introduces a new option allowing pg_rewind to use a
restore_command while doing the rewind by grabbing the parameter value
of restore_command from the target cluster configuration. This allows
the rewind operation to be more reliable, so as only the WAL segments
needed by the rewind are restored from the archives.
In order to be able to do that, a new routine is added to src/common/ to
allow frontend tools to restore files from archives using an
already-built restore command. This version is more simple than the
backend equivalent as there is no need to handle the non-recovery case.
Author: Alexey Kondratov
Reviewed-by: Andrey Borodin, Andres Freund, Alvaro Herrera, Alexander
Korotkov, Michael Paquier
Discussion: https://postgr.es/m/a3acff50-5a0d-9a2c-b3b2-ee36168955c1@postgrespro.ru
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/a7e8ece41cf7a96d8a9c4c037cdfef304d950831
Modified Files
--------------
doc/src/sgml/ref/pg_rewind.sgml | 28 +++++++--
src/bin/pg_rewind/parsexlog.c | 33 ++++++++--
src/bin/pg_rewind/pg_rewind.c | 87 ++++++++++++++++++++++++--
src/bin/pg_rewind/pg_rewind.h | 6 +-
src/bin/pg_rewind/t/001_basic.pl | 3 +-
src/bin/pg_rewind/t/RewindTest.pm | 70 +++++++++++++++++++--
src/common/Makefile | 1 +
src/common/exec.c | 3 +-
src/common/fe_archive.c | 128 ++++++++++++++++++++++++++++++++++++++
src/include/common/fe_archive.h | 21 +++++++
src/include/port.h | 3 +-
src/tools/msvc/Mkvcbuild.pm | 4 +-
12 files changed, 360 insertions(+), 27 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2020-04-01 02:26:15 | pgsql: makefile: use proper linker flags for C++ compiles |
Previous Message | Tom Lane | 2020-04-01 00:40:59 | Re: pgsql: Attempt to fix unstable regression tests, take 2 |