Compare commits

..

30 Commits

Author SHA1 Message Date
Ian Barwick
922b8de46b doc: link to main documentation section about RemoveIPC 2021-07-26 11:05:49 +09:00
Ian Barwick
92cd8c30b5 doc: link to service commands section from switchover docs 2021-07-26 09:48:02 +09:00
Ian Barwick
fa234919fb doc: document pg_bindir setting
Per suggestion in GitHub #705.
2021-07-20 13:41:00 +09:00
Ian Barwick
03c5220e87 doc: link to sample configuration file
Unfortunately it hasn't been possible yet to include all available
configuration items in the main documentation, but we should at least
make it easier to find the full list.
2021-07-20 13:40:57 +09:00
Ian Barwick
65bd0878fa doc: update release notes 2021-07-01 13:42:30 +09:00
Ian Barwick
f1592f009a repmgrd: ensure short option "-s" is accepted
The long option --show-pid-file was fine.
2021-07-01 13:33:31 +09:00
Ian Barwick
490e51fd7b Remove reference to PostgreSQL 9.3 in --help output
It is not supported by repmgr 5.2 and later.
2021-07-01 13:33:15 +09:00
Ian Barwick
f5c555a7f5 Fix incorrect comment 2021-07-01 13:33:03 +09:00
Ian Barwick
de51df9759 node rejoin: emit rejoin target note information as NOTICE
As it's possible to specify the connection information for any available
node, but currently not possible to rejoin to a node other than the
primary, explicitly mention what the rejoin target will be.
2021-07-01 13:32:13 +09:00
Ian Barwick
b094d7b407 standby clone: set "slot_name" in node record if required
If executing "repmgr standby clone --replication-conf-only" on a node
which was set up without replication slots, but the repmgr configuration
was since changed to "use_replication_slots=1", repmgr will attempt to
create the replication slot. This will however fail if "slot_name"
is not set in the node's record, so have repmgr set the slot_name in
this case.

It might be preferable to preemptively create the slot name for each
node when configuring the cluster, however this would be a behavioural
change which would be better off in a major release (for example, it's
conceivable a user runs sanity checks on the node records and expects
to find the slot names empty if replication slots are not in use).
2021-07-01 13:11:11 +09:00
Ian Barwick
44cdb7d001 doc: clarify "connection_check_type='query'" 2021-03-03 13:07:37 +09:00
Ian Barwick
f5f8db8ca1 docs: update repmgr.conf.sample
Fix description for connection_check_type='connection'.
2021-03-02 11:47:24 +09:00
Ian Barwick
0c568da254 docs: update README
Note latest version number.
2021-03-02 11:22:39 +09:00
Ian Barwick
46042298f7 doc: update README
Fix and update broken link.
2021-03-02 11:15:58 +09:00
Ian Barwick
01e89c3ca9 doc: update GitHub links to new location 2021-03-02 10:22:36 +09:00
Ian Barwick
7b97a8f04d doc: remove generated .fo files 2021-03-02 10:22:23 +09:00
Ian Barwick
c362d6d03f Change copyright information to "EnterpriseDB Corporation"
RM20485.
2021-03-02 10:22:17 +09:00
Ian Barwick
75a2e2a8b4 doc: fix XML markup
An incorrect column count was causing PDF builds to fail.
2021-02-19 20:39:25 +09:00
Ian Barwick
65d59db6d1 doc: update repmgr.conf.sample 2021-01-14 15:28:04 +09:00
Ian Barwick
10cd15bedc doc: "repmgr node rejoin" clarifications
- make it clearer a node can only be joined to the primary
- update patch status
2021-01-06 12:37:14 +09:00
Ian Barwick
cae2255d58 Update copyright notices to 2021 2021-01-04 12:57:26 +09:00
Ian Barwick
bc0bc2696e Add missing PQconninfoFree() call 2020-12-24 18:07:50 +09:00
Ian Barwick
7db9afdc10 repmgrd: edit code comment for clarity 2020-12-22 13:59:29 +09:00
Ian Barwick
5eb8bccd33 doc: minor grammar tweak 2020-12-22 13:59:16 +09:00
Josh Soref
4760c11937 doc: various spelling fixes
Via GitHub #687.
2020-12-22 13:48:29 +09:00
Josh Soref
cb6501aa48 Fix various typos in code comments.
Via GitHub #687.
2020-12-22 13:48:25 +09:00
Josh Soref
6100007a32 repmgr: various log ouput typo fixes
Via GitHub #687.
2020-12-22 13:21:20 +09:00
Josh Soref
a415d85530 repmgr: fix typo in "repmgr node --help" output
Via GitHub #687.
2020-12-22 13:21:15 +09:00
Ian Barwick
45a9a784e3 Improve HINT about upgrading the repmgr extension
Per feedback in GitHub #685.
2020-12-15 08:42:41 +09:00
Ian Barwick
8ce212327c standby switchover: remove extraneous space in log message 2020-12-15 08:42:36 +09:00
73 changed files with 335 additions and 159 deletions

View File

@@ -2,7 +2,7 @@ License and Contributions
========================= =========================
`repmgr` is licensed under the GPL v3. All of its code and documentation is `repmgr` is licensed under the GPL v3. All of its code and documentation is
Copyright 2010-2020, 2ndQuadrant Limited. See the files COPYRIGHT and LICENSE for Copyright 2010-2021, EnterpriseDB Corporation. See the files COPYRIGHT and LICENSE for
details. details.
The development of repmgr has primarily been sponsored by 2ndQuadrant customers. The development of repmgr has primarily been sponsored by 2ndQuadrant customers.
@@ -12,10 +12,10 @@ which has received funding from the European Union's Seventh Framework Programme
(FP7/2007-2013) under grant agreement 258862. (FP7/2007-2013) under grant agreement 258862.
Contributions to `repmgr` are welcome, and will be listed in the file `CREDITS`. Contributions to `repmgr` are welcome, and will be listed in the file `CREDITS`.
2ndQuadrant Limited requires that any contributions provide a copyright EnterpriseDB Corporation requires that any contributions provide a copyright
assignment and a disclaimer of any work-for-hire ownership claims from the assignment and a disclaimer of any work-for-hire ownership claims from the
employer of the developer. This lets us make sure that all of the repmgr employer of the developer. This lets us make sure that all of the repmgr
distribution remains free code. Please contact info@2ndQuadrant.com for a distribution remains free code. Please contact info@enterprise.com for a
copy of the relevant Copyright Assignment Form. copy of the relevant Copyright Assignment Form.
Code style Code style

View File

@@ -1,4 +1,4 @@
Copyright (c) 2010-2020, 2ndQuadrant Limited Copyright (c) 2010-2021, EnterpriseDB Corporation
All rights reserved. All rights reserved.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify

2
FAQ.md
View File

