@@ -661,28 +661,57 @@ do_backup(time_t start_time, bool no_validate)
661661 elog (ERROR , "required parameter not specified: PGDATA "
662662 "(-D, --pgdata)" );
663663
664+ /* Update backup status and other metainfo. */
665+ current .status = BACKUP_STATUS_RUNNING ;
666+ current .start_time = start_time ;
667+ StrNCpy (current .program_version , PROGRAM_VERSION ,
668+ sizeof (current .program_version ));
669+
664670 current .compress_alg = instance_config .compress_alg ;
665671 current .compress_level = instance_config .compress_level ;
666672
673+ /* Save list of external directories */
674+ if (instance_config .external_dir_str &&
675+ pg_strcasecmp (instance_config .external_dir_str , "none" ) != 0 )
676+ {
677+ current .external_dir_str = instance_config .external_dir_str ;
678+ }
679+
680+ elog (INFO , "Backup start, pg_probackup version: %s, instance: %s, backup ID: %s, backup mode: %s, "
681+ "wal-method: %s, remote: %s, compress-algorithm: %s, compress-level: %i" ,
682+ PROGRAM_VERSION , instance_name , base36enc (start_time ), pgBackupGetBackupMode (& current ),
683+ current .stream ? "STREAM" : "ARCHIVE" , IsSshProtocol () ? "true" : "false" ,
684+ deparse_compress_alg (current .compress_alg ), current .compress_level );
685+
686+ /* Create backup directory and BACKUP_CONTROL_FILE */
687+ if (pgBackupCreateDir (& current ))
688+ elog (ERROR , "Cannot create backup directory" );
689+ if (!lock_backup (& current ))
690+ elog (ERROR , "Cannot lock backup %s directory" ,
691+ base36enc (current .start_time ));
692+ write_backup (& current );
693+
694+ /* set the error processing function for the backup process */
695+ pgut_atexit_push (backup_cleanup , NULL );
696+
697+ elog (LOG , "Backup destination is initialized" );
698+
667699 /*
668700 * setup backup_conn, do some compatibility checks and
669701 * fill basic info about instance
670702 */
671703 backup_conn = pgdata_basic_setup (instance_config .conn_opt , & nodeInfo );
704+
705+ if (current .from_replica )
706+ elog (INFO , "Backup %s is going to be taken from standby" , base36enc (start_time ));
707+
672708 /*
673709 * Ensure that backup directory was initialized for the same PostgreSQL
674710 * instance we opened connection to. And that target backup database PGDATA
675711 * belogns to the same instance.
676712 */
677713 check_system_identifiers (backup_conn , instance_config .pgdata );
678714
679- elog (INFO , "Backup start, pg_probackup version: %s, instance: %s, backup ID: %s, backup mode: %s, "
680- "wal-method: %s, remote: %s, replica: %s, compress-algorithm: %s, compress-level: %i" ,
681- PROGRAM_VERSION , instance_name , base36enc (start_time ), pgBackupGetBackupMode (& current ),
682- current .stream ? "STREAM" : "ARCHIVE" , IsSshProtocol () ? "true" : "false" ,
683- current .from_replica ? "true" : "false" , deparse_compress_alg (current .compress_alg ),
684- current .compress_level );
685-
686715 /* below perform checks specific for backup command */
687716#if PG_VERSION_NUM >= 110000
688717 if (!RetrieveWalSegSize (backup_conn ))
@@ -711,32 +740,6 @@ do_backup(time_t start_time, bool no_validate)
711740 if (instance_config .master_conn_opt .pghost == NULL )
712741 elog (ERROR , "Options for connection to master must be provided to perform backup from replica" );
713742
714- /* Start backup. Update backup status. */
715- current .status = BACKUP_STATUS_RUNNING ;
716- current .start_time = start_time ;
717- StrNCpy (current .program_version , PROGRAM_VERSION ,
718- sizeof (current .program_version ));
719-
720- /* Save list of external directories */
721- if (instance_config .external_dir_str &&
722- pg_strcasecmp (instance_config .external_dir_str , "none" ) != 0 )
723- {
724- current .external_dir_str = instance_config .external_dir_str ;
725- }
726-
727- /* Create backup directory and BACKUP_CONTROL_FILE */
728- if (pgBackupCreateDir (& current ))
729- elog (ERROR , "Cannot create backup directory" );
730- if (!lock_backup (& current ))
731- elog (ERROR , "Cannot lock backup %s directory" ,
732- base36enc (current .start_time ));
733- write_backup (& current );
734-
735- elog (LOG , "Backup destination is initialized" );
736-
737- /* set the error processing function for the backup process */
738- pgut_atexit_push (backup_cleanup , NULL );
739-
740743 /* backup data */
741744 do_backup_instance (backup_conn , & nodeInfo );
742745 pgut_atexit_pop (backup_cleanup , NULL );
0 commit comments