Commit Graph

438 Commits

Author SHA1 Message Date
Ian Barwick
b7fd13aed2 Fix pg_ctl path generation in do_standby_switchover() 2016-03-30 16:46:57 +09:00
Ian Barwick
0ebd9c15d9 Regularly sync witness server repl_nodes table.
Although the witness server will resync the repl_nodes table following
a failover, other operations (e.g. removing or cloning a standby)
were previously not reflected in the witness server's copy of this
table.

As a short-term workaround, automatically resync the table at regular
intervals (defined by the configuration file parameter
"witness_repl_nodes_sync_interval_secs", default 30 seconds).
2016-03-30 15:06:12 +09:00
Ian Barwick
4d97c1ebf7 Add hint about registering the server after cloning it.
This step is easy to forget.
2016-03-30 15:05:20 +09:00
Ian Barwick
cb49071ea4 Fix code comment 2016-03-30 15:05:06 +09:00
Ian Barwick
009d92fec8 Ensure witness node is registered before the repl_nodes table is copied
This fixes a bug introduced into the previous commit, where the
witness node was registered last to prevent a spurious node record
being created even if witness server creation failed.
2016-02-23 14:37:54 +09:00
Ian Barwick
05b47cb2a8 Prevent repmgr/repmgrd running as root 2016-02-23 14:37:44 +09:00
Ian Barwick
dc542a1b7d Better handling of errors during witness creation
Ensure witness is only registered after all steps for creation
have been successfully completed.

Also write an event record if connection could not be made to
the witness server after initial creation.

This addresses GitHub issue #146.
2016-02-23 14:37:39 +09:00
Ian Barwick
6ce8058749 witness creation: extract database and user names from the local conninfo string
99.9% of the time they'll be the same as the primary connection, but
it's more consistent to use the provided local conninfo string
(from which the port is already extracted).
2016-02-23 14:37:31 +09:00
Ian Barwick
f740374392 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-23 14:37:23 +09:00
Ian Barwick
a81cf04614 Update various comments 2016-01-28 11:13:38 +09:00
Ian Barwick
ca6cbcf965 Add sanity checks to be sure pg_rewind can be used before executing a switchover 2016-01-28 09:25:00 +09:00
Ian Barwick
16c1e13019 Sanity check for presence of pg_rewind on remote server 2016-01-28 07:25:23 +09:00
Ian Barwick
1a6d830314 Various logging, help output and comment tweaks 2016-01-27 17:10:54 +09:00
Ian Barwick
a96f478a43 Allow negative values in configuration parameters, where appropriate.
Make the code match the documentation.

