Re: [HACKERS] pg_stop_backup(wait_for_archive := true) on standby server - Mailing list pgsql-hackers
| From | Michael Paquier |
|---|---|
| Subject | Re: [HACKERS] pg_stop_backup(wait_for_archive := true) on standby server |
| Date | |
| Msg-id | CAB7nPqS0PwxBSD_v468XtNooGnc61hLFaMsDKFwOpO70gC9rAg@mail.gmail.com Whole thread Raw |
| In response to | Re: [HACKERS] pg_stop_backup(wait_for_archive := true) on standby server (Masahiko Sawada <sawada.mshk@gmail.com>) |
| Responses |
Re: [HACKERS] pg_stop_backup(wait_for_archive := true) on standby server
|
| List | pgsql-hackers |
On Tue, Jul 11, 2017 at 9:28 AM, Masahiko Sawada <sawada.mshk@gmail.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
anddon'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
pgsql-hackers by date: