75 Commits

Author SHA1 Message Date
Ian Barwick
8cd79fd7dd Revert "repmgr: add option -B/--remote-pg_bindir for standby switchover"
This reverts commit c30447ac90.
2016-07-04 11:30:36 +09:00
Ian Barwick
69d9d137e0 repmgr: change default pg_ctl shutdown mode to "fast"
This matches the default pg_ctl behaviour (from 9.5) and is the
more sensible option for performing time-critical operations such
as switchover.
2016-07-01 08:52:26 +09:00
Ian Barwick
c30447ac90 repmgr: add option -B/--remote-pg_bindir for standby switchover
This enables the switchover operation to function if the remote server
(current primary) has a different binary directory to the current
server, and addresses the issue reported in GitHub #172.
2016-06-30 12:51:54 +09:00
Gianni Ciolli
560066fa9d Basic CSV mode for "repmgr cluster show", enabled by --csv command
line option
2016-05-23 19:00:25 +02:00
Martin
b6b6439819 I copied over the rmtree function (and other functions needed by this one)
from the postgresql code so we use that instead of issuing system calls
with rm -rf ....

I also eliminated the rm -rf for pg_xlog.

Will later do the same with the other system call to remove files
in pg_replslot/
2016-05-17 15:21:40 -03:00
Ian Barwick
a538ceb0ea Remove duplicate inclusion from header file 2016-04-12 15:51:42 +09:00
Ian Barwick
b5a7efa58e Preserve failover slots when cloning a standby, if enabled 2016-04-12 15:51:38 +09:00
Craig Ringer
c22f4eaf6f WIP support for preserving failover slots 2016-04-06 11:18:54 +09:00
Ian Barwick
819937d4bd Replace MAXFILENAME with MAXPGPATH 2016-03-31 20:10:39 +09:00
Ian Barwick
827ffef5f9 Add '-P/--pwprompt' option for "repmgr create witness"
Optionally prompt for superuser and repmgr user when creating a witness.
This ensures a password can be provided if the primary's pg_hba.conf
mandates it.

This deprecates '--initdb-no-pwprompt'; and changes the default behaviour of
"repmgr create witness", which previously required a superuser password
unless '--initdb-no-pwprompt' was supplied.

This behaviour is more consistent with other PostgreSQL utilities such
as createuser.

Partial fix for GitHub issue #145.
2016-02-09 15:11:50 +09:00
Ian Barwick
61e00bf1c7 Improve handling of default connection parameters 2016-01-22 14:14:14 +09:00
Ian Barwick
7598e08b6f Display default connection options in --help output 2016-01-20 15:46:41 +09:00
Ian Barwick
855ca8fe1a Support separately-compiled pg_rewind for "repmgr standby switchover" in 9.3/9.4 2016-01-20 14:21:02 +09:00
Ian Barwick
211768d911 Support pg_rewind when executing "repmgr standby switchover"
9.5 and later.
2016-01-20 13:05:47 +09:00
Ian Barwick
b72058dba8 Update copyright notice to 2016 2016-01-05 15:57:46 +09:00
Ian Barwick
120688013e Add "standby switchover" mode
Perform a switchover by:
 - stopping current primary node
 - promoting this standby node to primary
 - forcing previous primary node to follow this node

Caveats:
 - repmgrd must not be running, otherwise it may
   attempt a failover
   (TODO: find some way of notifying repmgrd of planned
    activity like this)
 - currently only set up for two-node operation; any other
   standbys will probably become downstream cascaded standbys
   of the old primary once it's restarted
 - as we're executing repmgr remotely (on the old primary),
   we'll need the location of its configuration file; this
   can be provided explicitly with -C/--remote-config-file,
   otherwise repmgr will look in default locations on the
   remote server
 - this does not yet support "rewinding" stopped nodes
   which will be unable to catch up with the primary

TODO:
 - update help, docs
 - make connection test timeouts/intervals configurable
