mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
Add configuration parameter "repmgr_bindir"
This is to facilitate remote invocation of repmgr when the repmgr binary is located somewhere other than the PostgreSQL binary directory, as it cannot be assumed all package maintainers will install repmgr there. This parameter is optional; if not set (the default), repmgr will fall back to "pg_bindir" (if set). Addresses GitHub #246.
This commit is contained in:
1
HISTORY
1
HISTORY
@@ -2,6 +2,7 @@
|
||||
repmgr: add parameter "shutdown_check_timeout" for use by "standby switchover";
|
||||
GitHub #504 (Ian)
|
||||
repmgr: add "--node-id" option to "repmgr cluster cleanup"; GitHub #493 (Ian)
|
||||
repmgr: add configuration file parameter "repmgr_bindir"; GitHub #246 (Ian)
|
||||
|
||||
4.1.1 2018-09-05
|
||||
logging: explicitly log the text of failed queries as ERRORs to
|
||||
|
||||
@@ -288,6 +288,7 @@ _parse_config(t_configuration_options *options, ItemList *error_list, ItemList *
|
||||
memset(options->data_directory, 0, sizeof(options->data_directory));
|
||||
memset(options->config_directory, 0, sizeof(options->data_directory));
|
||||
memset(options->pg_bindir, 0, sizeof(options->pg_bindir));
|
||||
memset(options->repmgr_bindir, 0, sizeof(options->repmgr_bindir));
|
||||
options->replication_type = REPLICATION_TYPE_PHYSICAL;
|
||||
|
||||
/*-------------
|
||||
@@ -490,6 +491,8 @@ _parse_config(t_configuration_options *options, ItemList *error_list, ItemList *
|
||||
}
|
||||
else if (strcmp(name, "pg_bindir") == 0)
|
||||
strncpy(options->pg_bindir, value, MAXPGPATH);
|
||||
else if (strcmp(name, "repmgr_bindir") == 0)
|
||||
strncpy(options->repmgr_bindir, value, MAXPGPATH);
|
||||
|
||||
else if (strcmp(name, "replication_type") == 0)
|
||||
{
|
||||
|
||||
@@ -75,6 +75,7 @@ typedef struct
|
||||
char data_directory[MAXPGPATH];
|
||||
char config_directory[MAXPGPATH];
|
||||
char pg_bindir[MAXPGPATH];
|
||||
char repmgr_bindir[MAXPGPATH];
|
||||
int replication_type;
|
||||
|
||||
/* log settings */
|
||||
@@ -171,7 +172,7 @@ typedef struct
|
||||
|
||||
#define T_CONFIGURATION_OPTIONS_INITIALIZER { \
|
||||
/* node information */ \
|
||||
UNKNOWN_NODE_ID, "", "", "", "", "", "", REPLICATION_TYPE_PHYSICAL, \
|
||||
UNKNOWN_NODE_ID, "", "", "", "", "", "", "", REPLICATION_TYPE_PHYSICAL, \
|
||||
/* log settings */ \
|
||||
"", "", "", DEFAULT_LOG_STATUS_INTERVAL, \
|
||||
/* standby clone settings */ \
|
||||
|
||||
@@ -37,6 +37,23 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
New parameter <varname>repmgr_bindir</varname> added, to facilitate remote invocation of repmgr
|
||||
when the repmgr binary is located somewhere other than the PostgreSQL binary directory, as it
|
||||
cannot be assumed all package maintainers will install &repmgr; there.
|
||||
</para>
|
||||
<para>
|
||||
This parameter is optional; if not set (the default), &repmgr; will fall back
|
||||
to <option>pg_bindir</option> (if set).
|
||||
</para>
|
||||
<para>
|
||||
(GitHub #246).
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect2>
|
||||
|
||||
@@ -237,13 +237,6 @@
|
||||
server. See sections <xref linkend="configuration"> and <xref linkend="configuration-file">
|
||||
for further details about <filename>repmgr.conf</filename>.
|
||||
</para>
|
||||
<tip>
|
||||
<simpara>
|
||||
For Debian-based distributions we recommend explictly setting
|
||||
<option>pg_bindir</option> to the directory where <command>pg_ctl</command> and other binaries
|
||||
not in the standard path are located. For PostgreSQL 9.6 this would be <filename>/usr/lib/postgresql/9.6/bin/</filename>.
|
||||
</simpara>
|
||||
</tip>
|
||||
|
||||
<note>
|
||||
<para>
|
||||
@@ -262,6 +255,24 @@
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<tip>
|
||||
<simpara>
|
||||
For Debian-based distributions we recommend explictly setting
|
||||
<option>pg_bindir</option> to the directory where <command>pg_ctl</command> and other binaries
|
||||
not in the standard path are located. For PostgreSQL 9.6 this would be <filename>/usr/lib/postgresql/9.6/bin/</filename>.
|
||||
</simpara>
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
<simpara>
|
||||
If your distribution places the &repmgr; binaries in a location other than the
|
||||
PostgreSQL installation directory, specify this with <option>repmgr_bindir</option>
|
||||
to enable &repmgr; to perform operations (e.g.
|
||||
<command><link linkend="repmgr-cluster-crosscheck">repmgr cluster crosscheck</link></command>)
|
||||
on other nodes.
|
||||
</simpara>
|
||||
</tip>
|
||||
|
||||
<para>
|
||||
See the file
|
||||
<ulink url="https://raw.githubusercontent.com/2ndQuadrant/repmgr/master/repmgr.conf.sample">repmgr.conf.sample</>
|
||||
|
||||
@@ -999,7 +999,7 @@ build_cluster_matrix(t_node_matrix_rec ***matrix_rec_dest, int *name_length)
|
||||
*/
|
||||
appendPQExpBuffer(&command,
|
||||
"\"%s -d '%s' ",
|
||||
make_pg_path(progname()),
|
||||
make_repmgr_path(progname()),
|
||||
cell->node_info->conninfo);
|
||||
|
||||
|
||||
@@ -1182,7 +1182,7 @@ build_cluster_crosscheck(t_node_status_cube ***dest_cube, int *name_length)
|
||||
|
||||
appendPQExpBuffer(&command,
|
||||
"%s -d '%s' --node-id=%i ",
|
||||
make_pg_path(progname()),
|
||||
make_repmgr_path(progname()),
|
||||
cell->node_info->conninfo,
|
||||
remote_node_id);
|
||||
|
||||
|
||||
@@ -231,6 +231,7 @@ extern int copy_remote_files(char *host, char *remote_user, char *remote_path,
|
||||
extern void print_error_list(ItemList *error_list, int log_level);
|
||||
|
||||
extern char *make_pg_path(const char *file);
|
||||
extern char *make_repmgr_path(const char *file);
|
||||
|
||||
extern void get_superuser_connection(PGconn **conn, PGconn **superuser_conn, PGconn **privileged_conn);
|
||||
|
||||
|
||||
@@ -2483,6 +2483,22 @@ make_pg_path(const char *file)
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
make_repmgr_path(const char *file)
|
||||
{
|
||||
if (config_file_options.repmgr_bindir[0] != '\0')
|
||||
{
|
||||
maxlen_snprintf(path_buf, "%s%s", config_file_options.repmgr_bindir, file);
|
||||
}
|
||||
else
|
||||
{
|
||||
maxlen_snprintf(path_buf, "%s%s", pg_bindir, file);
|
||||
}
|
||||
|
||||
return path_buf;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
copy_remote_files(char *host, char *remote_user, char *remote_path,
|
||||
char *local_path, bool is_directory, int server_version_num)
|
||||
@@ -2674,9 +2690,8 @@ make_remote_repmgr_path(PQExpBufferData *output_buf, t_node_info *remote_node_re
|
||||
{
|
||||
appendPQExpBuffer(output_buf,
|
||||
"%s -f %s ",
|
||||
make_pg_path(progname()),
|
||||
make_repmgr_path(progname()),
|
||||
remote_node_record->config_file);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -147,7 +147,11 @@
|
||||
# *NOTE* "pg_bindir" is only used when repmgr directly
|
||||
# executes PostgreSQL binaries; any user-defined scripts
|
||||
# *must* be specified with the full path
|
||||
#
|
||||
|
||||
#repmgr_bindir='' # Path to repmgr binary directory (location of the repmgr
|
||||
# binary. Only needed if the repmgr executable is not in
|
||||
# the system $PATH or the path defined in "pg_bindir".
|
||||
|
||||
#use_primary_conninfo_password=false # explicitly set "password" in recovery.conf's
|
||||
# "primary_conninfo" parameter using the value contained
|
||||
# in the environment variable PGPASSWORD
|
||||
|
||||
Reference in New Issue
Block a user