As pointed out by GitHub user phyber (#142).

Also various other minor improvements to error reporting during
config file parsing.
2016-01-27 09:10:19 +09:00
Ian Barwick
8f20ab16dd Display default log level in -?/--help output 2016-01-25 14:39:21 +09:00
Ian Barwick
61e00bf1c7 Improve handling of default connection parameters 2016-01-22 14:14:14 +09:00
Ian Barwick
5d71869fc1 --help output: put default values in quotation marks
Similar to psql.
2016-01-20 15:56:26 +09:00
Ian Barwick
7598e08b6f Display default connection options in --help output 2016-01-20 15:46:41 +09:00
Ian Barwick
ba71e1eedf Use maxlen_snprintf() in do_witness_create() 2016-01-20 15:13:52 +09:00
Ian Barwick
a4c07b23fb Document --pg_rewind option in help output 2016-01-20 15:09:03 +09:00
Ian Barwick
0c36f921f7 help() -> do_help()
For consistency and easier location of the function body.
2016-01-20 15:02:03 +09:00
Ian Barwick
8ac5a5444e Enable repmgr standby switchover for 9.3/9.4 by recloning
A bit of a hack and unsuited for large databases - install
pg_rewind instead. Or upgrade to 9.5.
2016-01-20 14:51:16 +09:00
Ian Barwick
f60e7346e2 Don't copy 'recovery.done' or 'recovery.conf' when cloning a standby
'recovery.conf' will be overwritten, but we don't want a 'recovery.done'
for another server.
2016-01-20 14:34:13 +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
daa79d1a0f Remove any recovery.done file copied in by pg_rewind
It'll be the old standby/new primary's old recovery.conf file,
which we don't want floating about confusing things.
2016-01-20 13:18:52 +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
995083d66c Change event record type for repmgr standby follow to 'standby_follow' for consistency 2016-01-19 14:53:16 +09:00
Ian Barwick
cc1ea00333 Ensure event logging doesn't generate an error when cloning from a standby 2016-01-19 13:51:49 +09:00
Ian Barwick
ec3596521f Fix comment typo 2016-01-19 11:39:41 +09:00
Ian Barwick
66245ccc03 Add warning if -r used with -c 2016-01-14 23:12:41 +09:00
Ian Barwick
c7542063be Only display -c/--fast-checkpoint hint when using pg_basebackup 2016-01-14 22:51:02 +09:00
Ian Barwick
5359d45463 Remove deprecated -l/--local-port from --help output
We'll still parse it for backwards compatibility
2016-01-14 20:51:03 +09:00
Ian Barwick
f3d0ab9ab9 Improve "archive_mode" configuration check
There's no compelling reason to require "archive_mode" to be enabled
for streaming replication. It is of course a good idea to archive WAL
using e.g. barman ( http://www.pgbarman.org/ ) as part of a comprehensive
backup strategy, but repmgr and streaming replication work fine without
it.

Per GitHub #141.

Also revise the configuration check for "archive_command" to be
triggered only when "archive_mode" is not "off", as from PostgreSQL
9.5 onwards "archive_mode" can also be "on" or "always".
2016-01-14 09:33:08 +09:00
Ian Barwick
b72058dba8 Update copyright notice to 2016 2016-01-05 15:57:46 +09:00
Ian Barwick
cde721e3fc repmgr: -r/--rsync-only does not require a parameter 2016-01-05 11:04:20 +09:00
Ian Barwick
ba300c58f7 Make "cluster show" output dynamic
Calculate the width of the "Name" and "Upstream" columns dynamically.

Based on pull request #135 by sengaya, edited and modified by myself
to include a psql-like separator line.
2015-12-22 15:03:04 +09:00
Ian Barwick
f2370de2fa Minor fixes related to changes in 56b9ca79 2015-12-22 13:35:52 +09:00
Ian Barwick
3920deb803 Merge branch 'create_view_repl_show_nodes' of https://github.com/martinmarques/repmgr 2015-12-22 13:24:42 +09:00
Ian Barwick
e452bf6601 Short option -c does not take a value 2015-12-22 12:35:42 +09:00
Ian Barwick
167b4efbb3 Add note about why 'hot_standby=on' is currently required 2015-12-22 10:47:44 +09:00
Martin
56b9ca7992 Re-write part of commit from #116 so we have the query as a view to
use from the database.
Use the view instead of the query in cluster_show()
2015-12-18 20:53:52 -03:00
Martín Marqués
9c002c7e38 Merge pull request #116 from renard/follow
Add more information in "cluster show"
2015-12-18 18:31:07 -03:00
Ian Barwick
4db0efab47 pg_replslot will only exist in 9.4 and later
We need to clean this up regardless of whether "use_replication_slots"
is set.
2015-11-30 15:40:43 +09:00
Ian Barwick
864d57953a Ensure pg_replslot directory is cleaned up after "standby clone" with rsync
This ensures the directory is in the same state as it would be
after cloning the standby with pg_basebackup, i.e. empty.
2015-11-30 15:31:43 +09:00
Ian Barwick
62d53b7622 Drop a previously created replication slot if base backup fails for any reason
Per Github #129
2015-11-30 12:39:19 +09:00
Ian Barwick
77d52adb53 Use existing config file options when attempting to connect to server during switchover 2015-11-30 12:20:43 +09:00
Ian Barwick
7a3e2f2a3a Update help output with switchover-related commands 2015-11-30 12:20:37 +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
f6d1db5edb Ensure all failures encountered during a base backup jump to the stop_backup label 2015-11-30 12:12:59 +09:00
Ian Barwick
02729d299b Put "starting backup" notice after any slot creation 2015-11-30 12:12:49 +09:00