2015-11-30 12:20:24 +09:00
Ian Barwick
67df082ee9 Ensure 'master register --force' can't create more than one active primary node record 2015-11-26 10:55:16 +09:00
Ian Barwick
933647d6de Make t_node_info generally available
And have it include all the fields from the repl_nodes table.
2015-11-25 12:57:18 +09:00
Ian Barwick
d1b4280182 Add /etc/repmgr.conf as a default configuration file location
Also refactor configuration file handling while we're at it.

Previously a configuration file would be ignored if it couldn't
be opened, however that is now treated as an error.
2015-11-19 15:16:18 +09:00
Ian Barwick
17ab86f7ac Don't display warnings about unused command line parameters in --terse mode 2015-11-19 11:09:36 +09:00
Ian Barwick
e0cbdd5b31 Add -L/--log-level command line option to repmgr
Overrides any setting in the config file. This will replace the
-v/--verbose option.
2015-11-13 20:54:58 +09:00
Ian Barwick
abb02cab76 Improve configuration file parsing
Related to Github #127.

- use the previously introduced repmgr_atoi() function to parse
  integers better
- collate all detected errors and output as a list, rather than
  failing on the first error.
2015-11-09 14:56:35 +09:00
Marco Nenciarini
7ad9a2c28a Allow repmgr to be compiled with a libpq newer than PostgreSQL
Fixes #44
2015-04-29 18:00:54 +02:00
Ian Barwick
4dfeffe087 Add constant NODE_NOT_FOUND
Which is what the magic number means in those contexts.
2015-03-31 14:35:16 +09:00
Ian Barwick
3e621f43d1 Use 100 as the default priority; 0 or less means node will never be promoted 2015-03-26 10:38:20 +09:00
Ian Barwick
8de0deddf9 Change "primary" to "master"
Personally I prefer "primary", but repmgr uses "master" so let's consolidate
on one version of the terminology for clarity.
2015-03-24 14:06:39 +09:00
Ian Barwick
98df2a5891 Fix recovery_min_apply_delay handling
- rename --min-recovery-apply-delay to --recovery-min-apply-delay
- ensure server version is 9.4 or later before writing
  recovery_min_apply_delay to recovery.conf.

This fixes changes introduced in 653e11c2a7
(the parameter was subsequently renamed).

Also reallocate the '-r' parameter to --rsync-only, which is probably
more useful.
2015-03-23 17:50:51 +09:00
Ian Barwick
0875b2aafa Change 'ignore_external_config_files' to a command line option
It's only used when cloning a standby and has more in common with
--fast-checkpoint
2015-03-23 15:24:01 +09:00
Ian Barwick
3e2c9ed410 Support --fast-checkpoint 2015-03-23 12:18:17 +09:00
Ian Barwick
6b1f55ff1b Improve command line error handling
Per e.g. this complaint:

 https://groups.google.com/d/msg/repmgr/a-SMIQFGDBs/rgRH3p4ZPgYJ

Before:

    $ repmgr -f /etc/postgres/repmgr.conf cluster status

    repmgr: Replicator manager
    Try "repmgr --help" for more information.

after:

    $ repmgr -f /etc/postgres/repmgr.conf cluster status
    repmgr: Replication manager
    [ERROR] Unknown server command 'status'
    Try "repmgr --help" for more information.
2015-03-03 11:13:37 +09:00
Ian Barwick
32611f5f04 Add --rsync-only option
Sometimes it's desirable to re-sync a "stale" data directory
on a standby, rather than start from scratch with pg_basebackup().

This re-adds the rsync code from the 2.x series, with some
modifications.

TODO: tablespace support.
2015-02-25 14:17:09 +09:00
Ian Barwick
a3f0e89a05 Improve pg_bindir parameter handling
Previously, the pg_bindir parameter was mandatory and could only be
provided in the repmgr.conf file, which was leading to the slightly
bizarre situation that e.g. for "clone standby", repmgr was complaining
that it didn't want the configuration file when it actually did.

