Compare commits

...

7 Commits

Author SHA1 Message Date
Ian Barwick
40b6c92129 doc: update release notes
Finalize release date.
2019-06-26 15:57:17 +09:00
Ian Barwick
761d65526c Finalize version number
4.4
2019-06-26 15:56:33 +09:00
Ian Barwick
a13a1232e9 doc: document optional configuration settings 2019-06-20 16:50:30 +09:00
Ian Barwick
65965b3ba4 4.4rc1 2019-06-20 16:21:54 +09:00
Ian Barwick
629d2b8f85 doc: clean up release notes
Remove tabs.
2019-06-20 16:18:41 +09:00
Ian Barwick
23c285b73b doc: fix typo 2019-06-12 16:29:17 +09:00
Ian Barwick
915fb7d617 note that "standby follow" requires a primary to be available
While it's technically possible to have a standby follow another
standby while the primary is not available, repmgr will not be able
to update its metadata, which will cause Confusion and Chaos.

Update the documentation to make this clear, and provide a more helpful
error message if this situation occurs. The operation previously
failed anyway, but with an unhelpful message about not being able to
find a node record.
2019-06-11 15:18:41 +09:00
7 changed files with 342 additions and 193 deletions

View File

@@ -1,4 +1,4 @@
4.4 2019-??-?? 4.4 2019-06-27
repmgr: improve "daemon status" output (Ian) repmgr: improve "daemon status" output (Ian)
repmgr: add "--siblings-follow" option to "standby promote" (Ian) repmgr: add "--siblings-follow" option to "standby promote" (Ian)
repmgr: add "--repmgrd-force-unpause" option to "standby switchover" (Ian) repmgr: add "--repmgrd-force-unpause" option to "standby switchover" (Ian)
@@ -24,6 +24,7 @@
repmgr: ensure BDR2-specific functionality cannot be used on repmgr: ensure BDR2-specific functionality cannot be used on
BDR3 and later (Ian) BDR3 and later (Ian)
repmgr: canonicalize the data directory path (Ian) repmgr: canonicalize the data directory path (Ian)
repmgr: note that "standby follow" requires a primary to be available (Ian)
repmgrd: monitor standbys attached to primary (Ian) repmgrd: monitor standbys attached to primary (Ian)
repmgrd: add "primary visibility consensus" functionality (Ian) repmgrd: add "primary visibility consensus" functionality (Ian)
repmgrd: fix memory leak which occurs while the monitored PostgreSQL repmgrd: fix memory leak which occurs while the monitored PostgreSQL

View File

