mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-27 00:46:29 +00:00
Initial code for standby clone
This commit is contained in:
75
repmgr-action-standby.c
Normal file
75
repmgr-action-standby.c
Normal file
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* repmgr-action-standby.c
|
||||
*
|
||||
* Implements standby actions for the repmgr command line utility
|
||||
*
|
||||
* Copyright (c) 2ndQuadrant, 2010-2017
|
||||
*/
|
||||
|
||||
#include "repmgr.h"
|
||||
|
||||
#include "repmgr-client-global.h"
|
||||
#include "repmgr-action-standby.h"
|
||||
|
||||
|
||||
|
||||
void
|
||||
do_standby_clone(void)
|
||||
{
|
||||
PGconn *primary_conn = NULL;
|
||||
PGconn *source_conn = NULL;
|
||||
PGresult *res;
|
||||
|
||||
int server_version_num = -1;
|
||||
char cluster_size[MAXLEN];
|
||||
|
||||
/*
|
||||
* conninfo params for the actual upstream node (which might be different
|
||||
* to the node we're cloning from) to write to recovery.conf
|
||||
*/
|
||||
t_conninfo_param_list recovery_conninfo;
|
||||
char recovery_conninfo_str[MAXLEN];
|
||||
bool upstream_record_found = false;
|
||||
int upstream_node_id = UNKNOWN_NODE_ID;
|
||||
|
||||
|
||||
enum {
|
||||
barman,
|
||||
rsync,
|
||||
pg_basebackup
|
||||
} mode;
|
||||
|
||||
/* used by barman mode */
|
||||
char datadir_list_filename[MAXLEN];
|
||||
char local_repmgr_tmp_directory[MAXPGPATH];
|
||||
|
||||
puts("standby clone");
|
||||
|
||||
|
||||
/*
|
||||
* detecting the cloning mode
|
||||
*/
|
||||
if (runtime_options.rsync_only)
|
||||
mode = rsync;
|
||||
else if (strcmp(config_file_options.barman_server, "") != 0 && ! runtime_options.without_barman)
|
||||
mode = barman;
|
||||
else
|
||||
mode = pg_basebackup;
|
||||
|
||||
/*
|
||||
* In rsync mode, we need to check the SSH connection early
|
||||
*/
|
||||
if (mode == rsync)
|
||||
{
|
||||
int r;
|
||||
|
||||
r = test_ssh_connection(runtime_options.host, runtime_options.remote_user);
|
||||
if (r != 0)
|
||||
{
|
||||
log_error(_("remote host %s is not reachable via SSH"),
|
||||
runtime_options.host);
|
||||
exit(ERR_BAD_SSH);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user