repmgr 3.3 introduces a number of additional options for setting up and managing replication clusters, with particular emphasis on cascading replication support. These changes will also make it easier to set up complex clusters using provisioning scripts.
Additionally there are changes to the
repmgr command line utility’s logging behaviour which you should take into consideration when running the
repmgr is also tracking developments in the next major PostgreSQL release, 10.0, which will bring a lot of changes to the way PostgreSQL handles replication. At the time of writing,
repmgr will work with the current PostgreSQL development code, but this combination is of course not suitable for use in production.
Changes to logging behaviour
repmgr command line utility and the
repmgrd daemon shared the same logging configuration, which often resulted in output from
repmgr command line activity being diverted to a logfile. This is of course somewhat counterintuitive for command line operations, so from this release by default
repmgr will direct all output to the console (STDERR), without displaying timestamps.
$ repmgr -h repmgr_node1 -U repmgr -d repmgr -D /path/to/node2/data/ -f /etc/repmgr.conf standby clone [2016-01-07 17:21:26] [NOTICE] destination directory '/path/to/node2/data/' provided [2016-01-07 17:21:26] [NOTICE] starting backup...
$ repmgr -h repmgr_node1 -U repmgr -d repmgr -D /path/to/node2/data/ -f /etc/repmgr.conf standby clone NOTICE: destination directory '/path/to/node2/data/' provided NOTICE: starting backup..
Note that if running
repmgrd, you will probably still want to capture
repmgr output when it’s executed by
repmgrd, e.g. in a failover situation. In this case the command line option
--log-to-file will restore the behaviour; add this to any
repmgr invocations in your
Improved control over recovery.conf generation
repmgr 3.3 provides additional control over which items are included in
primary_conninfo parameter with the following new command line options.
This explicitly sets the value for the user parameter in
primary_conninfo. By default this will be the same as the repmgr database user, however you may wish to use a different user for the actual replication connection.
This prevents the database password from being stored in primary_conninfo; you’ll need to provide the password via another method such as the
This explicitly sets the
primary_conninfo string itself. This is useful when provisioning a replication cluster with cascading replication, e.g. when the standby being cloned is intended to be attached to an upstream standby which has not yet been cloned or registered, meaning the connection information is not yet available via the repmgr metadatabase. Note that this option will override `–replication-user` and `–no-conninfo-password`.
Greater flexibility when registering standbys
Previously repmgr required that a standby is running before it can be registered. However there are some use cases, such as provisioning a cascading replication server, where a downstream standby is cloned before its upstream is available, meaning even if started it won’t receive a copy of the repmgr metadata, making it impossible to locate the master server. In this case it’s now possible to specify the master server connection information (in combination with
-F/--force) Additionally, if there is no metadata entry for the upstream server, a dummy record will be created for this; when registering the upstream server, this record must itself be registered with the
-F/--force option to overwrite the dummy record.