@@ -17,31 +17,39 @@
<sect1 id="release-4.4"> <sect1 id="release-4.4">
<title>Release 4.4</title> <title>Release 4.4</title>
<para><emphasis>?? June, 2019</emphasis></para> <para><emphasis>27 June, 2019</emphasis></para>
<sect2> <sect2>
<title>repmgr client enhancements</title> <title>repmgr client enhancements</title>
<para> <para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-standby-clone"><command>repmgr standby clone</command></link>: <link linkend="repmgr-standby-clone"><command>repmgr standby clone</command></link>:
prevent a standby from being cloned from a witness server (PostgreSQL 9.6 and later only). prevent a standby from being cloned from a witness server (PostgreSQL 9.6 and later only).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-witness-register"><command>repmgr witness register</command></link>: <link linkend="repmgr-witness-register"><command>repmgr witness register</command></link>:
prevent a witness server from being registered on the replication cluster primary server prevent a witness server from being registered on the replication cluster primary server
(PostgreSQL 9.6 and later only). (PostgreSQL 9.6 and later only).
</para> </para>
<para> <para>
Registering a witness on the primary node would defeat the purpose of having a witness server, Registering a witness on the primary node would defeat the purpose of having a witness server,
which is intended to remain running even if the cluster's primary goes down. which is intended to remain running even if the cluster's primary goes down.
</para> </para>
</listitem> </listitem>
<listitem>
<para>
<link linkend="repmgr-standby-follow"><command>repmgr standby follow</command></link>:
note that an active, reachable cluster primary is required for this command;
and provide a more helpful error message if no reachable primary could be found.
</para>
</listitem>
<listitem> <listitem>
<para> <para>
@@ -75,7 +83,6 @@
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-standby-promote"><command>repmgr standby promote</command></link>: <link linkend="repmgr-standby-promote"><command>repmgr standby promote</command></link>:
@@ -94,61 +101,61 @@
</note> </note>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>: <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>:
add <option>--repmgrd-force-unpause</option> to unpause all &repmgrd; instances after executing a switchover. add <option>--repmgrd-force-unpause</option> to unpause all &repmgrd; instances after executing a switchover.
This will ensure that any &repmgrd; instances which were paused before the switchover will be This will ensure that any &repmgrd; instances which were paused before the switchover will be
unpaused. unpaused.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>: <link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>:
make output similar to that of make output similar to that of
<link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link> <link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>
for consistency and to make it easier to identify nodes not in the expected for consistency and to make it easier to identify nodes not in the expected
state. state.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>: <link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>:
display each node's timeline ID (PostgreSQL 9.6 and later only). display each node's timeline ID (PostgreSQL 9.6 and later only).
</para>
</listitem>
<listitem>
<para>
<link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>
and <link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>:
show the upstream node name as reported by each individual node - this helps visualise
situations where the cluster is in an unexpected state, and provide a better idea of the
actual cluster state.
</para>
<para>
For example, if a cluster has divided somehow and a set of nodes are
following a new primary, when running either of these commands, &repmgr;
will now show the name of the primary those nodes are actually
following, rather than the now outdated node name recorded
on the other side of the &quot;split&quot;. A warning will also be issued
about the unexpected situation.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link> <link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>
and <link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>: and <link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>:
check if a node is attached to its advertised upstream node, and issue a show the upstream node name as reported by each individual node - this helps visualise
warning if the node is not attached. situations where the cluster is in an unexpected state, and provide a better idea of the
</para> actual cluster state.
</listitem> </para>
<para>
For example, if a cluster has divided somehow and a set of nodes are
following a new primary, when running either of these commands, &repmgr;
will now show the name of the primary those nodes are actually
following, rather than the now outdated node name recorded
on the other side of the &quot;split&quot;. A warning will also be issued
about the unexpected situation.
</para>
</listitem>
</itemizedlist> <listitem>
</para> <para>
<link linkend="repmgr-cluster-show"><command>repmgr cluster show</command></link>
and <link linkend="repmgr-daemon-status"><command>repmgr daemon status</command></link>:
check if a node is attached to its advertised upstream node, and issue a
warning if the node is not attached.
</para>
</listitem>
</itemizedlist>
</para>
</sect2> </sect2>
<sect2> <sect2>
@@ -221,21 +228,21 @@
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
&repmgr;: when executing <link linkend="repmgr-standby-clone"><command>repmgr standby clone</command></link> &repmgr;: when executing <link linkend="repmgr-standby-clone"><command>repmgr standby clone</command></link>
with the <option>--upstream-conninfo</option>, ensure that <varname>application_name</varname> with the <option>--upstream-conninfo</option>, ensure that <varname>application_name</varname>
is set correctly in <varname>primary_conninfo</varname>. is set correctly in <varname>primary_conninfo</varname>.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
&repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>, &repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>,
don't abort if one or more nodes are not reachable <emphasis>and</emphasis> don't abort if one or more nodes are not reachable <emphasis>and</emphasis>
they are marked as inactive. they are marked as inactive.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
@@ -247,15 +254,15 @@
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
&repmgrd;: fix memory leak which occurs while the monitored PostgreSQL node is <emphasis>not</emphasis> &repmgrd;: fix memory leak which occurs while the monitored PostgreSQL node is <emphasis>not</emphasis>
running. running.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
</sect2> </sect2>
@@ -299,19 +306,19 @@
</para> </para>
<important> <important>
<para> <para>
On Debian-based systems, including Ubuntu, if using &repmgrd; On Debian-based systems, including Ubuntu, if using &repmgrd;
please ensure that in the file <filename>/etc/init.d/repmgrd</filename>, the parameter please ensure that in the file <filename>/etc/init.d/repmgrd</filename>, the parameter
<varname>REPMGRD_OPTS</varname> contains &quot;<literal>--daemonize=false</literal>&quot;, e.g.: <varname>REPMGRD_OPTS</varname> contains &quot;<literal>--daemonize=false</literal>&quot;, e.g.:
<programlisting> <programlisting>
# additional options # additional options
REPMGRD_OPTS="--daemonize=false"</programlisting> REPMGRD_OPTS="--daemonize=false"</programlisting>
</para> </para>
<para> <para>
For further details, see <link linkend="repmgrd-configuration-debian-ubuntu">repmgrd configuration on Debian/Ubuntu</link>. For further details, see <link linkend="repmgrd-configuration-debian-ubuntu">repmgrd configuration on Debian/Ubuntu</link>.
</para> </para>
</important> </important>
<sect2> <sect2>
<title>repmgr client enhancements</title> <title>repmgr client enhancements</title>
@@ -376,11 +383,11 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-cluster-show">repmgr cluster show</link></command>: <command><link linkend="repmgr-cluster-show">repmgr cluster show</link></command>:
differentiate between unreachable nodes and nodes which are running but rejecting connections. differentiate between unreachable nodes and nodes which are running but rejecting connections.
</para> </para>
<para> <para>
This makes it possible to see whether a node is unreachable at network level, This makes it possible to see whether a node is unreachable at network level,
or if it is running but rejecting connections for some reason. or if it is running but rejecting connections for some reason.
</para> </para>
</listitem> </listitem>
@@ -429,7 +436,7 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
&repmgrd; will no longer consider nodes where &repmgrd; &repmgrd; will no longer consider nodes where &repmgrd;
is not running as promotion candidates. is not running as promotion candidates.
</para> </para>
<para> <para>
Previously, if &repmgrd; was not running on a node, but Previously, if &repmgrd; was not running on a node, but
@@ -467,15 +474,15 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
In a failover situation, &repmgrd; will not attempt to promote a In a failover situation, &repmgrd; will not attempt to promote a
node if another primary has already appeared (e.g. by being promoted manually). node if another primary has already appeared (e.g. by being promoted manually).
GitHub #420. GitHub #420.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
</sect2> </sect2>
<sect2> <sect2>
<title>Bug fixes</title> <title>Bug fixes</title>
@@ -485,23 +492,23 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-cluster-show">repmgr cluster show</link></command>: <command><link linkend="repmgr-cluster-show">repmgr cluster show</link></command>:
fix display of node IDs with multiple digits. fix display of node IDs with multiple digits.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
ensure <command><link linkend="repmgr-primary-unregister">repmgr primary unregister</link></command> ensure <command><link linkend="repmgr-primary-unregister">repmgr primary unregister</link></command>
behaves correctly when executed on a witness server. GitHub #548. behaves correctly when executed on a witness server. GitHub #548.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
ensure <command><link linkend="repmgr-standby-register">repmgr standby register</link></command> ensure <command><link linkend="repmgr-standby-register">repmgr standby register</link></command>
fails when <option>--upstream-node-id</option> is the same as the local node ID. fails when <option>--upstream-node-id</option> is the same as the local node ID.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
@@ -522,7 +529,7 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
&repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>, &repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>,
verify the standby (promotion candidate) is currently attached to the primary (demotion candidate). GitHub #519. verify the standby (promotion candidate) is currently attached to the primary (demotion candidate). GitHub #519.
</para> </para>
</listitem> </listitem>
@@ -530,7 +537,7 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<para> <para>
&repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>, &repmgr;: when executing <link linkend="repmgr-standby-switchover"><command>repmgr standby switchover</command></link>,
avoid a potential race condition when comparing received WAL on the standby to the primary's shutdown location, avoid a potential race condition when comparing received WAL on the standby to the primary's shutdown location,
as the standby's walreceiver may not have yet flushed all received WAL to disk. GitHub #518. as the standby's walreceiver may not have yet flushed all received WAL to disk. GitHub #518.
</para> </para>
</listitem> </listitem>
@@ -544,11 +551,11 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-node-check">repmgr node check</link></command> <command><link linkend="repmgr-node-check">repmgr node check</link></command>
will only consider physical replication slots, as the purpose will only consider physical replication slots, as the purpose
of slot checks is to warn about potential issues with of slot checks is to warn about potential issues with
streaming replication standbys which are no longer attached. streaming replication standbys which are no longer attached.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
@@ -579,19 +586,19 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<link linkend="upgrading-major-version">Upgrading a major version release</link>. <link linkend="upgrading-major-version">Upgrading a major version release</link>.
</para> </para>
<important> <important>
<para> <para>
On Debian-based systems, including Ubuntu, if using &repmgrd; On Debian-based systems, including Ubuntu, if using &repmgrd;
please ensure that the in the file <filename>/etc/init.d/repmgrd</filename>, the parameter please ensure that the in the file <filename>/etc/init.d/repmgrd</filename>, the parameter
<varname>REPMGRD_OPTS</varname> contains &quot;<literal>--daemonize=false</literal>&quot;, e.g.: <varname>REPMGRD_OPTS</varname> contains &quot;<literal>--daemonize=false</literal>&quot;, e.g.:
<programlisting> <programlisting>
# additional options # additional options
REPMGRD_OPTS="--daemonize=false"</programlisting> REPMGRD_OPTS="--daemonize=false"</programlisting>
</para> </para>
<para> <para>
For further details, see <link linkend="repmgrd-configuration-debian-ubuntu">repmgrd daemon configuration on Debian/Ubuntu</link>. For further details, see <link linkend="repmgrd-configuration-debian-ubuntu">repmgrd daemon configuration on Debian/Ubuntu</link>.
</para> </para>
</important> </important>
<sect2> <sect2>
<title>Configuration file changes</title> <title>Configuration file changes</title>
@@ -723,11 +730,11 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
repmgr 4.1.1 contains a number of usability enhancements and bug fixes. repmgr 4.1.1 contains a number of usability enhancements and bug fixes.
</para> </para>
<para> <para>
We recommend upgrading to this version as soon as possible. We recommend upgrading to this version as soon as possible.
This release can be installed as a simple package upgrade from repmgr 4.0 ~ 4.1.0; This release can be installed as a simple package upgrade from repmgr 4.0 ~ 4.1.0;
&repmgrd; (if running) should be restarted. &repmgrd; (if running) should be restarted.
See <xref linkend="upgrading-repmgr"/> for more details. See <xref linkend="upgrading-repmgr"/> for more details.
</para> </para>
<sect2> <sect2>
<title>repmgr enhancements</title> <title>repmgr enhancements</title>
@@ -989,18 +996,18 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-witness-unregister">repmgr witness unregister</link></command> <command><link linkend="repmgr-witness-unregister">repmgr witness unregister</link></command>
can be run on any node, by providing the ID of the witness node with <option>--node-id</option>. can be run on any node, by providing the ID of the witness node with <option>--node-id</option>.
(GitHub #472). (GitHub #472).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-standby-switchover">repmgr standby switchover</link></command> <command><link linkend="repmgr-standby-switchover">repmgr standby switchover</link></command>
will refuse to run if an exclusive backup is taking place on the current primary. will refuse to run if an exclusive backup is taking place on the current primary.
(GitHub #476). (GitHub #476).
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</para> </para>
@@ -1021,9 +1028,9 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
&repmgrd;: daemonize process by default. &repmgrd;: daemonize process by default.
In case, for whatever reason, the user does not wish to daemonize the In case, for whatever reason, the user does not wish to daemonize the
process, provide <option>--daemonize=false</option>. process, provide <option>--daemonize=false</option>.
(GitHub #458). (GitHub #458).
</para> </para>
</listitem> </listitem>
@@ -1048,23 +1055,23 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-cluster-cleanup">repmgr cluster cleanup</link></command>: <command><link linkend="repmgr-cluster-cleanup">repmgr cluster cleanup</link></command>:
add missing help options. (GitHub #461/#462). add missing help options. (GitHub #461/#462).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Ensure witness node follows new primary after switchover. (GitHub #453). Ensure witness node follows new primary after switchover. (GitHub #453).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-node-check">repmgr node check</link></command> and <command><link linkend="repmgr-node-check">repmgr node check</link></command> and
<command><link linkend="repmgr-node-status">repmgr node status</link></command>: <command><link linkend="repmgr-node-status">repmgr node status</link></command>:
fix witness node handling. (GitHub #451). fix witness node handling. (GitHub #451).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
@@ -1084,14 +1091,14 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<title>Release 4.0.6</title> <title>Release 4.0.6</title>
<para><emphasis>Thu June 14, 2018</emphasis></para> <para><emphasis>Thu June 14, 2018</emphasis></para>
<para> <para>
&repmgr; 4.0.6 contains a number of bug fixes and usability enhancements. &repmgr; 4.0.6 contains a number of bug fixes and usability enhancements.
</para> </para>
<para> <para>
We recommend upgrading to this version as soon as possible. We recommend upgrading to this version as soon as possible.
This release can be installed as a simple package upgrade from repmgr 4.0 ~ 4.0.5; This release can be installed as a simple package upgrade from repmgr 4.0 ~ 4.0.5;
&repmgrd; (if running) should be restarted. See <xref linkend="upgrading-repmgr"/> &repmgrd; (if running) should be restarted. See <xref linkend="upgrading-repmgr"/>
for more details. for more details.
</para> </para>
<sect2> <sect2>
<title>Usability enhancements</title> <title>Usability enhancements</title>
@@ -1109,33 +1116,33 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>: <command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>:
Improve handling of external configuration file copying, including consideration in Improve handling of external configuration file copying, including consideration in
<option>--dry-run</option> check <option>--dry-run</option> check
(GitHub #443) (GitHub #443)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
When using <option>--dry-run</option>, force log level to <literal>INFO</literal> When using <option>--dry-run</option>, force log level to <literal>INFO</literal>
to ensure output will always be displayed to ensure output will always be displayed
(GitHub #441) (GitHub #441)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>: <command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>:
Improve documentation of <option>--recovery-conf-only</option> mode Improve documentation of <option>--recovery-conf-only</option> mode
(GitHub #438) (GitHub #438)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>: <command><link linkend="repmgr-standby-clone">repmgr standby clone</link></command>:
Don't require presence of <varname>user</varname> parameter in conninfo string Don't require presence of <varname>user</varname> parameter in conninfo string
(GitHub #437) (GitHub #437)
</para> </para>
</listitem> </listitem>
@@ -1161,23 +1168,23 @@ REPMGRD_OPTS="--daemonize=false"</programlisting>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-standby-follow">repmgr standby follow</link></command>: <command><link linkend="repmgr-standby-follow">repmgr standby follow</link></command>:
check node has actually connected to new primary before reporting success check node has actually connected to new primary before reporting success
(GitHub #444) (GitHub #444)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
<command><link linkend="repmgr-node-rejoin">repmgr node rejoin</link></command>: <command><link linkend="repmgr-node-rejoin">repmgr node rejoin</link></command>:
Fix bug when parsing <option>--config-files</option> parameter Fix bug when parsing <option>--config-files</option> parameter
(GitHub #442) (GitHub #442)
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
&repmgrd;: ensure local node is counted as quorum member &repmgrd;: ensure local node is counted as quorum member
(GitHub #439) (GitHub #439)
</para> </para>
</listitem> </listitem>

View File

@@ -0,0 +1,124 @@
<sect1 id="configuration-file-optional-settings" xreflabel="optional configuration file settings">
<title>Optional configuration file settings</title>
<indexterm>
<primary>repmgr.conf</primary>
<secondary>optional settings</secondary>
</indexterm>
<variablelist>
<varlistentry id="repmgr-conf-config-directory" xreflabel="config_directory">
<term><varname>config_directory</varname> (<type>string</type>)
<indexterm>
<primary><varname>config_directory</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
If PostgreSQL configuration files are located outside the data
directory, specify the directory where the main
<filename>postgresql.conf</filename> file is located.
</para>
<para>
This enables explicit provision of an external configuration file
directory, which if set will be passed to <command>pg_ctl</command> as the
<option>-D</option> parameter. Otherwise <command>pg_ctl</command> will
default to using the data directory, which will cause some operations
to fail if the configuration files are not present there.
</para>
<note>
<para>
This is implemented primarily for feature completeness and for
development/testing purposes. Users who have installed &repmgr; from
a package should <emphasis>not</emphasis> rely on to stop/start/restart PostgreSQL,
instead they should set the appropriate <option>service_..._command</option>
for their operating system. For more details see
<xref linkend="configuration-file-service-commands"/>.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry id="repmgr-conf-replication-user" xreflabel="replication_user">
<term><varname>replication_user</varname> (<type>string</type>)
<indexterm>
<primary><varname>replication_user</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
PostgreSQL user to make replication connections with.
If not set defaults, to the user defined in <xref linkend="repmgr-conf-conninfo"/>.
</para>
</listitem>
</varlistentry>
<varlistentry id="repmgr-conf-replication-type" xreflabel="replication_type">
<term><varname>replication_type</varname> (<type>string</type>)
<indexterm>
<primary><varname>replication_type</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Must be one of <literal>physical</literal> (for standard streaming replication)
or <literal>bdr</literal>.
</para>
<note>
<para>
Replication type <literal>bdr</literal> can only be used with BDR 2.x
</para>
<para>
BDR 3.x users should use <literal>physical</literal>.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry id="repmgr-conf-location" xreflabel="location">
<term><varname>location</varname> (<type>string</type>)
<indexterm>
<primary><varname>location</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
An arbitrary string defining the location of the node; this
is used during failover to check visibility of the
current primary node.
</para>
<para>
For more details see <xref linkend="repmgrd-network-split"/>.
</para>
</listitem>
</varlistentry>
<varlistentry id="repmgr-conf-use-replication-slots" xreflabel="use_replication_slots">
<term><varname>use_replication_slots</varname> (<type>boolean</type>)
<indexterm>
<primary><varname>use_replication_slots</varname> configuration file parameter</primary>
</indexterm>
</term>
<listitem>
<para>
Whether to use physical replication slots.
</para>
<note>
<para>
When using replication slots,
<varname>max_replication_slots</varname> should be configured for
at least the number of standbys which will connect
to the primary.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</sect1>

View File

@@ -20,49 +20,54 @@
(&quot;follow target&quot;). Typically this will be the primary, but this (&quot;follow target&quot;). Typically this will be the primary, but this
command can also be used to attach the standby to another standby. command can also be used to attach the standby to another standby.
</para> </para>
<para> <para>
This command requires a valid This command requires a valid <filename>repmgr.conf</filename> file for the standby,
<filename>repmgr.conf</filename> file for the standby, either specified either specified explicitly with <literal>-f/--config-file</literal> or located in a
explicitly with <literal>-f/--config-file</literal> or located in a
default location; no additional arguments are required. default location; no additional arguments are required.
</para> </para>
<para> <para>The standby node (&quot;follow candidate&quot;) <emphasis>must</emphasis>
By default &repmgr; will attempt to attach the standby to the current primary. be running. If the new upstream (&quot;follow target&quot;) is not the primary,
If <option>--upstream-node-id</option> is provided, &repmgr; will attempt the cluster primary <emphasis>must</emphasis> be running and accessible from the
to attach the standby to the specified node, which can be another standby. standby node.
</para>
<para>
This command will force a restart of the standby server, which must be
running.
</para> </para>
<tip> <tip>
<para> <para>
To re-add an inactive node to the replication cluster, use To re-add an inactive node to the replication cluster, use
<xref linkend="repmgr-node-rejoin"/>. <xref linkend="repmgr-node-rejoin"/>.
</para> </para>
</tip> </tip>
<para> <para>
<command>repmgr standby follow</command> will wait up to By default &repmgr; will attempt to attach the standby to the current primary.
<varname>standby_follow_timeout</varname> seconds (default: <literal>30</literal>) If <option>--upstream-node-id</option> is provided, &repmgr; will attempt
to verify the standby has actually connected to the new upstream node. to attach the standby to the specified node, which can be another standby.
</para> </para>
<note> <para>
<para> This command will force a restart of PostgreSQL on the standby node.
If <option>recovery_min_apply_delay</option> is set for the standby, it </para>
will not attach to the new upstream node until it has replayed available
WAL. <para>
</para> <command>repmgr standby follow</command> will wait up to
<para> <varname>standby_follow_timeout</varname> seconds (default: <literal>30</literal>)
Conversely, if the standby is attached to an upstream standby to verify the standby has actually connected to the new upstream node.
which has <option>recovery_min_apply_delay</option> set, the upstream </para>
standby's replay state may actually be behind that of its new downstream node.
</para> <note>
</note> <para>
If <option>recovery_min_apply_delay</option> is set for the standby, it
will not attach to the new upstream node until it has replayed available
WAL.
</para>
<para>
Conversely, if the standby is attached to an upstream standby
which has <option>recovery_min_apply_delay</option> set, the upstream
standby's replay state may actually be behind that of its new downstream node.
</para>
</note>
</refsect1> </refsect1>
@@ -124,7 +129,7 @@
<para> <para>
Note that when using &repmgrd;, <option>--upstream-node-id</option> Note that when using &repmgrd;, <option>--upstream-node-id</option>
should always be configured; should always be configured;
see <link linkend="repmgrd-automatic-failover-configuration">Automatic failover configuration</link> see <link linkend="repmgrd-automatic-failover-configuration">Automatic failover configuration</link>
for details. for details.
</para> </para>
</listitem> </listitem>

View File

@@ -263,7 +263,7 @@ ALTER EXTENSION repmgr UPDATE</programlisting>
<tip> <tip>
<para> <para>
Use <command><link linkend="repmgr-node-check">repmgr node check</link></command> Use <command><link linkend="repmgr-node-check">repmgr node check</link></command>
to determine which replacation slots need to be recreated. to determine which replication slots need to be recreated.
</para> </para>
</tip> </tip>

View File

@@ -2784,12 +2784,6 @@ do_standby_follow(void)
PQfinish(local_conn); PQfinish(local_conn);
if (runtime_options.dry_run == true)
{
log_info(_("prerequisites for executing STANDBY FOLLOW are met"));
exit(SUCCESS);
}
/* /*
* Here we'll need a connection to the primary, if the upstream is not a primary. * Here we'll need a connection to the primary, if the upstream is not a primary.
*/ */
@@ -2802,12 +2796,30 @@ do_standby_follow(void)
primary_conn = get_primary_connection_quiet(follow_target_conn, primary_conn = get_primary_connection_quiet(follow_target_conn,
&primary_node_id, &primary_node_id,
NULL); NULL);
/*
* If follow target is not primary and no other primary could be found,
* abort because we won't be able to update the node record.
*/
if (PQstatus(primary_conn) != CONNECTION_OK)
{
log_error(_("unable to determine the cluster primary"));
log_detail(_("an active primary node is required for \"repmgr standby follow\""));
PQfinish(follow_target_conn);
exit(ERR_FOLLOW_FAIL);
}
} }
else else
{ {
primary_conn = follow_target_conn; primary_conn = follow_target_conn;
} }
if (runtime_options.dry_run == true)
{
log_info(_("prerequisites for executing STANDBY FOLLOW are met"));
exit(SUCCESS);
}
initPQExpBuffer(&follow_output); initPQExpBuffer(&follow_output);
success = do_standby_follow_internal( success = do_standby_follow_internal(

View File

@@ -1,3 +1,3 @@
#define REPMGR_VERSION_DATE "" #define REPMGR_VERSION_DATE ""
#define REPMGR_VERSION "4.4beta2" #define REPMGR_VERSION "4.4"
#define REPMGR_VERSION_NUM 40400 #define REPMGR_VERSION_NUM 40400