diff --git a/src/bin/pg_probackup/restore.cpp b/src/bin/pg_probackup/restore.cpp index 25a139be63195d42b27d5f744aeb92c5ca05643b..99b10ff291d042f76d856b7d94944dd035ccc2ed 100644 --- a/src/bin/pg_probackup/restore.cpp +++ b/src/bin/pg_probackup/restore.cpp @@ -1542,51 +1542,7 @@ static void construct_restore_cmd(FILE *fp, pgRecoveryTarget *rt, bool restore_command_provided, bool target_immediate) { - char restore_command_guc[16384]; - errno_t rc = 0; - fio_fprintf(fp, "\n## recovery settings\n"); - /* If restore_command is provided, use it. Otherwise construct it from scratch. */ - if (restore_command_provided) - { - rc = sprintf_s(restore_command_guc, sizeof(restore_command_guc), "%s", - instance_config.restore_command); - securec_check_ss_c(rc, "\0", "\0"); - } - else - { - /* default cmdline, ok for local restore */ - rc = sprintf_s(restore_command_guc, sizeof(restore_command_guc), - "%s archive-get -B %s --instance %s " - "--wal-file-path=%%p --wal-file-name=%%f", - PROGRAM_FULL_PATH ? PROGRAM_FULL_PATH : PROGRAM_NAME, - backup_path, instance_name); - securec_check_ss_c(rc, "\0", "\0"); - /* append --remote-* parameters provided via --archive-* settings */ - if (instance_config.archive.host) - { - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), " --remote-host="); - securec_check_c(rc, "\0", "\0"); - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), instance_config.archive.host); - securec_check_c(rc, "\0", "\0"); - } - - if (instance_config.archive.port) - { - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), " --remote-port="); - securec_check_c(rc, "\0", "\0"); - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), instance_config.archive.port); - securec_check_c(rc, "\0", "\0"); - } - - if (instance_config.archive.user) - { - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), " --remote-user="); - securec_check_c(rc, "\0", "\0"); - rc = strcat_s(restore_command_guc, sizeof(restore_command_guc), instance_config.archive.user); - securec_check_c(rc, "\0", "\0"); - } - } /* * We've already checked that only one of the four following mutually @@ -1626,6 +1582,11 @@ static void construct_restore_cmd(FILE *fp, pgRecoveryTarget *rt, fio_fprintf(fp, "recovery_target_timeline = 'current'\n"); #endif } + if (instance_config.archive.host) { + elog(LOG, "archive host specified, input restore command manually."); + } else { + fprintf(fp, "restore_command = 'cp %s/%%f %%p'\n", arclog_path); + } } /* diff --git a/src/gausskernel/storage/access/transam/xlog.cpp b/src/gausskernel/storage/access/transam/xlog.cpp index fba7a041b5fbe00a277f3e27045ff6b4e5aa7c6a..7c87fd476d8385066aa7e364773b4cf4aca79f70 100755 --- a/src/gausskernel/storage/access/transam/xlog.cpp +++ b/src/gausskernel/storage/access/transam/xlog.cpp @@ -381,7 +381,6 @@ static void UpdateLastRemovedPtr(const char *filename); static void ValidateXLOGDirectoryStructure(void); static void CleanupBackupHistory(void); static XLogRecord *ReadRecord(XLogReaderState *xlogreader, XLogRecPtr RecPtr, int emode, bool fetching_ckpt); -void CheckRecoveryConsistency(void); static bool existsTimeLineHistory(TimeLineID probeTLI); static TimeLineID findNewestTimeLine(TimeLineID startTLI); STATIC void WriteControlFile(void); @@ -16501,6 +16500,8 @@ static bool read_backup_label(XLogRecPtr *checkPointLoc, bool *backupEndRequired if (fscanf_s(lfp, "BACKUP METHOD: %19s\n", backuptype, sizeof(backuptype)) == 1) { if (strcmp(backuptype, "streamed") == 0) { *backupEndRequired = true; + } else if (strcmp(backuptype, "pg_start_backup") == 0) { + *backupEndRequired = true; } }