pg_bindir is now optional - if not provided, it will use the default
path. It can be provided in the repmgr.conf file, or as a command
line parameter; the latter overrides the former.
2015-02-04 14:04:04 +09:00
Ian Barwick
b552710767 Remove global variable my_local_mode
Information now contained in metadata`x
2015-01-27 13:53:36 +09:00
Ian Barwick
609453a848 Handle failover of top-level standby
Cascaded standbys will not go into failover so we need to ignore
these when looking for candidates for promotion.
2015-01-16 12:35:01 +09:00
Ian Barwick
3dfa33d01d Store upstream node ID if set
Required to manage cascaded standbys
2015-01-16 00:29:43 +09:00
Ian Barwick
74a963a10e Fix schema quoting
There was a lot of duplicated/unused related to handling the
schema name; consolidated and rationalised.
2015-01-09 15:51:34 +09:00
Ian Barwick
acf2744ed7 Replace magic number with defined constant
And use it to restrict the number of rows retrieved to avoid
overflowing the array.
2015-01-08 17:19:02 +09:00
Ian Barwick
e3379c0fbf Bump minimum supported version to 9.3
We need to assume the existence of timeline switch following by
standbys.
2015-01-06 08:29:57 +09:00
Ian Barwick
4e9c58c7db Update copyright to 2015 2015-01-03 08:12:13 +09:00
Ian Barwick
f94626bf7b Refactor version number detection
Use the reported `server_version_num` integer for version number
detection and comparison. This makes it easier to set an arbitrary
minimum supported version (rather than "9.0 or later") as well
as future-proofing for 10.x and later.
2014-12-29 14:54:04 +09:00
Ian Barwick
6f80cd5441 Add option "--initdb-no-pwprompt"
Previously repmgr passed the -W flag to initdb, which forced
manual input of a password; this option removes the -W flag
to make repetitive testing easier.
2014-12-24 19:07:08 +09:00
Ian Barwick
24b2ee09b3 Add -S/--superuser option for witness database creation
Previously the witness database creation code was hard-coding the
username 'postgres' when accessing the previously initialised database.
However initdb was not passed any explicit username, meaning the
default database superuser name was the same as the user running
repmgr.

With this patch, a superuser user name (default: postgres) will
be passed to initdb.

Per report by eggyknap [1]

[1] https://github.com/2ndQuadrant/repmgr/issues/38
2014-12-22 16:01:58 +09:00
Christian Kruse
653e11c2a7 basic min_recovery_apply_delay support 2014-03-10 15:41:38 +01:00
Christian Kruse
d8b8bf0e2a pg_indent'ing all files… 2014-03-06 18:34:40 +01:00
Christian Kruse
680f23fb1d copyright push 2014-01-23 10:37:49 +01:00
Christian Kruse
5fc4a0382f added config options sleep_delay and sleep_monitor
sleep_monitor replaces the old SLEEP_MONITOR define and makes it
configurable; this is the interval in which we monitor

sleep_delay replaces the old sleep(300) when waiting for the master to
recover.
2014-01-17 14:35:50 +01:00
Christian Kruse
4c3d7f80ed now code compiles with -ansi -pedantic and has less warnings 2014-01-09 14:45:07 +01:00
Jaime Casanova
30e9d06172 Add an option for STANDBY FOLLOW to wait for a master to appear.
This is important for autofailover to do the right thing when
standbys detected master death at different times.

While this is a new option, seems important for the autofailover
to work properly so i will consider the lack of it a bug and
will backpatch to 2.0 where autofailover was introduced.

For gripe from Alex Railean, about a standby not finding the new
master because the new master hasn't finish promoting.
2012-11-14 15:09:26 -05:00
Jaime Casanova
aaf35947ed Add tunables for connection retries to master and interval between
connection retries, these parameters along with master_response_timeout
determines the amount of time since failure to failover
2012-07-21 11:01:00 -05:00
Jaime Casanova
50b7147f15 Change Copyright date to cover 2012 2012-07-04 10:47:26 -05:00