Remove option "--wal-keep-segments"

This is a remnant of the early repmgr days when there were no alternative
mechanisms for ensuring sufficient WAL remains available while cloning a
standby.

The purpose of this setting was to override a check for an (arbitrary)
minimum setting for "wal_keep_segments". As there's no reliable way
of determining a sensible value for this, and improvements in
pg_basebackup mean WALs can be streamed (possibly using a replication
slot) while the backup is in progress, there's no point in keeping
this around.

We will however still emit a warning about setting "wal_keep_segments"
if the configuration doesn't appear to provide any other way of
ensuring WAL is available during/after the cloning process and
"wal_keep_segments" is not set.
This commit is contained in:
Ian Barwick
2017-08-17 14:45:13 +09:00
parent ac64526bd3
commit da24d883e5
4 changed files with 18 additions and 29 deletions

View File

@@ -87,10 +87,22 @@ static CheckStatus parse_node_check_archiver(const char *node_check_output, int
static CheckStatus parse_node_check_replication_lag(const char *node_check_output, int *seconds, int *threshold); static CheckStatus parse_node_check_replication_lag(const char *node_check_output, int *seconds, int *threshold);
/* /*
* do_standby_clone() * STANDBY CLONE
* *
* Event(s): * Event(s):
* - standby_clone * - standby_clone
*
* Parameters:
* --upstream-conninfo
* --no-upstream-connection
* -F/--force
* --dry-run
* -c/--fast-checkpoint
* --copy-external-config-files
* --recovery-min-apply-delay
* --replication-user XXX only required if no upstream record
* --use-recovery-conninfo-password
* --without-barman
*/ */
void void

View File

@@ -22,7 +22,6 @@ typedef struct
bool connection_param_provided; bool connection_param_provided;
bool host_param_provided; bool host_param_provided;
bool limit_provided; bool limit_provided;
bool wal_keep_segments_used;
/* general configuration options */ /* general configuration options */
char config_file[MAXPGPATH]; char config_file[MAXPGPATH];
@@ -68,7 +67,6 @@ typedef struct
char upstream_conninfo[MAXLEN]; char upstream_conninfo[MAXLEN];
int upstream_node_id; int upstream_node_id;
bool use_recovery_conninfo_password; bool use_recovery_conninfo_password;
char wal_keep_segments[MAXLEN];
bool without_barman; bool without_barman;
/* "standby register" options */ /* "standby register" options */
@@ -111,7 +109,7 @@ typedef struct
#define T_RUNTIME_OPTIONS_INITIALIZER { \ #define T_RUNTIME_OPTIONS_INITIALIZER { \
/* configuration metadata */ \ /* configuration metadata */ \
false, false, false, false, false, \ false, false, false, false, \
/* general configuration options */ \ /* general configuration options */ \
"", false, false, "", false, \ "", false, false, "", false, \
/* logging options */ \ /* logging options */ \
@@ -126,7 +124,7 @@ typedef struct
UNKNOWN_NODE_ID, "", "", \ UNKNOWN_NODE_ID, "", "", \
/* "standby clone" options */ \ /* "standby clone" options */ \
false, CONFIG_FILE_SAMEPATH, false, false, false, "", "", "", \ false, CONFIG_FILE_SAMEPATH, false, false, false, "", "", "", \
NO_UPSTREAM_NODE, false, "", false, \ NO_UPSTREAM_NODE, false, false, \
/* "standby register" options */ \ /* "standby register" options */ \
false, 0, \ false, 0, \
/* "standby switchover" options */ \ /* "standby switchover" options */ \

View File

@@ -334,15 +334,6 @@ main(int argc, char **argv)
} }
break; break;
/* -w/--wal-keep-segments */
case 'w':
(void) repmgr_atoi(optarg, "-w/--wal-keep-segments", &cli_errors, false);
strncpy(runtime_options.wal_keep_segments,
optarg,
MAXLEN);
runtime_options.wal_keep_segments_used = true;
break;
/* --no-upstream-connection */ /* --no-upstream-connection */
case OPT_NO_UPSTREAM_CONNECTION: case OPT_NO_UPSTREAM_CONNECTION:
runtime_options.no_upstream_connection = true; runtime_options.no_upstream_connection = true;
@@ -2160,23 +2151,13 @@ check_upstream_config(PGconn *conn, int server_version_num, bool exit_on_error)
else if (mode != barman) else if (mode != barman)
{ {
bool check_wal_keep_segments = false; bool check_wal_keep_segments = false;
char min_wal_keep_segments[MAXLEN] = "1";
/*
* -w/--wal-keep-segments was supplied - check against that value
*/
if (runtime_options.wal_keep_segments_used == true)
{
check_wal_keep_segments = true;
strncpy(min_wal_keep_segments, runtime_options.wal_keep_segments, MAXLEN);
}
/* /*
* A non-zero `wal_keep_segments` value will almost certainly be required * A non-zero `wal_keep_segments` value will almost certainly be required
* if pg_basebackup is being used with --xlog-method=fetch, * if pg_basebackup is being used with --xlog-method=fetch,
* *and* no restore command has been specified * *and* no restore command has been specified
*/ */
else if (xlog_stream == false if (xlog_stream == false
&& strcmp(config_file_options.restore_command, "") == 0) && strcmp(config_file_options.restore_command, "") == 0)
{ {
check_wal_keep_segments = true; check_wal_keep_segments = true;
@@ -2184,14 +2165,13 @@ check_upstream_config(PGconn *conn, int server_version_num, bool exit_on_error)
if (check_wal_keep_segments == true) if (check_wal_keep_segments == true)
{ {
i = guc_set_typed(conn, "wal_keep_segments", ">=", min_wal_keep_segments, "integer"); i = guc_set_typed(conn, "wal_keep_segments", ">", "0", "integer");
if (i == 0 || i == -1) if (i == 0 || i == -1)
{ {
if (i == 0) if (i == 0)
{ {
log_error(_("parameter \"wal_keep_segments\" on the upstream server must be be set to %s or greater"), log_error(_("parameter \"wal_keep_segments\" on the upstream server must be be set to a non-zero value"));
min_wal_keep_segments);
log_hint(_("Choose a value sufficiently high enough to retain enough WAL " log_hint(_("Choose a value sufficiently high enough to retain enough WAL "
"until the standby has been cloned and started.\n " "until the standby has been cloned and started.\n "
"Alternatively set up WAL archiving using e.g. PgBarman and configure " "Alternatively set up WAL archiving using e.g. PgBarman and configure "

View File

@@ -118,7 +118,6 @@ static struct option long_options[] =
/* "standby clone" options */ /* "standby clone" options */
{"copy-external-config-files", optional_argument, NULL, OPT_COPY_EXTERNAL_CONFIG_FILES}, {"copy-external-config-files", optional_argument, NULL, OPT_COPY_EXTERNAL_CONFIG_FILES},
{"fast-checkpoint", no_argument, NULL, 'c'}, {"fast-checkpoint", no_argument, NULL, 'c'},
{"wal-keep-segments", required_argument, NULL, 'w'},
{"no-upstream-connection", no_argument, NULL, OPT_NO_UPSTREAM_CONNECTION}, {"no-upstream-connection", no_argument, NULL, OPT_NO_UPSTREAM_CONNECTION},
{"recovery-min-apply-delay", required_argument, NULL, OPT_RECOVERY_MIN_APPLY_DELAY}, {"recovery-min-apply-delay", required_argument, NULL, OPT_RECOVERY_MIN_APPLY_DELAY},
{"replication-user", required_argument, NULL, OPT_REPLICATION_USER}, {"replication-user", required_argument, NULL, OPT_REPLICATION_USER},