summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander <magnus@hagander.net>2017-04-01 17:20:05 +0200
committerMagnus Hagander <magnus@hagander.net>2017-04-01 17:27:33 +0200
commitbd34e7f19b404d025d5b36bac42bcfecf2c09bc5 (patch)
tree96b43ef9cf9748ac1bc68c89b6b71a3255a48b21
parentcb366b507995cf8fd17c538a9b4dd35204e80de6 (diff)
Back-patch checkpoint clarification docs and pg_basebackup updates
This backpatches 51e26c9 and 7220c7b, including both documentation updates clarifying the checkpoints at the beginning of base backups and the messages in verbose and progress mdoe of pg_basebackup. Author: Michael Banck Discussion: https://postgr.es/m/21444.1488142764%40sss.pgh.pa.us
-rw-r--r--doc/src/sgml/ref/pg_basebackup.sgml10
-rw-r--r--src/bin/pg_basebackup/pg_basebackup.c11
2 files changed, 20 insertions, 1 deletions
diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml
index 7f1a608bd94..00236d2fb72 100644
--- a/doc/src/sgml/ref/pg_basebackup.sgml
+++ b/doc/src/sgml/ref/pg_basebackup.sgml
@@ -361,7 +361,7 @@ PostgreSQL documentation
<term><option>--checkpoint=<replaceable class="parameter">fast|spread</replaceable></option></term>
<listitem>
<para>
- Sets checkpoint mode to fast or spread (default) (see <xref linkend="backup-lowlevel-base-backup">).
+ Sets checkpoint mode to fast (immediate) or spread (default) (see <xref linkend="backup-lowlevel-base-backup">).
</para>
</listitem>
</varlistentry>
@@ -569,6 +569,14 @@ PostgreSQL documentation
<title>Notes</title>
<para>
+ At the beginning of the backup, a checkpoint needs to be written on the
+ server the backup is taken from. Especially if the option
+ <literal>--checkpoint=fast</literal> is not used, this can take some time
+ during which <application>pg_basebackup</application> will be appear
+ to be idle.
+ </para>
+
+ <para>
The backup will include all files in the data directory and tablespaces,
including the configuration files and any additional files placed in the
directory by third parties. But only regular files and directories are
diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c
index ad0631f5307..2805da5fa7b 100644
--- a/src/bin/pg_basebackup/pg_basebackup.c
+++ b/src/bin/pg_basebackup/pg_basebackup.c
@@ -1655,6 +1655,14 @@ BaseBackup(void)
if (maxrate > 0)
maxrate_clause = psprintf("MAX_RATE %u", maxrate);
+ if (verbose)
+ fprintf(stderr,
+ _("%s: initiating base backup, waiting for checkpoint to complete\n"),
+ progname);
+
+ if (showprogress && !verbose)
+ fprintf(stderr, "waiting for checkpoint\r");
+
basebkp =
psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s",
escaped_label,
@@ -1691,6 +1699,9 @@ BaseBackup(void)
strlcpy(xlogstart, PQgetvalue(res, 0, 0), sizeof(xlogstart));
+ if (verbose)
+ fprintf(stderr, _("%s: checkpoint completed\n"), progname);
+
/*
* 9.3 and later sends the TLI of the starting point. With older servers,
* assume it's the same as the latest timeline reported by