mirror of
https://github.com/postgres/postgres.git
synced 2025-11-09 06:21:09 +03:00
pg_basebackup: Add --slot option
This option specifies a replication slot for WAL streaming (-X stream), so that there can be continuous replication slot use between WAL streaming during the base backup and the start of regular streaming replication. Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
This commit is contained in:
@@ -239,6 +239,7 @@ usage(void)
|
||||
" (in kB/s, or use suffix \"k\" or \"M\")\n"));
|
||||
printf(_(" -R, --write-recovery-conf\n"
|
||||
" write recovery.conf after backup\n"));
|
||||
printf(_(" -S, --slot=SLOTNAME replication slot to use\n"));
|
||||
printf(_(" -T, --tablespace-mapping=OLDDIR=NEWDIR\n"
|
||||
" relocate tablespace in OLDDIR to NEWDIR\n"));
|
||||
printf(_(" -x, --xlog include required WAL files in backup (fetch mode)\n"));
|
||||
@@ -1536,6 +1537,13 @@ GenerateRecoveryConf(PGconn *conn)
|
||||
appendPQExpBuffer(recoveryconfcontents, "primary_conninfo = '%s'\n", escaped);
|
||||
free(escaped);
|
||||
|
||||
if (replication_slot)
|
||||
{
|
||||
escaped = escape_quotes(replication_slot);
|
||||
appendPQExpBuffer(recoveryconfcontents, "primary_slot_name = '%s'\n", replication_slot);
|
||||
free(escaped);
|
||||
}
|
||||
|
||||
if (PQExpBufferBroken(recoveryconfcontents) ||
|
||||
PQExpBufferDataBroken(conninfo_buf))
|
||||
{
|
||||
@@ -1934,6 +1942,7 @@ main(int argc, char **argv)
|
||||
{"checkpoint", required_argument, NULL, 'c'},
|
||||
{"max-rate", required_argument, NULL, 'r'},
|
||||
{"write-recovery-conf", no_argument, NULL, 'R'},
|
||||
{"slot", required_argument, NULL, 'S'},
|
||||
{"tablespace-mapping", required_argument, NULL, 'T'},
|
||||
{"xlog", no_argument, NULL, 'x'},
|
||||
{"xlog-method", required_argument, NULL, 'X'},
|
||||
@@ -1974,7 +1983,7 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
while ((c = getopt_long(argc, argv, "D:F:r:RT:xX:l:zZ:d:c:h:p:U:s:wWvP",
|
||||
while ((c = getopt_long(argc, argv, "D:F:r:RT:xX:l:zZ:d:c:h:p:U:s:S:wWvP",
|
||||
long_options, &option_index)) != -1)
|
||||
{
|
||||
switch (c)
|
||||
@@ -2001,6 +2010,9 @@ main(int argc, char **argv)
|
||||
case 'R':
|
||||
writerecoveryconf = true;
|
||||
break;
|
||||
case 'S':
|
||||
replication_slot = pg_strdup(optarg);
|
||||
break;
|
||||
case 'T':
|
||||
tablespace_list_append(optarg);
|
||||
break;
|
||||
@@ -2165,6 +2177,16 @@ main(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (replication_slot && !streamwal)
|
||||
{
|
||||
fprintf(stderr,
|
||||
_("%s: replication slots can only be used with WAL streaming\n"),
|
||||
progname);
|
||||
fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
|
||||
progname);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (strcmp(xlog_dir, "") != 0)
|
||||
{
|
||||
if (format != 'p')
|
||||
|
||||
Reference in New Issue
Block a user