diff --git a/doc/repmgr-node-rejoin.sgml b/doc/repmgr-node-rejoin.sgml index fc1c9867..b4799a75 100644 --- a/doc/repmgr-node-rejoin.sgml +++ b/doc/repmgr-node-rejoin.sgml @@ -257,11 +257,11 @@ $ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \ --force-rewind --config-files=postgresql.local.conf,postgresql.conf --verbose --dry-run - INFO: replication connection to the follow target node was successful - INFO: local and follow target system identifiers match + INFO: replication connection to the rejoin target node was successful + INFO: local and rejoin target system identifiers match DETAIL: system identifier is 6652184002263212600 - ERROR: this node cannot attach to follow target node 3 - DETAIL: follow target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 + ERROR: this node cannot attach to rejoin target node 3 + DETAIL: rejoin target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 HINT: use --force-rewind to execute pg_rewind Here, node3 was promoted to a primary while the local node was @@ -297,11 +297,11 @@ $ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \ --config-files=postgresql.local.conf,postgresql.conf --verbose --force-rewind --dry-run - INFO: replication connection to the follow target node was successful - INFO: local and follow target system identifiers match + INFO: replication connection to the rejoin target node was successful + INFO: local and rejoin target system identifiers match DETAIL: system identifier is 6652460429293670710 - NOTICE: pg_rewind execution required for this node to attach to follow target node 3 - DETAIL: follow target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 + NOTICE: pg_rewind execution required for this node to attach to rejoin target node 3 + DETAIL: rejoin target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 INFO: prerequisites for using pg_rewind are met INFO: file "postgresql.local.conf" would be copied to "/tmp/repmgr-config-archive-node2/postgresql.local.conf" INFO: file "postgresql.replication-setup.conf" would be copied to "/tmp/repmgr-config-archive-node2/postgresql.replication-setup.conf" @@ -322,8 +322,8 @@ $ repmgr node rejoin -f /etc/repmgr.conf -d 'host=node3 dbname=repmgr user=repmgr' \ --config-files=postgresql.local.conf,postgresql.conf --verbose --force-rewind - NOTICE: pg_rewind execution required for this node to attach to follow target node 3 - DETAIL: follow target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 + NOTICE: pg_rewind execution required for this node to attach to rejoin target node 3 + DETAIL: rejoin target server's timeline 2 forked off current database system timeline 1 before current recovery point 0/610D710 NOTICE: executing pg_rewind DETAIL: pg_rewind command is "pg_rewind -D '/var/lib/postgresql/data' --source-server='host=node3 dbname=repmgr user=repmgr'" NOTICE: 2 files copied to /var/lib/postgresql/data diff --git a/repmgr-client.c b/repmgr-client.c index 0fc7de1d..83a4923d 100644 --- a/repmgr-client.c +++ b/repmgr-client.c @@ -3233,6 +3233,8 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo TimeLineHistoryEntry *follow_target_history = NULL; bool success = true; + const char *action = is_rejoin == true ? "rejoin" : "follow"; + /* check replication connection */ initialize_conninfo_params(&follow_target_repl_conninfo, false); @@ -3252,18 +3254,18 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo if (PQstatus(follow_target_repl_conn) != CONNECTION_OK) { - log_error(_("unable to establish a replication connection to the follow target node")); + log_error(_("unable to establish a replication connection to the %s target node"), action); return false; } else if (runtime_options.dry_run == true) { - log_info(_("replication connection to the follow target node was successful")); + log_info(_("replication connection to the %s target node was successful"), action); } /* check system_identifiers match */ if (identify_system(follow_target_repl_conn, &follow_target_identification) == false) { - log_error(_("unable to query the follow target node's system identification")); + log_error(_("unable to query the %s target node's system identification"), action); PQfinish(follow_target_repl_conn); return false; @@ -3276,9 +3278,10 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo */ if (follow_target_identification.system_identifier != local_system_identifier) { - log_error(_("this node is not part of the follow target node's replication cluster")); - log_detail(_("this node's system identifier is %lu, follow target node's system identifier is %lu"), + log_error(_("this node is not part of the %s target node's replication cluster"), action); + log_detail(_("this node's system identifier is %lu, %s target node's system identifier is %lu"), local_system_identifier, + action, follow_target_identification.system_identifier); PQfinish(follow_target_repl_conn); return false; @@ -3286,22 +3289,24 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo if (runtime_options.dry_run == true) { - log_info(_("local and follow target system identifiers match")); + log_info(_("local and %s target system identifiers match"), action); log_detail(_("system identifier is %lu"), local_system_identifier); } /* check timelines */ - log_verbose(LOG_DEBUG, "local timeline: %i; follow target timeline: %i", + log_verbose(LOG_DEBUG, "local timeline: %i; %s target timeline: %i", local_tli, + action, follow_target_identification.timeline); /* upstream's timeline is lower than ours - impossible case */ if (follow_target_identification.timeline < local_tli) { - log_error(_("this node's timeline is ahead of the follow target node's timeline")); - log_detail(_("this node's timeline is %i, follow target node's timeline is %i"), + log_error(_("this node's timeline is ahead of the %s target node's timeline"), action); + log_detail(_("this node's timeline is %i, %s target node's timeline is %i"), local_tli, + action, follow_target_identification.timeline); PQfinish(follow_target_repl_conn); return false; @@ -3322,17 +3327,17 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo if (local_xlogpos <= follow_target_xlogpos) { log_info(_("timelines are same, this server is not ahead")); - log_detail(_("local node lsn is %X/%X, follow target lsn is %X/%X"), + log_detail(_("local node lsn is %X/%X, %s target lsn is %X/%X"), format_lsn(local_xlogpos), + action, format_lsn(follow_target_xlogpos)); } else { - const char *error_msg = _("this node is ahead of the follow target"); - - log_error("%s", error_msg); - log_detail(_("local node lsn is %X/%X, follow target lsn is %X/%X"), + log_error(_("this node is ahead of the %s target"), action); + log_detail(_("local node lsn is %X/%X, %s target lsn is %X/%X"), format_lsn(local_xlogpos), + action, format_lsn(follow_target_xlogpos)); success = false; @@ -3363,17 +3368,19 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo { if (is_rejoin == true && runtime_options.force_rewind_used == true) { - log_notice(_("pg_rewind execution required for this node to attach to follow target node %i"), - follow_target_node_record->node_id); + log_notice(_("pg_rewind execution required for this node to attach to rejoin target node %i"), + follow_target_node_record->node_id); } else { - log_error(_("this node cannot attach to follow target node %i"), + log_error(_("this node cannot attach to %s target node %i"), + action, follow_target_node_record->node_id); success = false; } - log_detail(_("follow target server's timeline %i forked off current database system timeline %i before current recovery point %X/%X"), + log_detail(_("%s target server's timeline %i forked off current database system timeline %i before current recovery point %X/%X"), + action, local_tli + 1, local_tli, format_lsn(local_xlogpos)); @@ -3388,12 +3395,14 @@ check_node_can_attach(TimeLineID local_tli, XLogRecPtr local_xlogpos, PGconn *fo { if (is_rejoin == false || (is_rejoin == true && runtime_options.force_rewind_used == false)) { - log_info(_("local node %i can attach to target node %i"), + log_info(_("local node %i can attach to %s target node %i"), config_file_options.node_id, + action, follow_target_node_record->node_id); - log_detail(_("local node's recovery point: %X/%X; follow target node's fork point: %X/%X"), + log_detail(_("local node's recovery point: %X/%X; %s target node's fork point: %X/%X"), format_lsn(local_xlogpos), + action, format_lsn(follow_target_history->end)); } }