Commit Graph

311 Commits

Author SHA1 Message Date
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
Ian Barwick
74e4b6aa3c Refactor rsync file/directory exclusion
Better simulate what goes on in 'src/backend/replication/basebackup.c';
avoid copying some files/directories introduced in 9.4.
2015-02-27 15:59:47 +09:00
Ian Barwick
22dd164cbb Clarify intent 2015-02-27 13:29:21 +09:00
Ian Barwick
63c416bb76 Set synchronous_commit to off for current session
Forward-ported from 2.x; need to verify it makes sense.
2015-02-27 11:40:57 +09:00
Ian Barwick
2eb242553a Fix log message 2015-02-27 09:57:18 +09:00
Ian Barwick
e3ecd3cdc5 Move cluster size check to an earlier point
Seems to make more sense that way.
2015-02-25 14:28:42 +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
ba254d2f06 Clarify comment 2015-02-24 16:00:28 +09:00
Ian Barwick
3e6659dda0 Modify log message for consistency and testing
Pre-3.0: 'repmgr standby clone complete'
3.0: 'repmgr standby clone (using pg_basebackup) complete' or
     'repmgr standby clone (using rsync) complete'
2015-02-20 12:29:15 +09:00
Ian Barwick
b453c6a533 Fix master port check
Check introduced in dc0dfe9b56
was comparing the provided database name instead of the port.
2015-02-12 14:44:05 +09:00
Jaime Casanova
eabb3cb1ab Add "--checksum" in rsync when using "--force"
If the user don't put that option in rsync_options using of "--force"
could be unsafe.
While the probability of failures because of this are low they aren't
zero.
2015-02-11 10:38:35 +09:00
Ian Barwick
2d82ade170 Clarify error message 2015-02-10 10:21:17 +09:00
Ian Barwick
21730899da Clarify error message.
Avoid implying there's a configuration file if none was provided.
2015-02-10 10:08:49 +09:00
Ian Barwick
94bc5bdf80 Remove unneeded function 2015-02-09 18:31:18 +09:00
Ian Barwick
1369fe5c79 Rename 'test_mode' to 'target_directory_provided'
Which describes its meaning more accurately.

Also update some comments.
2015-02-09 16:32:21 +09:00