@@ -5,6 +5,6 @@ The repmgr 4 FAQ is located here: [repmgr FAQ (Frequently Asked Questions)](http
The repmgr 3.x FAQ can be found here: The repmgr 3.x FAQ can be found here:
https://github.com/2ndQuadrant/repmgr/blob/REL3_3_STABLE/FAQ.md https://github.com/EnterpriseDB/repmgr/blob/REL3_3_STABLE/FAQ.md
Note that repmgr 3.x is no longer supported. Note that repmgr 3.x is no longer supported.

View File

@@ -1,3 +1,8 @@
5.2.2. 2021-??-??
standby clone: set "slot_name" in node record if required (Ian)
node rejoin: emit rejoin target note information as NOTICE (Ian)
repmgrd: ensure short option "-s" is accepted (Ian)
5.2.1 2020-12-07 5.2.1 2020-12-07
config: fix parsing of "replication_type"; GitHub #672 (Ian) config: fix parsing of "replication_type"; GitHub #672 (Ian)
standby clone: handle missing "postgresql.auto.conf" (Ian) standby clone: handle missing "postgresql.auto.conf" (Ian)
@@ -43,7 +48,7 @@
repmgr: ensure postgresql.auto.conf is created with correct permissions (Ian) repmgr: ensure postgresql.auto.conf is created with correct permissions (Ian)
repmgr: minimize requirement to check upstream data directory location repmgr: minimize requirement to check upstream data directory location
during "standby clone" (Ian) during "standby clone" (Ian)
repmgr: warn about missing pg_rewind prerequisites when excuting repmgr: warn about missing pg_rewind prerequisites when executing
"standby clone" (Ian) "standby clone" (Ian)
repmgr: add --upstream option to "node check" repmgr: add --upstream option to "node check"
repmgr: report error code on follow/rejoin failure due to non-available repmgr: report error code on follow/rejoin failure due to non-available

View File

@@ -7,10 +7,10 @@ replication capabilities with utilities to set up standby servers, monitor
replication, and perform administrative tasks such as failover or switchover replication, and perform administrative tasks such as failover or switchover
operations. operations.
The most recent `repmgr` version (5.2.0) supports all PostgreSQL versions from The most recent `repmgr` version (5.2.1) supports all PostgreSQL versions from
9.5 to 13. PostgreSQL 9.4 is also supported, with some restrictions. 9.5 to 13. PostgreSQL 9.4 is also supported, with some restrictions.
`repmgr` is distributed under the GNU GPL 3 and maintained by 2ndQuadrant. `repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB.
Documentation Documentation
------------- -------------
@@ -21,7 +21,7 @@ The full `repmgr` documentation is available here:
The old `README` file for `repmgr` 3.x is available here: The old `README` file for `repmgr` 3.x is available here:
> https://github.com/2ndQuadrant/repmgr/blob/REL3_3_STABLE/README.md > https://github.com/EnterpriseDB/repmgr/blob/REL3_3_STABLE/README.md
Note that the `repmgr` 3.x series is no longer supported and contains known bugs; Note that the `repmgr` 3.x series is no longer supported and contains known bugs;
please upgrade to the [current repmgr version](https://repmgr.org/docs/current/appendix-release-notes.html) please upgrade to the [current repmgr version](https://repmgr.org/docs/current/appendix-release-notes.html)
@@ -55,11 +55,11 @@ Directories
Support and Assistance Support and Assistance
---------------------- ----------------------
2ndQuadrant provides 24x7 production support for `repmgr`, including EnterpriseDB provides 24x7 production support for `repmgr`, including
configuration assistance, installation verification and training for configuration assistance, installation verification and training for
running a robust replication cluster. For further details see: running a robust replication cluster. For further details see:
* https://2ndquadrant.com/en/support/ * [EDB Support Services](https://www.enterprisedb.com/support/postgresql-support-overview-get-the-most-out-of-postgresql)
There is a mailing list/forum to discuss contributions or issues: There is a mailing list/forum to discuss contributions or issues:
@@ -69,21 +69,12 @@ The IRC channel #repmgr is registered with freenode.
Please report bugs and other issues to: Please report bugs and other issues to:
* https://github.com/2ndQuadrant/repmgr * https://github.com/EnterpriseDB/repmgr
Further information is available at https://repmgr.org/ Further information is available at https://repmgr.org/
We'd love to hear from you about how you use repmgr. Case studies and We'd love to hear from you about how you use repmgr. Case studies and
news are always welcome. Send us an email at info@2ndQuadrant.com, or news are always welcome.
send a postcard to
repmgr
c/o 2ndQuadrant
7200 The Quorum
Oxford Business Park North
Oxford
OX4 2JZ
United Kingdom
Thanks from the repmgr core team. Thanks from the repmgr core team.

View File

@@ -1,7 +1,7 @@
TODO TODO
==== ====
This file contains a list of improvements which are desireable and/or have This file contains a list of improvements which are desirable and/or have
been requested, and which we aim to address/implement when time and resources been requested, and which we aim to address/implement when time and resources
permit. permit.
@@ -17,4 +17,4 @@ repmgrd nodes to prevent unintended failover; this is obviously inconvenient.
We'll need to implement some way of notifying each repmgrd to suspend automatic We'll need to implement some way of notifying each repmgrd to suspend automatic
failover until further notice. failover until further notice.
Requested in GitHub #410 ( https://github.com/2ndQuadrant/repmgr/issues/410 ) Requested in GitHub #410 ( https://github.com/EnterpriseDB/repmgr/issues/410 )

View File

@@ -6,7 +6,7 @@
* supported PostgreSQL versions. They're unlikely to change but * supported PostgreSQL versions. They're unlikely to change but
* it would be worth keeping an eye on them for any fixes/improvements. * it would be worth keeping an eye on them for any fixes/improvements.
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California

View File

@@ -1,6 +1,6 @@
/* /*
* compat.h * compat.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California

View File

@@ -1,7 +1,7 @@
/* /*
* configdata.c - contains structs with parsed configuration data * configdata.c - contains structs with parsed configuration data
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* configfile.c - parse repmgr.conf and other configuration-related functionality * configfile.c - parse repmgr.conf and other configuration-related functionality
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -1889,7 +1889,7 @@ modify_auto_conf(const char *data_dir, KeyValueList *items)
/* /*
* Note: durable_rename() is not exposed to frontend code before Pg 10. * Note: durable_rename() is not exposed to frontend code before Pg 10.
* We only really need to be modifying postgresql.auto.conf from Pg 12, * We only really need to be modifying postgresql.auto.conf from Pg 12,
* but provide backwards compatibitilty for Pg 9.6 and earlier for the * but provide backwards compatibility for Pg 9.6 and earlier for the
* (unlikely) event that a repmgr built against one of those versions * (unlikely) event that a repmgr built against one of those versions
* is being used against Pg 12 and later. * is being used against Pg 12 and later.
*/ */

View File

@@ -1,7 +1,7 @@
/* /*
* configfile.h * configfile.h
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@@ -249,7 +249,7 @@ typedef struct
/* /*
* undocumented settings * undocumented settings
* *
* These settings are for testing or experimential features * These settings are for testing or experimental features
* and may be changed without notice. * and may be changed without notice.
*/ */

4
configure vendored
View File

@@ -11,7 +11,7 @@
# This configure script is free software; the Free Software Foundation # This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it. # gives unlimited permission to copy, distribute and modify it.
# #
# Copyright (c) 2010-2020, 2ndQuadrant Ltd. # Copyright (c) 2010-2021, EnterpriseDB Corporation
## -------------------- ## ## -------------------- ##
## M4sh Initialization. ## ## M4sh Initialization. ##
## -------------------- ## ## -------------------- ##
@@ -1323,7 +1323,7 @@ Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it. gives unlimited permission to copy, distribute and modify it.
Copyright (c) 2010-2020, 2ndQuadrant Ltd. Copyright (c) 2010-2021, EnterpriseDB Corporation
_ACEOF _ACEOF
exit exit
fi fi

View File

@@ -1,6 +1,6 @@
AC_INIT([repmgr], [5.2.1], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/]) AC_INIT([repmgr], [5.2.1], [repmgr@googlegroups.com], [repmgr], [https://repmgr.org/])
AC_COPYRIGHT([Copyright (c) 2010-2020, 2ndQuadrant Ltd.]) AC_COPYRIGHT([Copyright (c) 2010-2021, EnterpriseDB Corporation])
AC_CONFIG_HEADER(config.h) AC_CONFIG_HEADER(config.h)

View File

@@ -2,11 +2,11 @@
* controldata.c - functions for reading the pg_control file * controldata.c - functions for reading the pg_control file
* *
* The functions provided here enable repmgr to read a pg_control file * The functions provided here enable repmgr to read a pg_control file
* in a version-indepent way, even if the PostgreSQL instance is not * in a version-independent way, even if the PostgreSQL instance is not
* running. For that reason we can't use on the pg_control_*() functions * running. For that reason we can't use on the pg_control_*() functions
* provided in PostgreSQL 9.6 and later. * provided in PostgreSQL 9.6 and later.
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California

View File

@@ -1,6 +1,6 @@
/* /*
* controldata.h * controldata.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California

View File

@@ -1,7 +1,7 @@
/* /*
* dbutils.c - Database connection/management functions * dbutils.c - Database connection/management functions
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@@ -730,6 +730,8 @@ validate_conninfo_string(const char *conninfo_str, char **errmsg)
if (connOptions == NULL) if (connOptions == NULL)
return false; return false;
PQconninfoFree(connOptions);
return true; return true;
} }
@@ -4825,7 +4827,7 @@ cancel_query(PGconn *conn, int timeout)
* Wait until current query finishes, ignoring any results. * Wait until current query finishes, ignoring any results.
* Usually this will be an async query or query cancellation. * Usually this will be an async query or query cancellation.
* *
* Returns 1 for success; 0 if any error ocurred; -1 if timeout reached. * Returns 1 for success; 0 if any error occurred; -1 if timeout reached.
*/ */
int int
wait_connection_availability(PGconn *conn, int timeout) wait_connection_availability(PGconn *conn, int timeout)

View File

@@ -1,7 +1,7 @@
/* /*
* dbutils.h * dbutils.h
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* dirmod.c * dirmod.c
* directory handling functions * directory handling functions
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -205,7 +205,7 @@ mkdir_p(char *path, mode_t omode)
/* /*
* POSIX 1003.2: For each dir operand that does not name an * POSIX 1003.2: For each dir operand that does not name an
* existing directory, effects equivalent to those caused by the * existing directory, effects equivalent to those caused by the
* following command shall occcur: * following command shall occur:
* *
* mkdir -p -m $(umask -S),u+wx $(dirname dir) && mkdir [-m mode] * mkdir -p -m $(umask -S),u+wx $(dirname dir) && mkdir [-m mode]
* dir * dir
@@ -289,7 +289,7 @@ is_pg_running(const char *path)
{ {
/* /*
* No PID file - PostgreSQL shouldn't be running. From 9.3 (the * No PID file - PostgreSQL shouldn't be running. From 9.3 (the
* earliesty version we care about) removal of the PID file will * earliest version we care about) removal of the PID file will
* cause the postmaster to shut down, so it's highly unlikely * cause the postmaster to shut down, so it's highly unlikely
* that PostgreSQL will still be running. * that PostgreSQL will still be running.
*/ */

View File

@@ -1,6 +1,6 @@
/* /*
* dirutil.h * dirutil.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -95,6 +95,7 @@ clean:
rm -f repmgr.html rm -f repmgr.html
rm -f repmgr-A4.pdf rm -f repmgr-A4.pdf
rm -f repmgr-US.pdf rm -f repmgr-US.pdf
rm -f *.fo
rm -f html/* rm -f html/*
maintainer-clean: maintainer-clean:

View File

@@ -62,7 +62,7 @@
<tip> <tip>
<para> <para>
2ndQuadrant's recommended configuration is to configure Our recommended configuration is to configure
<ulink url="https://www.pgbarman.org/">Barman</ulink> as a fallback <ulink url="https://www.pgbarman.org/">Barman</ulink> as a fallback
source of WAL files, rather than maintain replication slots for source of WAL files, rather than maintain replication slots for
each standby. See also: <link linkend="cloning-from-barman-restore-command">Using Barman as a WAL file source</link>. each standby. See also: <link linkend="cloning-from-barman-restore-command">Using Barman as a WAL file source</link>.
@@ -127,7 +127,7 @@
filesystem layouts. filesystem layouts.
</para> </para>
<para> <para>
Either use PostgreSQL packages provided by the community or 2ndQuadrant; if this Either use PostgreSQL packages provided by the community or EnterpriseDB; if this
is not possible, contact your vendor for assistance. is not possible, contact your vendor for assistance.
</para> </para>
</sect2> </sect2>
@@ -170,7 +170,7 @@
<para> <para>
If different &quot;minor&quot; &repmgr; versions (e.g. 4.1.1 and 4.1.6) are installed, If different &quot;minor&quot; &repmgr; versions (e.g. 4.1.1 and 4.1.6) are installed,
&repmgr; will function, but we strongly recommend always running the same version &repmgr; will function, but we strongly recommend always running the same version
to ensure there are no unexpected suprises, e.g. a newer version behaving slightly to ensure there are no unexpected surprises, e.g. a newer version behaving slightly
differently to the older version. differently to the older version.
</para> </para>
<para> <para>
@@ -212,11 +212,11 @@
</para> </para>
</sect2> </sect2>
<sect2 id="faq-third-party-packages" xreflabel="Compatability with third party vendor packages"> <sect2 id="faq-third-party-packages" xreflabel="Compatibility with third party vendor packages">
<title>Are &repmgr; packages compatible with <literal>$third_party_vendor</literal>'s packages?</title> <title>Are &repmgr; packages compatible with <literal>$third_party_vendor</literal>'s packages?</title>
<para> <para>
&repmgr; packages provided by 2ndQuadrant are compatible with the community-provided PostgreSQL &repmgr; packages provided by EnterpriseDB are compatible with the community-provided PostgreSQL
packages and any software provided by 2ndQuadrant. packages and specified software provided by EnterpriseDB.
</para> </para>
<para> <para>
A number of other vendors provide their own versions of PostgreSQL packages, often with different A number of other vendors provide their own versions of PostgreSQL packages, often with different
@@ -311,7 +311,7 @@
</para> </para>
</sect2> </sect2>
<sect2 id="faq-repmgr-shared-preload-libaries-no-repmgrd" xreflabel="shared_preload_libraries without repmgrd"> <sect2 id="faq-repmgr-shared-preload-libraries-no-repmgrd" xreflabel="shared_preload_libraries without repmgrd">
<title>Do I need to include <literal>shared_preload_libraries = 'repmgr'</literal> <title>Do I need to include <literal>shared_preload_libraries = 'repmgr'</literal>
in <filename>postgresql.conf</filename> if I'm not using &repmgrd;?</title> in <filename>postgresql.conf</filename> if I'm not using &repmgrd;?</title>
<para> <para>
@@ -459,7 +459,7 @@
</title> </title>
<para> <para>
<varname>promote_command</varname> or <varname>follow_command</varname> can be user-defined scripts, <varname>promote_command</varname> or <varname>follow_command</varname> can be user-defined scripts,
so &repmgr; will not apply <option>pg_bindir</option> even if excuting &repmgr;. Always provide the full so &repmgr; will not apply <option>pg_bindir</option> even if executing &repmgr;. Always provide the full
path; see <xref linkend="repmgrd-automatic-failover-configuration"/> for more details. path; see <xref linkend="repmgrd-automatic-failover-configuration"/> for more details.
</para> </para>
</sect2> </sect2>
@@ -479,7 +479,7 @@
is out-of-date, which may lead to incorrect failover behaviour. is out-of-date, which may lead to incorrect failover behaviour.
</para> </para>
<para> <para>
The onus is therefore on the adminstrator to manually set the cluster to a stable, healthy state before The onus is therefore on the administrator to manually set the cluster to a stable, healthy state before
starting &repmgrd;. starting &repmgrd;.
</para> </para>
</sect2> </sect2>

View File

@@ -52,8 +52,7 @@
<para> <para>
&repmgr; packages are available from the public 2ndQuadrant repository, and also the &repmgr; packages are available from the public 2ndQuadrant repository, and also the
PostgreSQL community repository. The 2ndQuadrant repository is updated immediately PostgreSQL community repository. The 2ndQuadrant repository is updated immediately
after each after each &repmgr; release.
&repmgr; release.
</para> </para>
<table id="centos-2ndquadrant-repository"> <table id="centos-2ndquadrant-repository">
@@ -398,7 +397,7 @@
</indexterm> </indexterm>
<indexterm> <indexterm>
<primary>packages</primary> <primary>packages</primary>
<secondary>snaphots</secondary> <secondary>snapshots</secondary>
</indexterm> </indexterm>
<para> <para>
@@ -439,7 +438,7 @@ curl https://dl.2ndquadrant.com/default/snapshot/get/9.6/rpm | sudo bash</progra
The package name will be formatted like this: The package name will be formatted like this:
<programlisting> <programlisting>
repmgr96-4.1.1-0.0git320.g5113ab0.1.el7.x86_64.rpm</programlisting> repmgr96-4.1.1-0.0git320.g5113ab0.1.el7.x86_64.rpm</programlisting>
containg the snapshot build number (here: <literal>320</literal>) and the hash containing the snapshot build number (here: <literal>320</literal>) and the hash
of the <application>git</application> commit it was built from (here: <literal>g5113ab0</literal>). of the <application>git</application> commit it was built from (here: <literal>g5113ab0</literal>).
</para> </para>

View File

@@ -16,9 +16,50 @@
</para> </para>
<!-- remember to update the release date in ../repmgr_version.h.in --> <!-- remember to update the release date in ../repmgr_version.h.in -->
<sect1 id="release-5.2.2">
<title id="release-current">Release 5.2.2</title>
<para><emphasis>??? ? ???, 2021</emphasis></para>
<para>
&repmgr; 5.2.2 is a minor release.
</para>
<sect2>
<title>Bug fixes</title>
<para>
<itemizedlist>
<listitem>
<para>
<command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>:
if using <option>--replication-conf-only</option> on a node
which was set up without replication slots, but the &repmgr; configuration
was since changed to <option>use_replication_slots=1</option>,
&repmgr; will now set <varname>slot_name</varname> in the
node record, if it was previously empty.
</para>
</listitem>
<listitem>
<para>
<command><link linkend="repmgr-node-rejoin">repmgr node rejoin</link></command>:
emit rejoin target note information as <literal>NOTICE</literal>.
</para>
<para>
This makes it clearer what &repmgr; is trying to do.
</para>
</listitem>
<listitem>
<para>
&repmgrd;: ensure short option <option>-s</option> is accepted.
</para>
</listitem>
</itemizedlist>
</para>
</sect2>
</sect1>
<sect1 id="release-5.2.1"> <sect1 id="release-5.2.1">
<title id="release-current">Release 5.2.1</title> <title>Release 5.2.1</title>
<para><emphasis>Mon 7 December, 2020</emphasis></para> <para><emphasis>Mon 7 December, 2020</emphasis></para>
<para> <para>
@@ -1199,7 +1240,7 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
</para> </para>
<para> <para>
Possible values are <literal>ping</literal> (default; uses <command>PQping()</command> to Possible values are <literal>ping</literal> (default; uses <command>PQping()</command> to
determine server availability), <literal>connection</literal> (attempst to make a new connection to determine server availability), <literal>connection</literal> (attempts to make a new connection to
the upstream node), and <literal>query</literal> (determines server availability the upstream node), and <literal>query</literal> (determines server availability
by executing an SQL statement on the node via the existing connection). by executing an SQL statement on the node via the existing connection).
</para> </para>

View File

@@ -20,7 +20,7 @@
A mailing list/forum is provided via Google groups to discuss contributions or issues: <ulink url="https://groups.google.com/group/repmgr">https://groups.google.com/group/repmgr</ulink>. A mailing list/forum is provided via Google groups to discuss contributions or issues: <ulink url="https://groups.google.com/group/repmgr">https://groups.google.com/group/repmgr</ulink>.
</para> </para>
<para> <para>
Please report bugs and other issues to: <ulink url="https://github.com/2ndQuadrant/repmgr">https://github.com/2ndQuadrant/repmgr</ulink>. Please report bugs and other issues to: <ulink url="https://github.com/EnterpriseDB/repmgr">https://github.com/EnterpriseDB/repmgr</ulink>.
</para> </para>
<important> <important>
@@ -64,7 +64,7 @@
<listitem> <listitem>
<simpara> <simpara>
<filename>repmpgr.conf</filename> files (suitably anonymized if necessary) <filename>repmgr.conf</filename> files (suitably anonymized if necessary)
</simpara> </simpara>
</listitem> </listitem>

View File

@@ -319,7 +319,7 @@ description = "Main cluster"
Cascading replication, introduced with PostgreSQL 9.2, enables a standby server Cascading replication, introduced with PostgreSQL 9.2, enables a standby server
to replicate from another standby server rather than directly from the primary, to replicate from another standby server rather than directly from the primary,
meaning replication changes "cascade" down through a hierarchy of servers. This meaning replication changes "cascade" down through a hierarchy of servers. This
can be used to reduce load on the primary and minimize bandwith usage between can be used to reduce load on the primary and minimize bandwidth usage between
sites. For more details, see the sites. For more details, see the
<ulink url="https://www.postgresql.org/docs/current/warm-standby.html#CASCADING-REPLICATION"> <ulink url="https://www.postgresql.org/docs/current/warm-standby.html#CASCADING-REPLICATION">
PostgreSQL cascading replication documentation</ulink>. PostgreSQL cascading replication documentation</ulink>.
@@ -391,7 +391,7 @@ description = "Main cluster"
cluster, you may wish to clone a downstream standby whose upstream node cluster, you may wish to clone a downstream standby whose upstream node
does not yet exist. In this case you can clone from the primary (or does not yet exist. In this case you can clone from the primary (or
another upstream node); provide the parameter <literal>--upstream-conninfo</literal> another upstream node); provide the parameter <literal>--upstream-conninfo</literal>
to explictly set the upstream's <varname>primary_conninfo</varname> string to explicitly set the upstream's <varname>primary_conninfo</varname> string
in <filename>recovery.conf</filename>. in <filename>recovery.conf</filename>.
</simpara> </simpara>
</tip> </tip>

View File

@@ -7,6 +7,14 @@
<secondary>optional settings</secondary> <secondary>optional settings</secondary>
</indexterm> </indexterm>
<note>
<simpara>
This section documents a subset of optional configuration settings; for a full
for a full and annotated view of all configuration options see the
see the <ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/master/repmgr.conf.sample">sample repmgr.conf file</ulink>
</simpara>
</note>
<variablelist> <variablelist>
@@ -132,5 +140,50 @@ ssh_options='-q -o ConnectTimeout=10'</programlisting>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry id="repmgr-conf-pg-bindir" xreflabel="pg_bindir">
<term><varname>pg_bindir</varname> (<type>string</type>)
<indexterm>
<primary><varname>pg_bindir</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Path to the PostgreSQL binary directory (location of <application>pg_ctl</application>,
<application>pg_basebackup</application> etc.). Only required
if these are not in the system <varname>PATH</varname>.
</para>
<tip>
<para>
When &repmgr; is executed via <application>SSH</application> (e.g. when running
<command><link linkend="repmgr-standby-switchover">repmgr standby switchover</link></command>,
<command><link linkend="repmgr-cluster-matrix">repmgr cluster matrix</link></command> or
<command><link linkend="repmgr-cluster-crosscheck">repmgr cluster crosscheck</link></command>,
or if it is executed as cronjob), a login shell will not be used and only the
default system <varname>PATH</varname> will be set. Therefore it's recommended to set
<varname>pg_bindir</varname> so &repmgr; can correctly invoke binaries on a remote
system and avoid potential path issues.
</para>
</tip>
<para>
Debian/Ubuntu users: you will probably need to set this to the directory where
<application>pg_ctl</application> is located, e.g. <filename>/usr/lib/postgresql/9.6/bin/</filename>.
</para>
<para>
<emphasis>NOTE</emphasis>: <varname>pg_bindir</varname> is only used when &repmgr; directly
executes PostgreSQL binaries; any user-defined scripts
<emphasis>must</emphasis> be specified with the full path.
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
<tip>
<simpara>
See the <ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/master/repmgr.conf.sample">sample repmgr.conf file</ulink>
for a full and annotated view of all configuration options.
</simpara>
</tip>
</sect1> </sect1>

View File

@@ -96,6 +96,9 @@
</variablelist> </variablelist>
</para> </para>
<para>
See <xref linkend="configuration-file-optional-settings"/> for further configuration options.
</para>
</sect1> </sect1>

View File

@@ -27,7 +27,9 @@
<note> <note>
<para> <para>
If using <application>systemd</application>, ensure you have <varname>RemoveIPC</varname> set to <literal>off</literal>. If using <application>systemd</application>, ensure you have <varname>RemoveIPC</varname> set to <literal>off</literal>.
See the <ulink url="https://wiki.postgresql.org/wiki/Systemd">systemd</ulink> See the <ulink url="https://www.postgresql.org/docs/current/index.html">PostgreSQL documentation</ulink> section
<ulink url="https://www.postgresql.org/docs/current/kernel-resources.html#SYSTEMD-REMOVEIPC">systemd RemoveIPC</ulink>
and also the <ulink url="https://wiki.postgresql.org/wiki/Systemd">systemd</ulink>
entry in the <ulink url="https://wiki.postgresql.org/wiki/Main_Page">PostgreSQL wiki</ulink> for details. entry in the <ulink url="https://wiki.postgresql.org/wiki/Main_Page">PostgreSQL wiki</ulink> for details.
</para> </para>
</note> </note>

View File

@@ -93,7 +93,7 @@
<table id="repmgr-compatibility-matrix"> <table id="repmgr-compatibility-matrix">
<title>&repmgr; compatibility matrix</title> <title>&repmgr; compatibility matrix</title>
<tgroup cols="3"> <tgroup cols="4">
<thead> <thead>
<row> <row>
<entry> <entry>

View File

@@ -178,18 +178,18 @@ deb-src https://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main</programlist
<para> <para>
The source for &repmgr; is maintained at The source for &repmgr; is maintained at
<ulink url="https://github.com/2ndQuadrant/repmgr">https://github.com/2ndQuadrant/repmgr</ulink>. <ulink url="https://github.com/EnterpriseDB/repmgr">https://github.com/EnterpriseDB/repmgr</ulink>.
</para> </para>
<para> <para>
There are also tags for each <ulink url="https://github.com/2ndQuadrant/repmgr/releases">&repmgr; release</ulink>, e.g. There are also tags for each <ulink url="https://github.com/EnterpriseDB/repmgr/releases">&repmgr; release</ulink>, e.g.
<literal><ulink url="https://github.com/2ndQuadrant/repmgr/releases/tag/v4.4.0">v4.4.0</ulink></literal>. <literal><ulink url="https://github.com/EnterpriseDB/repmgr/releases/tag/v4.4.0">v4.4.0</ulink></literal>.
</para> </para>
<para> <para>
Clone the source code using <application>git</application>: Clone the source code using <application>git</application>:
<programlisting> <programlisting>
git clone https://github.com/2ndQuadrant/repmgr</programlisting> git clone https://github.com/EnterpriseDB/repmgr</programlisting>
</para> </para>
<para> <para>

View File

@@ -3,16 +3,16 @@
<date>2017</date> <date>2017</date>
<copyright> <copyright>
<year>2010-2020</year> <year>2010-2021</year>
<holder>2ndQuadrant, Ltd.</holder> <holder>EnterpriseDB Corporation</holder>
</copyright> </copyright>
<legalnotice id="legalnotice"> <legalnotice id="legalnotice">
<title>Legal Notice</title> <title>Legal Notice</title>
<para> <para>
<productname>repmgr</productname> is Copyright &copy; 2010-2020 <productname>repmgr</productname> is Copyright &copy; 2010-2021
by 2ndQuadrant, Ltd. All rights reserved. by EnterpriseDB Corporation All rights reserved.
</para> </para>
<para> <para>

View File

@@ -284,7 +284,7 @@
<tip> <tip>
<simpara> <simpara>
For Debian-based distributions we recommend explictly setting For Debian-based distributions we recommend explicitly setting
<option>pg_bindir</option> to the directory where <command>pg_ctl</command> and other binaries <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>. not in the standard path are located. For PostgreSQL 9.6 this would be <filename>/usr/lib/postgresql/9.6/bin/</filename>.
</simpara> </simpara>
@@ -302,7 +302,7 @@
<para> <para>
See the file See the file
<ulink url="https://raw.githubusercontent.com/2ndQuadrant/repmgr/master/repmgr.conf.sample">repmgr.conf.sample</ulink> <ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/master/repmgr.conf.sample">repmgr.conf.sample</ulink>
for details of all available configuration parameters. for details of all available configuration parameters.
</para> </para>

View File

@@ -25,7 +25,7 @@
</para> </para>
<para> <para>
By default, &repmgr; will wait for up to 15 seconds to confirm that &repmgrd; By default, &repmgr; will wait for up to 15 seconds to confirm that &repmgrd;
started. This behaviour can be overridden by specifying a diffent value using the <option>--wait</option> started. This behaviour can be overridden by specifying a different value using the <option>--wait</option>
option, or disabled altogether with the <option>--no-wait</option> option. option, or disabled altogether with the <option>--no-wait</option> option.
</para> </para>

View File

@@ -26,7 +26,7 @@
<para> <para>
By default, &repmgr; will wait for up to 15 seconds to confirm that &repmgrd; By default, &repmgr; will wait for up to 15 seconds to confirm that &repmgrd;
stopped. This behaviour can be overridden by specifying a diffent value using the <option>--wait</option> stopped. This behaviour can be overridden by specifying a different value using the <option>--wait</option>
option, or disabled altogether with the <option>--no-wait</option> option. option, or disabled altogether with the <option>--no-wait</option> option.
</para> </para>
<note> <note>

View File

@@ -22,6 +22,10 @@
This can optionally use <application>pg_rewind</application> to re-integrate This can optionally use <application>pg_rewind</application> to re-integrate
a node which has diverged from the rest of the cluster, typically a failed primary. a node which has diverged from the rest of the cluster, typically a failed primary.
</para> </para>
<para>
Note that <command>repmgr node rejoin</command> can only be used to attach
a standby to the current primary, not another standby.
</para>
<tip> <tip>
<para> <para>
@@ -281,6 +285,7 @@
<programlisting> <programlisting>
$ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \ $ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \
--force-rewind --config-files=postgresql.local.conf,postgresql.conf --verbose --dry-run --force-rewind --config-files=postgresql.local.conf,postgresql.conf --verbose --dry-run
NOTICE: rejoin target is node "node3" (node ID: 3)
INFO: replication connection to the rejoin target node was successful INFO: replication connection to the rejoin target node was successful
INFO: local and rejoin target system identifiers match INFO: local and rejoin target system identifiers match
DETAIL: system identifier is 6652184002263212600 DETAIL: system identifier is 6652184002263212600
@@ -339,6 +344,7 @@
<programlisting> <programlisting>
$ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \ $ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \
--config-files=postgresql.local.conf,postgresql.conf --verbose --force-rewind --dry-run --config-files=postgresql.local.conf,postgresql.conf --verbose --force-rewind --dry-run
NOTICE: rejoin target is node "node3" (node ID: 3)
INFO: replication connection to the rejoin target node was successful INFO: replication connection to the rejoin target node was successful
INFO: local and rejoin target system identifiers match INFO: local and rejoin target system identifiers match
DETAIL: system identifier is 6652460429293670710 DETAIL: system identifier is 6652460429293670710
@@ -449,15 +455,16 @@
</para> </para>
<para> <para>
Currently it is not possible to resolve this situation using <application>pg_rewind</application>. Currently it is not possible to resolve this situation using <application>pg_rewind</application>.
A <ulink url="https://www.postgresql.org/message-id/flat/CABvVfJU-LDWvoz4-Yow3Ay5LZYTuPD7eSjjE4kGyNZpXC6FrVQ@mail.gmail.com">patch</ulink> A <ulink url="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2b4f3130382fe2f8705863e4d38589d4d69cd695">patch</ulink>
has been submitted and will hopefully be included in a forthcoming PostgreSQL minor release. has been successfully submitted and will be included the next PostgreSQL minor release round, scheduled for
February 2021.
</para> </para>
<para> <para>
As a workaround, start the primary server the standby was previously attached to, As a workaround, start the primary server the standby was previously attached to,
and ensure the standby can be attached to it. If <application>pg_rewind</application> was actually executed, and ensure the standby can be attached to it. If <application>pg_rewind</application> was actually executed,
it will have copied in the <filename>.history</filename> file from the target primary server; this must it will have copied in the <filename>.history</filename> file from the target primary server; this must
be removed. <command>repmgr node rejoin</command> can then be used to attach the standby to the original be removed. <command>repmgr node rejoin</command> can then be used to attach the standby to the original
primary. Ensure any changes pending on the primary have propogated to the standby. Then shut down the primary primary. Ensure any changes pending on the primary have propagated to the standby. Then shut down the primary
server <emphasis>first</emphasis>, before shutting down the standby. It should then be possible to server <emphasis>first</emphasis>, before shutting down the standby. It should then be possible to
use <command>repmgr node rejoin</command> to attach the standby to the new primary. use <command>repmgr node rejoin</command> to attach the standby to the new primary.
</para> </para>

View File

@@ -189,14 +189,14 @@
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
If the promotion candidate has insufficient free walsenders to accomodate the standbys which will If the promotion candidate has insufficient free walsenders to accommodate the standbys which will
be attached to it, the standby will be promoted anyway. be attached to it, the standby will be promoted anyway.
</simpara> </simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara> <simpara>
If replication slots are in use but the promotion candidate has insufficient free replication slots If replication slots are in use but the promotion candidate has insufficient free replication slots
to accomodate the standbys which will be attached to it, the standby will be promoted anyway. to accommodate the standbys which will be attached to it, the standby will be promoted anyway.
</simpara> </simpara>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@@ -18,7 +18,7 @@
<title>repmgr &repmgrversion; Documentation</title> <title>repmgr &repmgrversion; Documentation</title>
<bookinfo> <bookinfo>
<corpauthor>2ndQuadrant Ltd</corpauthor> <corpauthor>EnterpriseDB Corporation</corpauthor>
<productname>repmgr</productname> <productname>repmgr</productname>
<productnumber>&repmgrversion;</productnumber> <productnumber>&repmgrversion;</productnumber>
&legal; &legal;
@@ -38,20 +38,20 @@
<para> <para>
&repmgr; is developed by &repmgr; is developed by
<ulink url="https://2ndquadrant.com">2ndQuadrant</ulink> <ulink url="https://2ndquadrant.com">2ndQuadrant (EDB)</ulink>
along with contributions from other individuals and organisations. along with contributions from other individuals and organisations.
Contributions from the community are appreciated and welcome - get Contributions from the community are appreciated and welcome - get
in touch via <ulink url="https://github.com/2ndQuadrant/repmgr">github</ulink> in touch via <ulink url="https://github.com/EnterpriseDB/repmgr">github</ulink>
or <ulink url="https://groups.google.com/group/repmgr">the mailing list/forum</ulink>. or <ulink url="https://groups.google.com/group/repmgr">the mailing list/forum</ulink>.
Multiple 2ndQuadrant customers contribute funding Multiple 2ndQuadrant (EDB) customers contribute funding
to make repmgr development possible. to make repmgr development possible.
</para> </para>
<para> <para>
&repmgr; is fully supported by 2ndQuadrant's &repmgr; is fully supported by 2ndQuadrant (EDB)'s
<ulink url="https://www.2ndquadrant.com/en/support/support-postgresql/">24/7 Production Support</ulink>. <ulink url="https://www.2ndquadrant.com/en/support/support-postgresql/">24/7 Production Support</ulink>.
2ndQuadrant, a Major Sponsor of the PostgreSQL project, continues to develop and maintain &repmgr;. EnterpriseDB Corporation, a Major Sponsor of the PostgreSQL project, continues to maintain &repmgr;.
Other organisations as well as individual developers are welcome to participate in the efforts. We welcome participation from other organisations and individual developers.
</para> </para>
</abstract> </abstract>

View File

@@ -586,7 +586,7 @@ INFO: node 3 received notification to rerun promotion candidate election
<sect2 id="repmgrd-primary-child-disconnection-caveats"> <sect2 id="repmgrd-primary-child-disconnection-caveats">
<title>Standby disconnections monitoring caveats</title> <title>Standby disconnections monitoring caveats</title>
<para> <para>
The follwing caveats should be considered if you are intending to use this functionality. The following caveats should be considered if you are intending to use this functionality.
</para> </para>
<para> <para>
<itemizedlist mark="bullet"> <itemizedlist mark="bullet">

View File

@@ -89,6 +89,10 @@
<literal>query</literal> - determines server availability <literal>query</literal> - determines server availability
by executing an SQL statement on the node via the existing connection by executing an SQL statement on the node via the existing connection
</simpara> </simpara>
<simpara>
The query is a minimal throwaway query - <command>SELECT 1</command> -
which is used to determine that the server can accept queries.
</simpara>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@@ -152,7 +156,7 @@
</variablelist> </variablelist>
<para> <para>
See also <filename><ulink url="https://raw.githubusercontent.com/2ndQuadrant/repmgr/master/repmgr.conf.sample">repmgr.conf.sample</ulink></filename> for an annotated sample configuration file. See also <filename><ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/master/repmgr.conf.sample">repmgr.conf.sample</ulink></filename> for an annotated sample configuration file.
</para> </para>
<sect2 id="repmgrd-automatic-failover-configuration"> <sect2 id="repmgrd-automatic-failover-configuration">
@@ -329,7 +333,7 @@
<title>Optional configuration for automatic failover</title> <title>Optional configuration for automatic failover</title>
<para> <para>
The following configuraton options can be use to fine-tune automatic failover: The following configuraton options can be used to fine-tune automatic failover:
</para> </para>
<variablelist> <variablelist>
@@ -539,7 +543,7 @@
</indexterm> </indexterm>
<para> <para>
For further details and a reference implementation, see the separate document For further details and a reference implementation, see the separate document
<ulink url="https://github.com/2ndQuadrant/repmgr/blob/master/doc/repmgrd-node-fencing.md">Fencing a failed master node with repmgrd and PgBouncer</ulink>. <ulink url="https://github.com/EnterpriseDB/repmgr/blob/master/doc/repmgrd-node-fencing.md">Fencing a failed master node with repmgrd and PgBouncer</ulink>.
</para> </para>
</sect2> </sect2>
@@ -969,7 +973,7 @@ repmgrd_service_stop_command='sudo systemctl repmgr12 stop'
</para> </para>
<para> <para>
If none of the above apply, &repmgrd; will create a PID file If none of the above apply, &repmgrd; will create a PID file
in the operating system's temporary directory (as setermined by the environment variable in the operating system's temporary directory (as determined by the environment variable
<varname>TMPDIR</varname>, or if that is not set, will use <filename>/tmp</filename>). <varname>TMPDIR</varname>, or if that is not set, will use <filename>/tmp</filename>).
</para> </para>
<para> <para>

View File

@@ -120,16 +120,19 @@
</important> </important>
<note> <note>
<simpara> <para>
On <literal>systemd</literal> systems we strongly recommend using the appropriate On <literal>systemd</literal> systems we strongly recommend using the appropriate
<command>systemctl</command> commands (typically run via <command>sudo</command>) to ensure <command>systemctl</command> commands (typically run via <command>sudo</command>) to ensure
<literal>systemd</literal> is informed about the status of the PostgreSQL service. <literal>systemd</literal> is informed about the status of the PostgreSQL service.
</simpara> </para>
<simpara> <para>
If using <command>sudo</command> for the <command>systemctl</command> calls, make sure the If using <command>sudo</command> for the <command>systemctl</command> calls, make sure the
<command>sudo</command> specification doesn't require a real tty for the user. If not set <command>sudo</command> specification doesn't require a real tty for the user. If not set
this way, <command>repmgr</command> will fail to stop the primary. this way, <command>repmgr</command> will fail to stop the primary.
</simpara> </para>
<para>
See the <xref linkend="configuration-file-service-commands"/> documentation section for further details.
</para>
</note> </note>
<para> <para>

View File

@@ -482,7 +482,7 @@ ALTER EXTENSION repmgr UPDATE</programlisting>
<simpara> <simpara>
If you don't care about any data from the existing &repmgr; installation, If you don't care about any data from the existing &repmgr; installation,
(e.g. the contents of the <structname>events</structname> and <structname>monitoring</structname> (e.g. the contents of the <structname>events</structname> and <structname>monitoring</structname>
tables), the follwing steps can be skipped; proceed to <xref linkend="upgrade-reregister-nodes"/>. tables), the following steps can be skipped; proceed to <xref linkend="upgrade-reregister-nodes"/>.
</simpara> </simpara>
</tip> </tip>
@@ -497,10 +497,10 @@ ALTER EXTENSION repmgr UPDATE</programlisting>
<itemizedlist spacing="compact" mark="bullet"> <itemizedlist spacing="compact" mark="bullet">
<listitem> <listitem>
<simpara> <simpara>
<ulink url="https://raw.githubusercontent.com/2ndQuadrant/repmgr/REL3_3_STABLE/sql/repmgr3.0_repmgr3.1.sql">repmgr3.0_repmgr3.1.sql</ulink></simpara> <ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/REL3_3_STABLE/sql/repmgr3.0_repmgr3.1.sql">repmgr3.0_repmgr3.1.sql</ulink></simpara>
</listitem> </listitem>
<listitem> <listitem>
<simpara><ulink url="https://raw.githubusercontent.com/2ndQuadrant/repmgr/REL3_3_STABLE/sql/repmgr3.1.1_repmgr3.1.2.sql">repmgr3.1.1_repmgr3.1.2.sql</ulink></simpara> <simpara><ulink url="https://raw.githubusercontent.com/EnterpriseDB/repmgr/REL3_3_STABLE/sql/repmgr3.1.1_repmgr3.1.2.sql">repmgr3.1.1_repmgr3.1.2.sql</ulink></simpara>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>

View File

@@ -1,6 +1,6 @@
/* /*
* errcode.h * errcode.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

2
log.c
View File

@@ -1,6 +1,6 @@
/* /*
* log.c - Logging methods * log.c - Logging methods
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

2
log.h
View File

@@ -1,6 +1,6 @@
/* /*
* log.h * log.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Implements cluster information actions for the repmgr command line utility * Implements cluster information actions for the repmgr command line utility
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-cluster.h * repmgr-action-cluster.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
* repmgr-action-daemon.c * repmgr-action-daemon.c
* *
* Implements repmgrd actions for the repmgr command line utility * Implements repmgrd actions for the repmgr command line utility
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-daemon.h * repmgr-action-daemon.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Implements actions available for any kind of node * Implements actions available for any kind of node
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -2612,6 +2612,13 @@ do_node_rejoin(void)
exit(ERR_BAD_CONFIG); exit(ERR_BAD_CONFIG);
} }
/*
* Emit a notice about the identity of the rejoin target
*/
log_notice(_("rejoin target is node \"%s\" (ID: %i)"),
primary_node_record.node_name,
primary_node_record.node_id);
/* connect to registered primary and check it's not in recovery */ /* connect to registered primary and check it's not in recovery */
primary_conn = establish_db_connection(primary_node_record.conninfo, false); primary_conn = establish_db_connection(primary_node_record.conninfo, false);
@@ -3599,7 +3606,7 @@ do_node_help(void)
printf(_(" Following options check an individual status:\n")); printf(_(" Following options check an individual status:\n"));
printf(_(" --archive-ready number of WAL files ready for archiving\n")); printf(_(" --archive-ready number of WAL files ready for archiving\n"));
printf(_(" --downstream whether all downstream nodes are connected\n")); printf(_(" --downstream whether all downstream nodes are connected\n"));
printf(_(" --uptream whether the node is connected to its upstream\n")); printf(_(" --upstream whether the node is connected to its upstream\n"));
printf(_(" --replication-lag replication lag in seconds (standbys only)\n")); printf(_(" --replication-lag replication lag in seconds (standbys only)\n"));
printf(_(" --role check node has expected role\n")); printf(_(" --role check node has expected role\n"));
printf(_(" --slots check for inactive replication slots\n")); printf(_(" --slots check for inactive replication slots\n"));
@@ -3617,7 +3624,7 @@ do_node_help(void)
printf(_(" --dry-run check that the prerequisites are met for rejoining the node\n" \ printf(_(" --dry-run check that the prerequisites are met for rejoining the node\n" \
" (including usability of \"pg_rewind\" if requested)\n")); " (including usability of \"pg_rewind\" if requested)\n"));
printf(_(" --force-rewind[=VALUE] execute \"pg_rewind\" if necessary\n")); printf(_(" --force-rewind[=VALUE] execute \"pg_rewind\" if necessary\n"));
printf(_(" (9.3 and 9.4 - provide full \"pg_rewind\" path)\n")); printf(_(" (PostgreSQL 9.4 - provide full \"pg_rewind\" path)\n"));
printf(_(" --config-files comma-separated list of configuration files to retain\n" \ printf(_(" --config-files comma-separated list of configuration files to retain\n" \
" after executing \"pg_rewind\"\n")); " after executing \"pg_rewind\"\n"));

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-node.h * repmgr-action-node.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Implements primary actions for the repmgr command line utility * Implements primary actions for the repmgr command line utility
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-primary.h * repmgr-action-primary.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
* repmgr-action-service.c * repmgr-action-service.c
* *
* Implements repmgrd actions for the repmgr command line utility * Implements repmgrd actions for the repmgr command line utility
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-service.h * repmgr-action-service.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Implements standby actions for the repmgr command line utility * Implements standby actions for the repmgr command line utility
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -1300,6 +1300,64 @@ _do_create_replication_conf(void)
PQExpBufferData msg; PQExpBufferData msg;
t_replication_slot slot_info = T_REPLICATION_SLOT_INITIALIZER; t_replication_slot slot_info = T_REPLICATION_SLOT_INITIALIZER;
/*
* Check the node record has slot_name set; if not we'll need to
* update it.
*/
if (local_node_record.slot_name[0] == '\0')
{
PGconn *primary_conn = NULL;
create_slot_name(local_node_record.slot_name, local_node_record.node_id);
/* Check we can connect to the primary so we can update the record */
if (get_recovery_type(upstream_conn) == RECTYPE_PRIMARY)
{
primary_conn = upstream_conn;
}
else
{
primary_conn = establish_primary_db_connection(upstream_conn, false);
if (primary_conn == NULL)
{
log_error(_("unable to connect to primary to update slot name for node \"%s\" (ID: %i)"),
local_node_record.node_name,
local_node_record.node_id);
PQfinish(upstream_conn);
termPQExpBuffer(&msg);
exit(ERR_BAD_CONFIG);
}
}
if (runtime_options.dry_run == true)
{
log_info(_("would set \"slot_name\" for node \"%s\" (ID: %i) to \"%s\""),
local_node_record.node_name,
local_node_record.node_id,
local_node_record.slot_name);
}
else
{
bool success = update_node_record_slot_name(primary_conn,
local_node_record.node_id,
local_node_record.slot_name);
if (primary_conn != upstream_conn)
PQfinish(primary_conn);
if (success == false)
{
log_error(_("unable to update slot name for node \"%s\" (ID: %i)"),
local_node_record.node_name,
local_node_record.node_id);
PQfinish(upstream_conn);
exit(ERR_BAD_CONFIG);
}
}
}
record_status = get_slot_record(upstream_conn, local_node_record.slot_name, &slot_info); record_status = get_slot_record(upstream_conn, local_node_record.slot_name, &slot_info);
/* check if replication slot exists*/ /* check if replication slot exists*/
@@ -1932,7 +1990,7 @@ do_standby_register(void)
/* /*
* If --upstream-node-id not provided, we're defaulting to the primary as * If --upstream-node-id not provided, we're defaulting to the primary as
* upstream node. If local node is available, double-check that it's attached * upstream node. If local node is available, double-check that it's attached
* to the primary, in case --upstream-node-id was an accidental ommission. * to the primary, in case --upstream-node-id was an accidental omission.
* *
* Currently we'll only do this for newly registered nodes. * Currently we'll only do this for newly registered nodes.
*/ */
@@ -3395,7 +3453,7 @@ do_standby_follow_internal(PGconn *primary_conn, PGconn *follow_target_conn, t_n
goto cleanup; goto cleanup;
} }
/* In the unlikley event that fails, we'll fall back to a restart */ /* In the unlikely event that fails, we'll fall back to a restart */
log_warning(_("unable to reload server configuration")); log_warning(_("unable to reload server configuration"));
} }
@@ -3626,7 +3684,7 @@ do_standby_switchover(void)
* SANITY CHECKS * SANITY CHECKS
* *
* We'll be doing a bunch of operations on the remote server (primary to * We'll be doing a bunch of operations on the remote server (primary to
* be demoted) - careful checks needed before proceding. * be demoted) - careful checks needed before proceeding.
*/ */
local_conn = establish_db_connection(config_file_options.conninfo, true); local_conn = establish_db_connection(config_file_options.conninfo, true);
@@ -4108,7 +4166,7 @@ do_standby_switchover(void)
if (command_success == false || command_output.data[0] == '0') if (command_success == false || command_output.data[0] == '0')
{ {
log_error(_("expected configuration file not found on the demotion candiate \"%s\" (ID: %i)"), log_error(_("expected configuration file not found on the demotion candidate \"%s\" (ID: %i)"),
remote_node_record.node_name, remote_node_record.node_name,
remote_node_record.node_id); remote_node_record.node_id);
log_detail(_("registered configuration file is \"%s\""), log_detail(_("registered configuration file is \"%s\""),
@@ -4208,7 +4266,7 @@ do_standby_switchover(void)
else if (remote_error == REMOTE_ERROR_CONNINFO_PARSE) else if (remote_error == REMOTE_ERROR_CONNINFO_PARSE)
{ {
/* highly unlikely */ /* highly unlikely */
log_detail(_("an error was encountered when parsing the \"conninfo\" parameter in \"rempgr.conf\" on node \"%s\" (ID: %i)"), log_detail(_("an error was encountered when parsing the \"conninfo\" parameter in \"repmgr.conf\" on node \"%s\" (ID: %i)"),
remote_node_record.node_name, remote_node_record.node_name,
remote_node_record.node_id); remote_node_record.node_id);
} }
@@ -5346,7 +5404,7 @@ do_standby_switchover(void)
break; break;
case JOIN_SUCCESS: case JOIN_SUCCESS:
appendPQExpBuffer(&event_details, appendPQExpBuffer(&event_details,
_("node \"%s\" (ID: %i) promoted to primary, node \"%s\" (ID: %i) demoted to standby"), _("node \"%s\" (ID: %i) promoted to primary, node \"%s\" (ID: %i) demoted to standby"),
config_file_options.node_name, config_file_options.node_name,
config_file_options.node_id, config_file_options.node_id,
remote_node_record.node_name, remote_node_record.node_name,
@@ -7530,7 +7588,7 @@ stop_backup:
if (record_status == RECORD_FOUND) if (record_status == RECORD_FOUND)
{ {
log_verbose(LOG_INFO, log_verbose(LOG_INFO,
_("replication slot \"%s\" aleady exists on upstream node %i"), _("replication slot \"%s\" already exists on upstream node %i"),
local_node_record->slot_name, local_node_record->slot_name,
upstream_node_id); upstream_node_id);
} }
@@ -8988,7 +9046,7 @@ do_standby_help(void)
printf(_(" --dry-run perform checks etc. but don't actually execute switchover\n")); printf(_(" --dry-run perform checks etc. but don't actually execute switchover\n"));
printf(_(" -F, --force ignore warnings and continue anyway\n")); printf(_(" -F, --force ignore warnings and continue anyway\n"));
printf(_(" --force-rewind[=VALUE] use \"pg_rewind\" to reintegrate the old primary if necessary\n")); printf(_(" --force-rewind[=VALUE] use \"pg_rewind\" to reintegrate the old primary if necessary\n"));
printf(_(" (9.3 and 9.4 - provide \"pg_rewind\" path)\n")); printf(_(" (PostgreSQL 9.4 - provide \"pg_rewind\" path)\n"));
printf(_(" -R, --remote-user=USERNAME database server username for SSH operations (default: \"%s\")\n"), runtime_options.username); printf(_(" -R, --remote-user=USERNAME database server username for SSH operations (default: \"%s\")\n"), runtime_options.username);
printf(_(" -S, --superuser=USERNAME superuser to use, if repmgr user is not superuser\n")); printf(_(" -S, --superuser=USERNAME superuser to use, if repmgr user is not superuser\n"));

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-standby.h * repmgr-action-standby.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Implements witness actions for the repmgr command line utility * Implements witness actions for the repmgr command line utility
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-action-witness.h * repmgr-action-witness.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-client-global.h * repmgr-client-global.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* repmgr-client.c - Command interpreter for the repmgr package * repmgr-client.c - Command interpreter for the repmgr package
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This module is a command-line utility to easily setup a cluster of * This module is a command-line utility to easily setup a cluster of
* hot standby servers for an HA environment * hot standby servers for an HA environment
@@ -122,7 +122,7 @@ main(int argc, char **argv)
/* /*
* Tell the logger we're a command-line program - this will ensure any * Tell the logger we're a command-line program - this will ensure any
* output logged before the logger is initialized will be formatted * output logged before the logger is initialized will be formatted
* correctly. Can be overriden with "--log-to-file". * correctly. Can be overridden with "--log-to-file".
*/ */
logger_output_mode = OM_COMMAND_LINE; logger_output_mode = OM_COMMAND_LINE;
@@ -2735,7 +2735,7 @@ do_help(void)
* *
* Note: * Note:
* This is one of two places where superuser rights are required. * This is one of two places where superuser rights are required.
* We should also consider possible scenarious where a non-superuser * We should also consider possible scenarios where a non-superuser
* has sufficient privileges to install the extension. * has sufficient privileges to install the extension.
*/ */
@@ -2770,7 +2770,7 @@ create_repmgr_extension(PGconn *conn)
log_detail(_("version %s is installed but newer version %s is available"), log_detail(_("version %s is installed but newer version %s is available"),
extversions.installed_version, extversions.installed_version,
extversions.default_version); extversions.default_version);
log_hint(_("update the installed extension version by executing \"ALTER EXTENSION repmgr UPDATE\"")); log_hint(_("update the installed extension version by executing \"ALTER EXTENSION repmgr UPDATE\" in the repmgr database"));
return false; return false;
case REPMGR_INSTALLED: case REPMGR_INSTALLED:
@@ -2936,7 +2936,7 @@ check_server_version(PGconn *conn, char *server_type, bool exit_on_error, char *
* PostgreSQL from a particular PostgreSQL release onwards (e.g. 4.4 with PostgreSQL * PostgreSQL from a particular PostgreSQL release onwards (e.g. 4.4 with PostgreSQL
* 12 and later due to recovery.conf removal), set MAX_UNSUPPORTED_VERSION and * 12 and later due to recovery.conf removal), set MAX_UNSUPPORTED_VERSION and
* MAX_UNSUPPORTED_VERSION_NUM in "repmgr.h" to define the first PostgreSQL * MAX_UNSUPPORTED_VERSION_NUM in "repmgr.h" to define the first PostgreSQL
* version which can't be suppored. * version which can't be supported.
*/ */
#ifdef MAX_UNSUPPORTED_VERSION_NUM #ifdef MAX_UNSUPPORTED_VERSION_NUM
if (conn_server_version_num >= MAX_UNSUPPORTED_VERSION_NUM) if (conn_server_version_num >= MAX_UNSUPPORTED_VERSION_NUM)
@@ -4086,7 +4086,7 @@ check_standby_join(PGconn *upstream_conn, t_node_info *upstream_node_record, t_n
if (node_attached == NODE_NOT_ATTACHED) if (node_attached == NODE_NOT_ATTACHED)
{ {
log_detail(_("node \"%s\" (ID: %i) is currrently attached to its upstream node in state \"%s\""), log_detail(_("node \"%s\" (ID: %i) is currently attached to its upstream node in state \"%s\""),
upstream_node_record->node_name, upstream_node_record->node_name,
standby_node_record->node_id, standby_node_record->node_id,
node_state); node_state);

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr-client.h * repmgr-client.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* repmgr.c - repmgr extension * repmgr.c - repmgr extension
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This is the actual extension code; see repmgr-client.c for the code which * This is the actual extension code; see repmgr-client.c for the code which
* generates the repmgr binary * generates the repmgr binary
@@ -194,7 +194,7 @@ repmgr_shmem_startup(void)
shared_state = NULL; shared_state = NULL;
/* /*
* Create or attach to the shared memory state, including hash table * Create or attach to the shared memory state
*/ */
LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE); LWLockAcquire(AddinShmemInitLock, LW_EXCLUSIVE);

View File

@@ -238,7 +238,7 @@ ssh_options='-q -o ConnectTimeout=10' # Options to append to "ssh"
#primary_follow_timeout=60 # The max length of time (in seconds) to wait #primary_follow_timeout=60 # The max length of time (in seconds) to wait
# for the new primary to become available # for the new primary to become available
#standby_follow_timeout=15 # The max length of time (in seconds) to wait #standby_follow_timeout=30 # The max length of time (in seconds) to wait
# for the standby to connect to the primary # for the standby to connect to the primary
#standby_follow_restart=false # Restart the standby instead of sending a SIGHUP #standby_follow_restart=false # Restart the standby instead of sending a SIGHUP
# (only for PostgreSQL 13 and later) # (only for PostgreSQL 13 and later)
@@ -301,7 +301,7 @@ ssh_options='-q -o ConnectTimeout=10' # Options to append to "ssh"
#connection_check_type=ping # How to check availability of the upstream node; valid options: #connection_check_type=ping # How to check availability of the upstream node; valid options:
# 'ping': use PQping() to check if the node is accepting connections # 'ping': use PQping() to check if the node is accepting connections
# 'connection': execute a throwaway query on the current connection # 'connection': attempt to make a new connection to the node
# 'query': execute an SQL statement on the node via the existing connection # 'query': execute an SQL statement on the node via the existing connection
#reconnect_attempts=6 # Number of attempts which will be made to reconnect to an unreachable #reconnect_attempts=6 # Number of attempts which will be made to reconnect to an unreachable
# primary (or other upstream node) # primary (or other upstream node)
@@ -323,7 +323,7 @@ ssh_options='-q -o ConnectTimeout=10' # Options to append to "ssh"
# for the the local node to restart and become ready to accept connections after # for the the local node to restart and become ready to accept connections after
# executing "follow_command" (defaults to the value set in "standby_reconnect_timeout") # executing "follow_command" (defaults to the value set in "standby_reconnect_timeout")
#monitoring_history=no # Whether to write monitoring data to the "montoring_history" table #monitoring_history=no # Whether to write monitoring data to the "monitoring_history" table
#monitor_interval_secs=2 # Interval (in seconds) at which to write monitoring data #monitor_interval_secs=2 # Interval (in seconds) at which to write monitoring data
#degraded_monitoring_timeout=-1 # Interval (in seconds) after which repmgrd will terminate if the #degraded_monitoring_timeout=-1 # Interval (in seconds) after which repmgrd will terminate if the
# server(s) being monitored are no longer available. -1 (default) # server(s) being monitored are no longer available. -1 (default)

View File

@@ -1,6 +1,6 @@
/* /*
* repmgr.h * repmgr.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* repmgrd-physical.c - physical (streaming) replication functionality for repmgrd * repmgrd-physical.c - physical (streaming) replication functionality for repmgrd
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -737,7 +737,7 @@ check_primary_status(int degraded_monitoring_elapsed)
/* refresh our copy of the node record from the primary */ /* refresh our copy of the node record from the primary */
record_status = get_node_record(new_primary_conn, config_file_options.node_id, &local_node_info); record_status = get_node_record(new_primary_conn, config_file_options.node_id, &local_node_info);
/* this is unlikley to happen */ /* this is unlikely to happen */
if (record_status != RECORD_FOUND) if (record_status != RECORD_FOUND)
{ {
log_warning(_("unable to retrieve local node record from primary node %i"), primary_node_id); log_warning(_("unable to retrieve local node record from primary node %i"), primary_node_id);
@@ -1111,7 +1111,7 @@ execute_child_nodes_disconnect_command(NodeInfoList *db_child_node_records, t_ch
/* calculate number of connected child nodes */ /* calculate number of connected child nodes */
for (cell = db_child_node_records->head; cell; cell = cell->next) for (cell = db_child_node_records->head; cell; cell = cell->next)
{ {
/* exclude witness server from total, if necessay */ /* exclude witness server from total, if necessary */
if (config_file_options.child_nodes_connected_include_witness == false && if (config_file_options.child_nodes_connected_include_witness == false &&
cell->node_info->type == WITNESS) cell->node_info->type == WITNESS)
continue; continue;
@@ -1149,7 +1149,7 @@ execute_child_nodes_disconnect_command(NodeInfoList *db_child_node_records, t_ch
instr_time current_time = current_time_base; instr_time current_time = current_time_base;
int seconds_since_detached; int seconds_since_detached;
/* exclude witness server from calculatin if neccessary */ /* exclude witness server from calculation, if requested */
if (config_file_options.child_nodes_connected_include_witness == false && if (config_file_options.child_nodes_connected_include_witness == false &&
child_node_rec->type == WITNESS) child_node_rec->type == WITNESS)
continue; continue;
@@ -3254,7 +3254,7 @@ update_monitoring_history(void)
* *
* Attach cascaded standby to another node, currently the primary. * Attach cascaded standby to another node, currently the primary.
* *
* Note that in contrast to a primary failover, where one of the downstrean * Note that in contrast to a primary failover, where one of the downstream
* standby nodes will become a primary, a cascaded standby failover (where the * standby nodes will become a primary, a cascaded standby failover (where the
* upstream standby has gone away) is "just" a case of attaching the standby to * upstream standby has gone away) is "just" a case of attaching the standby to
* another node. * another node.

View File

@@ -1,6 +1,6 @@
/* /*
* repmgrd-physical.h * repmgrd-physical.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* repmgrd.c - Replication manager daemon * repmgrd.c - Replication manager daemon
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -131,7 +131,7 @@ main(int argc, char **argv)
memset(pid_file, 0, MAXPGPATH); memset(pid_file, 0, MAXPGPATH);
while ((c = getopt_long(argc, argv, "?Vf:L:vdp:m", long_options, &optindex)) != -1) while ((c = getopt_long(argc, argv, "?Vf:L:vdp:sm", long_options, &optindex)) != -1)
{ {
switch (c) switch (c)
{ {
@@ -249,7 +249,7 @@ main(int argc, char **argv)
/* /*
* Parse the configuration file, if provided (if no configuration file was * Parse the configuration file, if provided (if no configuration file was
* provided, an attempt will be made to find one in one of the default * provided, an attempt will be made to find one in one of the default
* locations). If no conifguration file is available, or it can't be parsed * locations). If no configuration file is available, or it can't be parsed
* parse_config() will abort anyway, with an appropriate message. * parse_config() will abort anyway, with an appropriate message.
*/ */
load_config(config_file, verbose, false, argv[0]); load_config(config_file, verbose, false, argv[0]);
@@ -307,7 +307,7 @@ main(int argc, char **argv)
} }
/* Some configuration file items can be overriden by command line options */ /* Some configuration file items can be overridden by command line options */
/* /*
* Command-line parameter -L/--log-level overrides any setting in config * Command-line parameter -L/--log-level overrides any setting in config
@@ -416,7 +416,7 @@ main(int argc, char **argv)
log_detail(_("\"repmgr\" version %s is installed but extension is version %s"), log_detail(_("\"repmgr\" version %s is installed but extension is version %s"),
REPMGR_VERSION, REPMGR_VERSION,
extversions.installed_version); extversions.installed_version);
log_hint(_("update the installed extension version by executing \"ALTER EXTENSION repmgr UPDATE\"")); log_hint(_("update the installed extension version by executing \"ALTER EXTENSION repmgr UPDATE\" in the repmgr database"));
close_connection(&local_conn); close_connection(&local_conn);
exit(ERR_BAD_CONFIG); exit(ERR_BAD_CONFIG);

View File

@@ -1,6 +1,6 @@
/* /*
* repmgrd.h * repmgrd.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
*/ */

View File

@@ -1,7 +1,7 @@
/* /*
* strutil.c * strutil.c
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* strutil.h * strutil.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
* *
* Functions which need to be executed on the local system. * Functions which need to be executed on the local system.
* *
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* sysutils.h * sysutils.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,6 +1,6 @@
/* /*
* voting.h * voting.h
* Copyright (c) 2ndQuadrant, 2010-2020 * Copyright (c) EnterpriseDB Corporation, 2010-2021
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by