Compare commits

...

7 Commits

Author SHA1 Message Date
Martín Marqués
01dbd7ccf7 Update Authors and version on README
Signed-off-by: Martín Marqués <martin.marques@enterprisedb.com>
2024-09-09 17:59:16 +02:00
RealGreenDragon
94b21ae8ac Fixed standby_disconnect_on_failover description in repmgr.conf 2024-09-09 15:29:48 +02:00
RealGreenDragon
4c9cca64d0 Fixed standby_disconnect_on_failover docs 2024-09-09 15:29:48 +02:00
RealGreenDragon
82e2fd66e1 Fixed can_disable_walsender indentation and warning message 2024-09-09 15:29:48 +02:00
RealGreenDragon
90fe1b8135 Fixed indentation 2024-09-09 15:29:48 +02:00
RealGreenDragon
1cd168360e Added ALTER SYSTEM permission in docs 2024-09-09 15:29:48 +02:00
RealGreenDragon
e8aa3aced7 Added check for ALTER SYSTEM permission presence 2024-09-09 15:29:48 +02:00
5 changed files with 59 additions and 15 deletions

View File

@@ -7,8 +7,8 @@ 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.3.2) supports all PostgreSQL versions from The most recent `repmgr` version (5.4.1) supports all PostgreSQL versions from
9.5 to 15. PostgreSQL 9.4 is also supported, with some restrictions. 10 to 16.
`repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB. `repmgr` is distributed under the GNU GPL 3 and maintained by EnterpriseDB.
@@ -56,8 +56,6 @@ There is a mailing list/forum to discuss contributions or issues:
* https://groups.google.com/group/repmgr * https://groups.google.com/group/repmgr
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/EnterpriseDB/repmgr * https://github.com/EnterpriseDB/repmgr
@@ -69,6 +67,14 @@ news are always welcome.
Thanks from the repmgr core team. Thanks from the repmgr core team.
* Ian Barwick
* Israel Barth
* Mario González
* Martín Marqués
* Gianni Ciolli
Past contributors:
* Jaime Casanova * Jaime Casanova
* Abhijit Menon-Sen * Abhijit Menon-Sen
* Simon Riggs * Simon Riggs

View File

@@ -1913,15 +1913,47 @@ can_disable_walsender(PGconn *conn)
if (is_superuser_connection(conn, NULL) == true) if (is_superuser_connection(conn, NULL) == true)
return true; return true;
/* PQExpBufferData query;
* As of PostgreSQL 14, it is not possible for a non-superuser PGresult *res;
* to execute ALTER SYSTEM, so further checks are superfluous. bool has_alter_system_priv = false;
* This will need modifying for PostgreSQL 15.
*/
log_warning(_("\"standby_disconnect_on_failover\" specified, but repmgr user is not a superuser"));
log_detail(_("superuser permission required to disable standbys on failover"));
return false; /* GRANT ALTER SYSTEM available from PostgreSQL 15 */
if (PQserverVersion(conn) >= 150000)
{
initPQExpBuffer(&query);
appendPQExpBufferStr(&query,
" SELECT pg_catalog.has_parameter_privilege('wal_retrieve_retry_interval', 'ALTER SYSTEM') ");
res = PQexec(conn, query.data);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
log_db_error(conn, query.data,
_("can_disable_walsender(): unable to query user parameter privileges"));
}
else
{
has_alter_system_priv = atobool(PQgetvalue(res, 0, 0));
}
termPQExpBuffer(&query);
PQclear(res);
}
if (has_alter_system_priv == false)
{
log_warning(_("\"standby_disconnect_on_failover\" specified, but repmgr user is not authorized to perform ALTER SYSTEM wal_retrieve_retry_interval"));
if (PQserverVersion(conn) >= 150000)
{
log_detail(_("superuser or ALTER SYSTEM wal_retrieve_retry_interval permission required to disable standbys on failover"));
}
else
{
log_detail(_("superuser permission required to disable standbys on failover"));
}
}
return has_alter_system_priv;
} }
/* /*

View File

@@ -159,8 +159,10 @@
<simpara> <simpara>
The <command>ALTER SYSTEM</command> is executed by &repmgrd; if The <command>ALTER SYSTEM</command> is executed by &repmgrd; if
<varname>standby_disconnect_on_failover</varname> is set to <literal>true</literal> in <varname>standby_disconnect_on_failover</varname> is set to <literal>true</literal> in
<filename>repmgr.conf</filename>. <command>ALTER SYSTEM</command> can only be executed by <filename>repmgr.conf</filename>. Until PostgreSQL 14 <command>ALTER SYSTEM</command> can only be executed by
a superuser; if the &repmgr; user is not a superuser, this functionality will not be available. a superuser; if the &repmgr; user is not a superuser, this functionality will not be available.
From PostgreSQL 15 a specific ALTER SYSTEM privilege can be granted with e.g.
<command>GRANT ALTER SYSTEM ON PARAMETER wal_retrieve_retry_interval TO repmgr</command>.
</simpara> </simpara>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View File

@@ -279,7 +279,9 @@
<note> <note>
<para> <para>
<option>standby_disconnect_on_failover</option> is available with PostgreSQL 9.5 and later. <option>standby_disconnect_on_failover</option> is available with PostgreSQL 9.5 and later.
Additionally this requires that the <literal>repmgr</literal> database user is a superuser. Until PostgreSQL 14 this requires that the <literal>repmgr</literal> database user is a superuser.
From PostgreSQL 15 a specific ALTER SYSTEM privilege can be granted to the <literal>repmgr</literal> database
user with e.g. <command>GRANT ALTER SYSTEM ON PARAMETER wal_retrieve_retry_interval TO repmgr</command>.
</para> </para>
</note> </note>
<para> <para>

View File

@@ -340,7 +340,9 @@ ssh_options='-q -o ConnectTimeout=10' # Options to append to "ssh"
#repmgrd_exit_on_inactive_node=false # If "true", and the node record is marked as "inactive", abort repmgrd startup #repmgrd_exit_on_inactive_node=false # If "true", and the node record is marked as "inactive", abort repmgrd startup
#standby_disconnect_on_failover=false # If "true", in a failover situation wait for all standbys to #standby_disconnect_on_failover=false # If "true", in a failover situation wait for all standbys to
# disconnect their WAL receivers before electing a new primary # disconnect their WAL receivers before electing a new primary
# (PostgreSQL 9.5 and later only; repmgr user must be a superuser for this) # Can be true in PostgreSQL 9.5 and later only. Until PostgreSQL 14 repmgr user must be a superuser to use this.
# From PostgreSQL 15 repmgr must be a superuser or have 'ALTER SYSTEM wal_retrieve_retry_interval' privilege.
# (see: https://repmgr.org/docs/current/repmgrd-standby-disconnection-on-failover.html )
#sibling_nodes_disconnect_timeout=30 # If "standby_disconnect_on_failover" is true, the maximum length of time #sibling_nodes_disconnect_timeout=30 # If "standby_disconnect_on_failover" is true, the maximum length of time
# (in seconds) to wait for other standbys to confirm they have disconnected their # (in seconds) to wait for other standbys to confirm they have disconnected their
# WAL receivers # WAL receivers