325 Commits

Author SHA1 Message Date
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
5b4f832f3b Only allow --rsync-only option in combination with STANDBY CLONE 2015-03-20 15:16:55 +09:00
Ian Barwick
66844d057a Rename 'need_a_node' to 'config_file_required' 2015-03-20 14:56:02 +09:00
Ian Barwick
f096cca84f Fix parameter checking for STANDBY CLONE
Previous check for the master host was ineffective. We'd be better off explicitly
requiring at least hostname, database and usernames for the master rather
than relying on whatever defaults were in place when STANDBY CLONE is
run, especially as dbname and username are used in recovery.conf.
2015-03-20 14:47:04 +09:00
Ian Barwick
0fbb83262f Rename t_configuration_options member 'pgctl_options' to 'pg_ctl_options'
Change is to make it match the actual configuration item.
2015-03-20 11:02:32 +09:00
Ian Barwick
ae19c9bd5d Only execute pg_stop_backup() if pg_start_backup() was previously executed
It's not a problem per-se but produces some unnecessary and possibly
confusing errors.
2015-03-19 23:19:34 +09:00
Ian Barwick
1b4a8917ca Transfer hint in error message to its own log notice 2015-03-19 23:12:39 +09:00
Ian Barwick
ce66a7c2d2 We shouldn't terminate with an error if no event record could be created
Event records are advisory and non-critical; there may be paths
where we're not able to connect to a valid master and hence unable
to write a record. (If an 'event_notification_command' is defined,
this should serve as a backup notification of the event).
2015-03-19 23:09:29 +09:00
Ian Barwick
9a3196b671 Add a hint if 'standby register' fails due to insert error 2015-03-19 23:01:31 +09:00
Ian Barwick
46a3082055 No need for log_event() function 2015-03-19 22:49:50 +09:00
Ian Barwick
ebabc68f8a Add recovery.conf file location and contents to debugging output 2015-03-19 22:15:45 +09:00
Ian Barwick
86d24759a0 In configuration check, check that 'archive_command' is not empty 2015-03-18 16:07:34 +09:00
Ian Barwick
922dfd88e5 Add configuration option 'event_notification_command'
Command to be executed each time an event is logged.

Following formatting sequences will be interpolated:

      %e - event type
      %d - description
      %s - success (1 or 0)
      %t - timestamp
2015-03-16 13:41:13 +09:00
Ian Barwick
b41235b896 Tweak code comments 2015-03-16 09:31:08 +09:00
Ian Barwick
0307c51d4b Add initial event logging code 2015-03-16 07:44:54 +09:00
Ian Barwick
60b14ab107 Update README 2015-03-12 10:34:00 +09:00
Ian Barwick
c02d226d2f Clarify error message 2015-03-11 15:31:19 +09:00
Ian Barwick
fe1bd5fb91 Clarify reason for defaulting to port 5499 for the witness server 2015-03-11 15:02:13 +09:00
Ian Barwick
bc63099dcf Add missing \n 2015-03-11 14:52:01 +09:00
Ian Barwick
d08bd352c1 Use pg_malloc0() instead of malloc() 2015-03-10 23:37:18 +09:00
Ian Barwick
53b990c65d Initialize cli_errors 2015-03-10 15:59:53 +09:00
Ian Barwick
1979fe63ca Rename variable for consistency 2015-03-10 15:56:53 +09:00
Ian Barwick
bd96e0ca72 Remove various temporary debugging output, comments 2015-03-10 09:55:16 +09:00
Ian Barwick
918ee3811f Improve error message 2015-03-10 08:42:46 +09:00
Ian Barwick
606d0afabc primary -> master
For consistency.
2015-03-09 15:48:46 +09:00
Ian Barwick
e16c3b2c9a Improve -?/--help output 2015-03-09 15:16:24 +09:00
Ian Barwick
4e6c250830 Remove experimental event logging code
Needs more bikeshedding.
2015-03-09 14:39:04 +09:00
Ian Barwick
29110a6e11 Consolidate version checking code 2015-03-09 14:19:13 +09:00
Ian Barwick
abf92883a8 Clean up log output
No need to prefix each line with the program name; this was pretty
inconsistent anyway. The only place where log output needs to identify
the outputting program is when syslog is being used, which is done
anyway.
2015-03-09 12:00:05 +09:00
Ian Barwick
bdf1696b58 Fix WAL level check for 9.4 and later 2015-03-09 10:07:31 +09:00
Ian Barwick
a572efe929 No need to destroy buffer here 2015-03-07 23:46:24 +09:00
Ian Barwick
2339adba6c Fix event logging when cloning from another standby
We can only write to the primary, which we'll need to find seperately
when cloning from a standby.
2015-03-06 18:39:36 +09:00
Ian Barwick
ff63954c68 do_standby_clone(): primary_conn -> upstream_conn
We could be cloning from a standby.
2015-03-06 17:44:06 +09:00
Ian Barwick
1a9fbd623f Fix log message 2015-03-06 16:10:53 +09:00
Ian Barwick
491309f4ba Write events of note to a log table
This makes keeping track of events such as failovers
much easier. Note that this is for convenience and is
not a foolproof auditing log.

