Re: pg_stop_backup(wait_for_archive := true) on standby server

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Cc: Stephen Frost <sfrost(at)snowman(dot)net>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Magnus Hagander <magnus(at)hagander(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: pg_stop_backup(wait_for_archive := true) on standby server
Date: 2017-07-12 08:06:47
Message-ID: CAB7nPqS0PwxBSD_v468XtNooGnc61hLFaMsDKFwOpO70gC9rAg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jul 11, 2017 at 9:28 AM, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> Attached updated version patch. Please review it.

Cool, thanks.

+ useless. If the second parameter <parameter>wait_for_archive</> is true and
+ the backup is taken on a standby, <function>pg_stop_backup</> waits for WAL
+ to archived when <varname>archive_mode</> is <literal>always</>. Enforcing
+ manually a WAL segment swtich to happen with for example
1) "waits for WAL to BE archived".
2) s/swtich/switch

+ to <literal>false</> will control the wait time, thought all the
WAL segments
s/thought/though/

/*
* During recovery, since we don't use the end-of-backup WAL
* record and don't write the backup history file, the
* starting WAL location doesn't need to be unique.
This means
* that two base backups started at the same time
might use
* the same checkpoint as starting locations.
*/
This comment in xlog.c needs an update. Two base backups started at
the same can generate a backup history file with the same offset, aka
same file name. I don't think that it matters much for this file
honestly. I think that this would become meaningful once such files
play a more important role, in which case having a unique identifier
would be way more interesting, but this day has IMO not come yet.
Other thoughts are welcome.

if (waitforarchive && XLogArchivingActive())
{
+ /* Don't wait if WAL archiving not enabled always in recovery */
+ if (backup_started_in_recovery && !XLogArchivingAlways())
+ return stoppoint;
+
This has the smell of breakage waiting to happen, I think that we
should have just one single return point, which updates as well the
stop TLI at the end of the routine. This can just be a single
condition.

+ if (stoptli_p)
+ *stoptli_p = stoptli;
+
Not sure there is any point to move that around, on top of previous comment.

+ errhint("Backup has been taken from a
standby, check if the WAL segment "
+ "needed for this backup have been
completed, in which case a "
+ "foreced segment switch may can
be needed on the primary. "
+ "If a segment swtich has already
happend check that your "
+ "archive_command is executing properly."
+ "pg_stop_backup can be canceled
safely, but the database backup "
+ "will not be usable without all
the WAL segments.")));
Some comments here:
1) s/foreced/forced/
2) s/may can/may/
3) s/swtich/switch/
4) s/happend/happened/
5) "Backup has been taken from a standby" should be a single sentence.

This is beginning to shape.

Thanks,
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Langote 2017-07-12 08:07:35 Re: New partitioning - some feedback
Previous Message Amit Kapila 2017-07-12 05:25:27 Re: why not parallel seq scan for slow functions