Sample output:

repmgr_db=# SELECT * from repmgr_test.repl_events ;
 node_id |          event           | successful |        event_timestamp        |                         details
---------+--------------------------+------------+-------------------------------+----------------------------------------------------------
       1 | master_register          | t          | 2015-03-06 14:14:08.196636+09 |
       2 | standby_clone            | t          | 2015-03-06 14:14:17.660768+09 | Backup method: pg_basebackup; --force: N
       2 | standby_register         | t          | 2015-03-06 14:14:18.762222+09 |
       4 | witness_create           | t          | 2015-03-06 14:14:22.072815+09 |
       3 | standby_clone            | t          | 2015-03-06 14:14:23.524673+09 | Backup method: pg_basebackup; --force: N
       3 | standby_register         | t          | 2015-03-06 14:14:24.620161+09 |
       2 | repmgrd_start            | t          | 2015-03-06 14:14:29.639096+09 |
       3 | repmgrd_start            | t          | 2015-03-06 14:14:29.641489+09 |
       4 | repmgrd_start            | t          | 2015-03-06 14:14:29.648002+09 |
       2 | standby_promote          | t          | 2015-03-06 14:15:01.956737+09 | Node 2 was successfully be promoted to master
       2 | repmgrd_failover_promote | t          | 2015-03-06 14:15:01.964771+09 | Node 2 promoted to master; old master 1 marked as failed
       3 | repmgrd_failover_follow  | t          | 2015-03-06 14:15:07.228493+09 | Node 3 now following new upstream node 2
(12 rows)
2015-03-06 14:35:41 +09:00
Ian Barwick
072c2d70ff Reformat comment for legibility 2015-03-05 17:54:34 +09:00
Ian Barwick
1f9b19f3ff Add configuration option ignore_external_config_files 2015-03-05 13:46:55 +09:00
Ian Barwick
04fe820aff Note where compatibility check for replication slots is carried out
Scanning the source code gives the impression there's no check.
2015-03-05 10:12:36 +09:00
Ian Barwick
0f8759d316 Consolidate duplicated code 2015-03-04 17:27:51 +09:00
Ian Barwick
defb1e819b Add some annotations 2015-03-04 10:36:19 +09:00
Ian Barwick
e3b734f177 Check for max_replication_slots > 0 2015-03-03 18:51:58 +09:00
Ian Barwick
238fc589a1 Improve logging of configuration file operations 2015-03-03 18:14:26 +09:00
Ian Barwick
46888de77f Improve configuration file handling
Put logic in config.c so it can be shared between repmgr and repmgrd.
2015-03-03 15:39:56 +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
3d3f082617 Ensure witness server updates its node records following a failover
This involves mainly abstracting the functions which copy
and create records from repmgr.c to dbutils.c, as they need
to be shared between repmgr and repmgrd.

Per issue noted here:

  https://groups.google.com/forum/#!topic/repmgr/v5nu1Xwf6X0
2015-03-03 08:57:20 +09:00
Ian Barwick
b79bce5821 Support tablespace mapping in --rsync-only mode
This makes it practical to take a back with rsync where tablespaces
require remapping. It also makes tablespace remapping possible for
9.3, where pg_basebackup does not support this option.
2015-03-01 14:10:17 +09:00
Ian Barwick
a69176fc1b tablespace_dirs -> tablespace_mapping
For consistency with the parameter name.
2015-02-28 11:03:03 +09:00
Ian Barwick
ff30df3d96 In rsync mode, move pg_control last
Emulate the backup protocol as much as possible.
2015-02-27 19:27:46 +09:00