mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-03-19 21:07:53 +02:00
Show backup percent complete in info output.
In the JSON output the percent complete is storage as an integer of the percent complete * 100. So, before display it should be converted to double and divided by 100, or split using integer mod and div. Note that percent complete will only be displayed on the host where the backup was executed. Remote hosts will show a backup/expire running with no percent complete.
This commit is contained in:
parent
20782c88bc
commit
d9088b2e2b
@ -61,6 +61,18 @@
|
|||||||
<p><postgres/> 15 support.</p>
|
<p><postgres/> 15 support.</p>
|
||||||
</release-item>
|
</release-item>
|
||||||
|
|
||||||
|
<release-item>
|
||||||
|
<github-issue id="1490"/>
|
||||||
|
<github-pull-request id="1621"/>
|
||||||
|
|
||||||
|
<release-item-contributor-list>
|
||||||
|
<release-item-contributor id="reid.thompson"/>
|
||||||
|
<release-item-reviewer id="david.steele"/>
|
||||||
|
</release-item-contributor-list>
|
||||||
|
|
||||||
|
<p>Show backup percent complete in <cmd>info</cmd> output.</p>
|
||||||
|
</release-item>
|
||||||
|
|
||||||
<release-item>
|
<release-item>
|
||||||
<commit subject="Refactor target type checking for clarity in restore module."/>
|
<commit subject="Refactor target type checking for clarity in restore module."/>
|
||||||
<commit subject="Auto-select backup for restore command --type=lsn.">
|
<commit subject="Auto-select backup for restore command --type=lsn.">
|
||||||
|
@ -20,6 +20,7 @@ Backup Command
|
|||||||
#include "common/compress/helper.h"
|
#include "common/compress/helper.h"
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "common/io/filter/size.h"
|
#include "common/io/filter/size.h"
|
||||||
|
#include "common/lock.h"
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
#include "common/regExp.h"
|
#include "common/regExp.h"
|
||||||
#include "common/time.h"
|
#include "common/time.h"
|
||||||
@ -1132,7 +1133,8 @@ Log the results of a job and throw errors
|
|||||||
static void
|
static void
|
||||||
backupJobResult(
|
backupJobResult(
|
||||||
Manifest *const manifest, const String *const host, const Storage *const storagePg, StringList *const fileRemove,
|
Manifest *const manifest, const String *const host, const Storage *const storagePg, StringList *const fileRemove,
|
||||||
ProtocolParallelJob *const job, const bool bundle, const uint64_t sizeTotal, uint64_t *const sizeProgress)
|
ProtocolParallelJob *const job, const bool bundle, const uint64_t sizeTotal, uint64_t *const sizeProgress,
|
||||||
|
unsigned int *const currentPercentComplete)
|
||||||
{
|
{
|
||||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||||
FUNCTION_LOG_PARAM(MANIFEST, manifest);
|
FUNCTION_LOG_PARAM(MANIFEST, manifest);
|
||||||
@ -1143,6 +1145,7 @@ backupJobResult(
|
|||||||
FUNCTION_LOG_PARAM(BOOL, bundle);
|
FUNCTION_LOG_PARAM(BOOL, bundle);
|
||||||
FUNCTION_LOG_PARAM(UINT64, sizeTotal);
|
FUNCTION_LOG_PARAM(UINT64, sizeTotal);
|
||||||
FUNCTION_LOG_PARAM_P(UINT64, sizeProgress);
|
FUNCTION_LOG_PARAM_P(UINT64, sizeProgress);
|
||||||
|
FUNCTION_LOG_PARAM_P(UINT, currentPercentComplete);
|
||||||
FUNCTION_LOG_END();
|
FUNCTION_LOG_END();
|
||||||
|
|
||||||
ASSERT(manifest != NULL);
|
ASSERT(manifest != NULL);
|
||||||
@ -1159,6 +1162,7 @@ backupJobResult(
|
|||||||
const uint64_t bundleId = varType(protocolParallelJobKey(job)) == varTypeUInt64 ?
|
const uint64_t bundleId = varType(protocolParallelJobKey(job)) == varTypeUInt64 ?
|
||||||
varUInt64(protocolParallelJobKey(job)) : 0;
|
varUInt64(protocolParallelJobKey(job)) : 0;
|
||||||
PackRead *const jobResult = protocolParallelJobResult(job);
|
PackRead *const jobResult = protocolParallelJobResult(job);
|
||||||
|
unsigned int percentComplete = 0;
|
||||||
|
|
||||||
while (!pckReadNullP(jobResult))
|
while (!pckReadNullP(jobResult))
|
||||||
{
|
{
|
||||||
@ -1175,7 +1179,7 @@ backupJobResult(
|
|||||||
|
|
||||||
// Create log file name
|
// Create log file name
|
||||||
const String *const fileName = storagePathP(storagePg, manifestPathPg(file.name));
|
const String *const fileName = storagePathP(storagePg, manifestPathPg(file.name));
|
||||||
const String *fileLog = host == NULL ? fileName : strNewFmt("%s:%s", strZ(host), strZ(fileName));
|
const String *const fileLog = host == NULL ? fileName : strNewFmt("%s:%s", strZ(host), strZ(fileName));
|
||||||
|
|
||||||
// Format log progress
|
// Format log progress
|
||||||
String *const logProgress = strNew();
|
String *const logProgress = strNew();
|
||||||
@ -1183,9 +1187,11 @@ backupJobResult(
|
|||||||
if (bundleId != 0)
|
if (bundleId != 0)
|
||||||
strCatFmt(logProgress, "bundle %" PRIu64 "/%" PRIu64 ", ", bundleId, bundleOffset);
|
strCatFmt(logProgress, "bundle %" PRIu64 "/%" PRIu64 ", ", bundleId, bundleOffset);
|
||||||
|
|
||||||
|
// Store percentComplete as an integer
|
||||||
|
percentComplete = sizeTotal == 0 ? 10000 : (unsigned int)(((double)*sizeProgress / (double)sizeTotal) * 10000);
|
||||||
|
|
||||||
strCatFmt(
|
strCatFmt(
|
||||||
logProgress, "%s, %.2lf%%", strZ(strSizeFormat(copySize)),
|
logProgress, "%s, %u.%02u%%", strZ(strSizeFormat(copySize)), percentComplete / 100, percentComplete % 100);
|
||||||
sizeTotal == 0 ? 100.00 : (double)*sizeProgress * 100.0 / (double)sizeTotal);
|
|
||||||
|
|
||||||
// Format log checksum
|
// Format log checksum
|
||||||
const String *const logChecksum = copySize != 0 ? strNewFmt(" checksum %s", strZ(copyChecksum)) : EMPTY_STR;
|
const String *const logChecksum = copySize != 0 ? strNewFmt(" checksum %s", strZ(copyChecksum)) : EMPTY_STR;
|
||||||
@ -1308,6 +1314,13 @@ backupJobResult(
|
|||||||
bundleId, bundleOffset);
|
bundleId, bundleOffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update currentPercentComplete and lock file when the change is significant enough
|
||||||
|
if (percentComplete - *currentPercentComplete > 10)
|
||||||
|
{
|
||||||
|
*currentPercentComplete = percentComplete;
|
||||||
|
lockWriteDataP(lockTypeBackup, .percentComplete = VARUINT(*currentPercentComplete));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MEM_CONTEXT_TEMP_END();
|
MEM_CONTEXT_TEMP_END();
|
||||||
|
|
||||||
@ -1738,7 +1751,9 @@ static ProtocolParallelJob *backupJobCallback(void *data, unsigned int clientIdx
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart, const String *cipherPassBackup)
|
backupProcess(
|
||||||
|
const BackupData *const backupData, Manifest *const manifest, const String *const lsnStart,
|
||||||
|
const String *const cipherPassBackup)
|
||||||
{
|
{
|
||||||
FUNCTION_LOG_BEGIN(logLevelDebug);
|
FUNCTION_LOG_BEGIN(logLevelDebug);
|
||||||
FUNCTION_LOG_PARAM(BACKUP_DATA, backupData);
|
FUNCTION_LOG_PARAM(BACKUP_DATA, backupData);
|
||||||
@ -1857,6 +1872,9 @@ backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart
|
|||||||
// Process jobs
|
// Process jobs
|
||||||
uint64_t sizeProgress = 0;
|
uint64_t sizeProgress = 0;
|
||||||
|
|
||||||
|
// Store current percentage complete - updated as jobs progress
|
||||||
|
unsigned int currentPercentComplete = 0;
|
||||||
|
|
||||||
MEM_CONTEXT_TEMP_RESET_BEGIN()
|
MEM_CONTEXT_TEMP_RESET_BEGIN()
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
@ -1871,7 +1889,7 @@ backupProcess(BackupData *backupData, Manifest *manifest, const String *lsnStart
|
|||||||
manifest,
|
manifest,
|
||||||
backupStandby && protocolParallelJobProcessId(job) > 1 ? backupData->hostStandby : backupData->hostPrimary,
|
backupStandby && protocolParallelJobProcessId(job) > 1 ? backupData->hostStandby : backupData->hostPrimary,
|
||||||
protocolParallelJobProcessId(job) > 1 ? storagePgIdx(pgIdx) : backupData->storagePrimary,
|
protocolParallelJobProcessId(job) > 1 ? storagePgIdx(pgIdx) : backupData->storagePrimary,
|
||||||
fileRemove, job, jobData.bundle, sizeTotal, &sizeProgress);
|
fileRemove, job, jobData.bundle, sizeTotal, &sizeProgress, ¤tPercentComplete);
|
||||||
}
|
}
|
||||||
|
|
||||||
// A keep-alive is required here for the remote holding open the backup connection
|
// A keep-alive is required here for the remote holding open the backup connection
|
||||||
|
@ -10,6 +10,7 @@ Info Command
|
|||||||
|
|
||||||
#include "command/archive/common.h"
|
#include "command/archive/common.h"
|
||||||
#include "command/info/info.h"
|
#include "command/info/info.h"
|
||||||
|
#include "common/crypto/common.h"
|
||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "common/io/fdWrite.h"
|
#include "common/io/fdWrite.h"
|
||||||
#include "common/lock.h"
|
#include "common/lock.h"
|
||||||
@ -17,7 +18,6 @@ Info Command
|
|||||||
#include "common/memContext.h"
|
#include "common/memContext.h"
|
||||||
#include "common/type/json.h"
|
#include "common/type/json.h"
|
||||||
#include "config/config.h"
|
#include "config/config.h"
|
||||||
#include "common/crypto/common.h"
|
|
||||||
#include "info/info.h"
|
#include "info/info.h"
|
||||||
#include "info/infoArchive.h"
|
#include "info/infoArchive.h"
|
||||||
#include "info/infoBackup.h"
|
#include "info/infoBackup.h"
|
||||||
@ -71,6 +71,7 @@ VARIANT_STRDEF_STATIC(STATUS_KEY_CODE_VAR, "code");
|
|||||||
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_VAR, "lock");
|
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_VAR, "lock");
|
||||||
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_BACKUP_VAR, "backup");
|
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_BACKUP_VAR, "backup");
|
||||||
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_BACKUP_HELD_VAR, "held");
|
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_BACKUP_HELD_VAR, "held");
|
||||||
|
VARIANT_STRDEF_STATIC(STATUS_KEY_LOCK_BACKUP_PERCENT_COMPLETE_VAR, "pct-cplt");
|
||||||
VARIANT_STRDEF_STATIC(STATUS_KEY_MESSAGE_VAR, "message");
|
VARIANT_STRDEF_STATIC(STATUS_KEY_MESSAGE_VAR, "message");
|
||||||
|
|
||||||
#define INFO_STANZA_STATUS_OK "ok"
|
#define INFO_STANZA_STATUS_OK "ok"
|
||||||
@ -129,6 +130,7 @@ typedef struct InfoStanzaRepo
|
|||||||
unsigned int currentPgVersion; // Current postgres version for the stanza
|
unsigned int currentPgVersion; // Current postgres version for the stanza
|
||||||
bool backupLockChecked; // Has the check for a backup lock already been performed?
|
bool backupLockChecked; // Has the check for a backup lock already been performed?
|
||||||
bool backupLockHeld; // Is backup lock held on the system where info command is run?
|
bool backupLockHeld; // Is backup lock held on the system where info command is run?
|
||||||
|
const Variant *percentComplete; // Percentage of backup complete * 100 (when not NULL)
|
||||||
InfoRepoData *repoList; // List of configured repositories
|
InfoRepoData *repoList; // List of configured repositories
|
||||||
} InfoStanzaRepo;
|
} InfoStanzaRepo;
|
||||||
|
|
||||||
@ -175,15 +177,16 @@ infoStanzaErrorAdd(InfoRepoData *repoList, const ErrorType *type, const String *
|
|||||||
Set the overall error status code and message for the stanza to the code and message passed
|
Set the overall error status code and message for the stanza to the code and message passed
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static void
|
static void
|
||||||
stanzaStatus(const int code, bool backupLockHeld, Variant *stanzaInfo)
|
stanzaStatus(const int code, const InfoStanzaRepo *const stanzaData, Variant *stanzaInfo)
|
||||||
{
|
{
|
||||||
FUNCTION_TEST_BEGIN();
|
FUNCTION_TEST_BEGIN();
|
||||||
FUNCTION_TEST_PARAM(INT, code);
|
FUNCTION_TEST_PARAM(INT, code);
|
||||||
FUNCTION_TEST_PARAM(BOOL, backupLockHeld);
|
FUNCTION_TEST_PARAM(INFO_STANZA_REPO, stanzaData);
|
||||||
FUNCTION_TEST_PARAM(VARIANT, stanzaInfo);
|
FUNCTION_TEST_PARAM(VARIANT, stanzaInfo);
|
||||||
FUNCTION_TEST_END();
|
FUNCTION_TEST_END();
|
||||||
|
|
||||||
ASSERT((code >= 0 && code <= 6) || code == 99);
|
ASSERT((code >= 0 && code <= 6) || code == 99);
|
||||||
|
ASSERT(stanzaData != NULL);
|
||||||
ASSERT(stanzaInfo != NULL);
|
ASSERT(stanzaInfo != NULL);
|
||||||
|
|
||||||
KeyValue *statusKv = kvPutKv(varKv(stanzaInfo), STANZA_KEY_STATUS_VAR);
|
KeyValue *statusKv = kvPutKv(varKv(stanzaInfo), STANZA_KEY_STATUS_VAR);
|
||||||
@ -228,7 +231,10 @@ stanzaStatus(const int code, bool backupLockHeld, Variant *stanzaInfo)
|
|||||||
// Construct a specific lock part
|
// Construct a specific lock part
|
||||||
KeyValue *lockKv = kvPutKv(statusKv, STATUS_KEY_LOCK_VAR);
|
KeyValue *lockKv = kvPutKv(statusKv, STATUS_KEY_LOCK_VAR);
|
||||||
KeyValue *backupLockKv = kvPutKv(lockKv, STATUS_KEY_LOCK_BACKUP_VAR);
|
KeyValue *backupLockKv = kvPutKv(lockKv, STATUS_KEY_LOCK_BACKUP_VAR);
|
||||||
kvPut(backupLockKv, STATUS_KEY_LOCK_BACKUP_HELD_VAR, VARBOOL(backupLockHeld));
|
kvPut(backupLockKv, STATUS_KEY_LOCK_BACKUP_HELD_VAR, VARBOOL(stanzaData->backupLockHeld));
|
||||||
|
|
||||||
|
if (stanzaData->percentComplete != NULL && cfgOptionStrId(cfgOptOutput) != CFGOPTVAL_OUTPUT_JSON)
|
||||||
|
kvPut(backupLockKv, STATUS_KEY_LOCK_BACKUP_PERCENT_COMPLETE_VAR, stanzaData->percentComplete);
|
||||||
|
|
||||||
FUNCTION_TEST_RETURN_VOID();
|
FUNCTION_TEST_RETURN_VOID();
|
||||||
}
|
}
|
||||||
@ -565,8 +571,8 @@ For each current backup in the backup.info file of the stanza, set the data for
|
|||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static void
|
static void
|
||||||
backupList(
|
backupList(
|
||||||
VariantList *backupSection, InfoStanzaRepo *stanzaData, const String *backupLabel, unsigned int repoIdxMin,
|
VariantList *const backupSection, InfoStanzaRepo *const stanzaData, const String *const backupLabel,
|
||||||
unsigned int repoIdxMax)
|
const unsigned int repoIdxMin, const unsigned int repoIdxMax)
|
||||||
{
|
{
|
||||||
FUNCTION_TEST_BEGIN();
|
FUNCTION_TEST_BEGIN();
|
||||||
FUNCTION_TEST_PARAM(VARIANT_LIST, backupSection); // The section to add the backup data to
|
FUNCTION_TEST_PARAM(VARIANT_LIST, backupSection); // The section to add the backup data to
|
||||||
@ -636,7 +642,7 @@ backupList(
|
|||||||
Set the stanza data for each stanza found in the repo
|
Set the stanza data for each stanza found in the repo
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static VariantList *
|
static VariantList *
|
||||||
stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int repoIdxMin, unsigned int repoIdxMax)
|
stanzaInfoList(List *stanzaRepoList, const String *const backupLabel, const unsigned int repoIdxMin, const unsigned int repoIdxMax)
|
||||||
{
|
{
|
||||||
FUNCTION_TEST_BEGIN();
|
FUNCTION_TEST_BEGIN();
|
||||||
FUNCTION_TEST_PARAM(LIST, stanzaRepoList);
|
FUNCTION_TEST_PARAM(LIST, stanzaRepoList);
|
||||||
@ -766,7 +772,7 @@ stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int rep
|
|||||||
kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection));
|
kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection));
|
||||||
|
|
||||||
// Set the overall stanza status
|
// Set the overall stanza status
|
||||||
stanzaStatus(stanzaStatusCode, stanzaData->backupLockHeld, stanzaInfo);
|
stanzaStatus(stanzaStatusCode, stanzaData, stanzaInfo);
|
||||||
|
|
||||||
// Set the overall cipher type
|
// Set the overall cipher type
|
||||||
if (stanzaCipherType != INFO_STANZA_STATUS_CODE_MIXED)
|
if (stanzaCipherType != INFO_STANZA_STATUS_CODE_MIXED)
|
||||||
@ -1193,6 +1199,12 @@ infoUpdateStanza(
|
|||||||
stanzaRepo->backupLockHeld = lockRead(
|
stanzaRepo->backupLockHeld = lockRead(
|
||||||
cfgOptionStr(cfgOptLockPath), stanzaRepo->name, lockTypeBackup).status == lockReadStatusValid;
|
cfgOptionStr(cfgOptLockPath), stanzaRepo->name, lockTypeBackup).status == lockReadStatusValid;
|
||||||
stanzaRepo->backupLockChecked = true;
|
stanzaRepo->backupLockChecked = true;
|
||||||
|
|
||||||
|
if (stanzaRepo->backupLockHeld)
|
||||||
|
{
|
||||||
|
stanzaRepo->percentComplete =
|
||||||
|
lockRead(cfgOptionStr(cfgOptLockPath), stanzaRepo->name, lockTypeBackup).data.percentComplete;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1450,6 +1462,10 @@ infoRender(void)
|
|||||||
KeyValue *lockKv = varKv(kvGet(stanzaStatus, STATUS_KEY_LOCK_VAR));
|
KeyValue *lockKv = varKv(kvGet(stanzaStatus, STATUS_KEY_LOCK_VAR));
|
||||||
KeyValue *backupLockKv = varKv(kvGet(lockKv, STATUS_KEY_LOCK_BACKUP_VAR));
|
KeyValue *backupLockKv = varKv(kvGet(lockKv, STATUS_KEY_LOCK_BACKUP_VAR));
|
||||||
bool backupLockHeld = varBool(kvGet(backupLockKv, STATUS_KEY_LOCK_BACKUP_HELD_VAR));
|
bool backupLockHeld = varBool(kvGet(backupLockKv, STATUS_KEY_LOCK_BACKUP_HELD_VAR));
|
||||||
|
const Variant *const percentComplete = kvGet(backupLockKv, STATUS_KEY_LOCK_BACKUP_PERCENT_COMPLETE_VAR);
|
||||||
|
const String *const percentCompleteStr = percentComplete != NULL ?
|
||||||
|
strNewFmt(" - %u.%02u%% complete", varUInt(percentComplete) / 100, varUInt(percentComplete) % 100) :
|
||||||
|
EMPTY_STR;
|
||||||
|
|
||||||
if (statusCode != INFO_STANZA_STATUS_CODE_OK)
|
if (statusCode != INFO_STANZA_STATUS_CODE_OK)
|
||||||
{
|
{
|
||||||
@ -1463,7 +1479,9 @@ infoRender(void)
|
|||||||
statusCode == INFO_STANZA_STATUS_CODE_MIXED ? INFO_STANZA_MIXED :
|
statusCode == INFO_STANZA_STATUS_CODE_MIXED ? INFO_STANZA_MIXED :
|
||||||
strZ(strNewFmt(INFO_STANZA_STATUS_ERROR " (%s)",
|
strZ(strNewFmt(INFO_STANZA_STATUS_ERROR " (%s)",
|
||||||
strZ(varStr(kvGet(stanzaStatus, STATUS_KEY_MESSAGE_VAR))))),
|
strZ(varStr(kvGet(stanzaStatus, STATUS_KEY_MESSAGE_VAR))))),
|
||||||
backupLockHeld == true ? " (" INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP ")" : "");
|
backupLockHeld == true ?
|
||||||
|
strZ(strNewFmt(" (" INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP "%s)", strZ(percentCompleteStr))) :
|
||||||
|
"");
|
||||||
|
|
||||||
// Output the status per repo
|
// Output the status per repo
|
||||||
VariantList *repoSection = kvGetList(stanzaInfo, STANZA_KEY_REPO_VAR);
|
VariantList *repoSection = kvGetList(stanzaInfo, STANZA_KEY_REPO_VAR);
|
||||||
@ -1508,14 +1526,20 @@ infoRender(void)
|
|||||||
strCatFmt(
|
strCatFmt(
|
||||||
resultStr, "%s (%s%s\n", INFO_STANZA_STATUS_ERROR,
|
resultStr, "%s (%s%s\n", INFO_STANZA_STATUS_ERROR,
|
||||||
strZ(varStr(kvGet(stanzaStatus, STATUS_KEY_MESSAGE_VAR))),
|
strZ(varStr(kvGet(stanzaStatus, STATUS_KEY_MESSAGE_VAR))),
|
||||||
backupLockHeld == true ? ", " INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP ")" : ")");
|
backupLockHeld == true ?
|
||||||
|
strZ(strNewFmt(", " INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP "%s)", strZ(percentCompleteStr))) :
|
||||||
|
")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Change displayed status if backup lock is found
|
// Change displayed status if backup lock is found
|
||||||
if (backupLockHeld)
|
if (backupLockHeld)
|
||||||
strCatFmt(resultStr, "%s (%s)\n", INFO_STANZA_STATUS_OK, INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP);
|
{
|
||||||
|
strCatFmt(
|
||||||
|
resultStr, "%s (%s%s)\n", INFO_STANZA_STATUS_OK, INFO_STANZA_STATUS_MESSAGE_LOCK_BACKUP,
|
||||||
|
strZ(percentCompleteStr));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
strCatFmt(resultStr, "%s\n", INFO_STANZA_STATUS_OK);
|
strCatFmt(resultStr, "%s\n", INFO_STANZA_STATUS_OK);
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ Lock Handler
|
|||||||
#include "common/lock.h"
|
#include "common/lock.h"
|
||||||
#include "common/log.h"
|
#include "common/log.h"
|
||||||
#include "common/memContext.h"
|
#include "common/memContext.h"
|
||||||
|
#include "common/type/json.h"
|
||||||
#include "common/user.h"
|
#include "common/user.h"
|
||||||
#include "common/wait.h"
|
#include "common/wait.h"
|
||||||
#include "storage/helper.h"
|
#include "storage/helper.h"
|
||||||
@ -31,6 +32,10 @@ Constants
|
|||||||
// general system error.
|
// general system error.
|
||||||
#define LOCK_ON_EXEC_ID -2
|
#define LOCK_ON_EXEC_ID -2
|
||||||
|
|
||||||
|
#define LOCK_KEY_EXEC_ID STRID6("execId", 0x12e0c56051)
|
||||||
|
#define LOCK_KEY_PERCENT_COMPLETE STRID6("pctCplt", 0x14310a140d01)
|
||||||
|
#define LOCK_KEY_PROCESS_ID STRID5("pid", 0x11300)
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Lock type names
|
Lock type names
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
@ -104,15 +109,17 @@ lockReadFileData(const String *const lockFile, const int fd)
|
|||||||
ioCopyP(ioFdReadNewOpen(lockFile, fd, 0), write);
|
ioCopyP(ioFdReadNewOpen(lockFile, fd, 0), write);
|
||||||
ioWriteClose(write);
|
ioWriteClose(write);
|
||||||
|
|
||||||
// Parse the file
|
JsonRead *const json = jsonReadNew(strNewBuf(buffer));
|
||||||
const StringList *const parse = strLstNewSplitZ(strNewBuf(buffer), LF_Z);
|
jsonReadObjectBegin(json);
|
||||||
|
|
||||||
MEM_CONTEXT_PRIOR_BEGIN()
|
MEM_CONTEXT_PRIOR_BEGIN()
|
||||||
{
|
{
|
||||||
if (strLstSize(parse) == 3)
|
result.execId = jsonReadStr(jsonReadKeyRequireStrId(json, LOCK_KEY_EXEC_ID));
|
||||||
result.execId = strDup(strLstGet(parse, 1));
|
|
||||||
|
|
||||||
result.processId = cvtZToInt(strZ(strLstGet(parse, 0)));
|
if (jsonReadKeyExpectStrId(json, LOCK_KEY_PERCENT_COMPLETE))
|
||||||
|
result.percentComplete = varNewUInt(jsonReadUInt(json));
|
||||||
|
|
||||||
|
result.processId = jsonReadInt(jsonReadKeyRequireStrId(json, LOCK_KEY_PROCESS_ID));
|
||||||
}
|
}
|
||||||
MEM_CONTEXT_PRIOR_END();
|
MEM_CONTEXT_PRIOR_END();
|
||||||
}
|
}
|
||||||
@ -217,11 +224,12 @@ lockRead(const String *const lockPath, const String *const stanza, const LockTyp
|
|||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Write contents of lock file
|
Write contents of lock file
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static void
|
void
|
||||||
lockWriteData(const LockType lockType)
|
lockWriteData(const LockType lockType, const LockWriteDataParam param)
|
||||||
{
|
{
|
||||||
FUNCTION_LOG_BEGIN(logLevelTrace);
|
FUNCTION_LOG_BEGIN(logLevelTrace);
|
||||||
FUNCTION_LOG_PARAM(ENUM, lockType);
|
FUNCTION_LOG_PARAM(ENUM, lockType);
|
||||||
|
FUNCTION_LOG_PARAM(VARIANT, param.percentComplete);
|
||||||
FUNCTION_LOG_END();
|
FUNCTION_LOG_END();
|
||||||
|
|
||||||
ASSERT(lockType < lockTypeAll);
|
ASSERT(lockType < lockTypeAll);
|
||||||
@ -230,9 +238,36 @@ lockWriteData(const LockType lockType)
|
|||||||
|
|
||||||
MEM_CONTEXT_TEMP_BEGIN()
|
MEM_CONTEXT_TEMP_BEGIN()
|
||||||
{
|
{
|
||||||
|
// Build the json object
|
||||||
|
JsonWrite *json = jsonWriteNewP();
|
||||||
|
jsonWriteObjectBegin(json);
|
||||||
|
|
||||||
|
jsonWriteStr(jsonWriteKeyStrId(json, LOCK_KEY_EXEC_ID), lockLocal.execId);
|
||||||
|
|
||||||
|
if (param.percentComplete != NULL)
|
||||||
|
jsonWriteUInt(jsonWriteKeyStrId(json, LOCK_KEY_PERCENT_COMPLETE), varUInt(param.percentComplete));
|
||||||
|
|
||||||
|
jsonWriteInt(jsonWriteKeyStrId(json, LOCK_KEY_PROCESS_ID), getpid());
|
||||||
|
|
||||||
|
jsonWriteObjectEnd(json);
|
||||||
|
|
||||||
|
if (lockType == lockTypeBackup && lockLocal.held != lockTypeNone)
|
||||||
|
{
|
||||||
|
// Seek to beginning of backup lock file
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockType].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockType].name));
|
||||||
|
|
||||||
|
// In case the current write is ever shorter than the previous one
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
ftruncate(lockLocal.file[lockType].fd, 0) == -1, FileWriteError, "unable to truncate '%s'",
|
||||||
|
strZ(lockLocal.file[lockType].name));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write lock file data
|
||||||
IoWrite *const write = ioFdWriteNewOpen(lockLocal.file[lockType].name, lockLocal.file[lockType].fd, 0);
|
IoWrite *const write = ioFdWriteNewOpen(lockLocal.file[lockType].name, lockLocal.file[lockType].fd, 0);
|
||||||
|
|
||||||
ioCopyP(ioBufferReadNewOpen(BUFSTR(strNewFmt("%d" LF_Z "%s" LF_Z, getpid(), strZ(lockLocal.execId)))), write);
|
ioCopyP(ioBufferReadNewOpen(BUFSTR(strNewFmt("%s" LF_Z, strZ(jsonWriteResult(json))))), write);
|
||||||
ioWriteClose(write);
|
ioWriteClose(write);
|
||||||
}
|
}
|
||||||
MEM_CONTEXT_TEMP_END();
|
MEM_CONTEXT_TEMP_END();
|
||||||
@ -418,7 +453,7 @@ lockAcquire(
|
|||||||
}
|
}
|
||||||
// Else write lock data unless we locked an execId match
|
// Else write lock data unless we locked an execId match
|
||||||
else if (lockLocal.file[lockIdx].fd != LOCK_ON_EXEC_ID)
|
else if (lockLocal.file[lockIdx].fd != LOCK_ON_EXEC_ID)
|
||||||
lockWriteData(lockIdx);
|
lockWriteDataP(lockIdx);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
|
@ -15,13 +15,14 @@ typedef enum
|
|||||||
lockTypeNone,
|
lockTypeNone,
|
||||||
} LockType;
|
} LockType;
|
||||||
|
|
||||||
#include "common/type/string.h"
|
#include "common/type/variant.h"
|
||||||
|
|
||||||
// Lock data
|
// Lock data
|
||||||
typedef struct LockData
|
typedef struct LockData
|
||||||
{
|
{
|
||||||
pid_t processId; // Process holding the lock
|
pid_t processId; // Process holding the lock
|
||||||
const String *execId; // Exec id of process holding the lock
|
const String *execId; // Exec id of process holding the lock
|
||||||
|
Variant *percentComplete; // Percentage of backup complete * 100 (when not NULL)
|
||||||
} LockData;
|
} LockData;
|
||||||
|
|
||||||
#include "common/time.h"
|
#include "common/time.h"
|
||||||
@ -45,6 +46,18 @@ bool lockRelease(bool failOnNoLock);
|
|||||||
// Build lock file name
|
// Build lock file name
|
||||||
String *lockFileName(const String *stanza, LockType lockType);
|
String *lockFileName(const String *stanza, LockType lockType);
|
||||||
|
|
||||||
|
// Write data to a lock file
|
||||||
|
typedef struct LockWriteDataParam
|
||||||
|
{
|
||||||
|
VAR_PARAM_HEADER;
|
||||||
|
const Variant *percentComplete; // Percentage of backup complete * 100 (when not NULL)
|
||||||
|
} LockWriteDataParam;
|
||||||
|
|
||||||
|
#define lockWriteDataP(lockType, ...) \
|
||||||
|
lockWriteData(lockType, (LockWriteDataParam) {VAR_PARAM_INIT, __VA_ARGS__})
|
||||||
|
|
||||||
|
void lockWriteData(LockType lockType, LockWriteDataParam param);
|
||||||
|
|
||||||
// Read a lock file held by another process to get information about what the process is doing. This is a lower-level version to use
|
// Read a lock file held by another process to get information about what the process is doing. This is a lower-level version to use
|
||||||
// when the lock file name is already known and the lock file may need to be removed.
|
// when the lock file name is already known and the lock file may need to be removed.
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -172,6 +172,9 @@ main(int argListSize, const char *argList[])
|
|||||||
cfgLoadLogFile();
|
cfgLoadLogFile();
|
||||||
cmdBegin();
|
cmdBegin();
|
||||||
|
|
||||||
|
// Null out any backup percent complete value in the backup lock file
|
||||||
|
lockWriteDataP(lockTypeBackup);
|
||||||
|
|
||||||
// Run expire
|
// Run expire
|
||||||
cmdExpire();
|
cmdExpire();
|
||||||
}
|
}
|
||||||
|
@ -62,21 +62,21 @@ full backup - create pg_stat link, pg_clog dir (db-primary host)
|
|||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --manifest-save-threshold=3 --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-primary/repo --repo1-type=cifs --stanza=db --start-fast --type=full
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --checksum-page --compress-level=3 --compress-type=none --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --manifest-save-threshold=3 --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --process-max=1 --protocol-timeout=60 --repo1-path=[TEST_PATH]/db-primary/repo --repo1-type=cifs --stanza=db --start-fast --type=full
|
||||||
P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-type=count', the repository may run out of space
|
P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-type=count', the repository may run out of space
|
||||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.33%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.32%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P00 WARN: invalid page checksums found in file [TEST_PATH]/db-primary/db/base/base/32768/33001 at pages 0, 3-5, 7
|
P00 WARN: invalid page checksums found in file [TEST_PATH]/db-primary/db/base/base/32768/33001 at pages 0, 3-5, 7
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.99%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.98%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.65%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.65%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.31%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.31%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.64%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.64%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
||||||
P00 WARN: invalid page checksum found in file [TEST_PATH]/db-primary/db/base/base/16384/17000 at page 1
|
P00 WARN: invalid page checksum found in file [TEST_PATH]/db-primary/db/base/base/16384/17000 at page 1
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.81%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.81%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.98%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.97%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.98%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_hba.conf (9B, 99.99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_hba.conf (9B, 99.99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/special-!_.*'()&!@;:+,? (0B, 100.00%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/special-!_.*'()&!@;:+,? (0B, 100.00%)
|
||||||
P00 INFO: new backup label = [BACKUP-FULL-1]
|
P00 INFO: new backup label = [BACKUP-FULL-1]
|
||||||
@ -305,20 +305,20 @@ P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-FULL-2]/f
|
|||||||
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-FULL-2]/pg_data/PG_VERSION' from resumed backup (no checksum in resumed manifest)
|
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-FULL-2]/pg_data/PG_VERSION' from resumed backup (no checksum in resumed manifest)
|
||||||
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-FULL-2]/pg_data/special-!_.*'()&!@;:+,?' from resumed backup (zero size)
|
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-FULL-2]/pg_data/special-!_.*'()&!@;:+,?' from resumed backup (zero size)
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.32%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.32%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.99%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.98%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.65%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.64%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.31%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.30%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.64%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.63%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.81%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.80%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.97%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.97%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.98%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.98%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/pg_hba.conf (9B, 99.99%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/pg_hba.conf (9B, 99.98%) checksum dd4cea0cae348309f9de28ad4ded8ee2cc2e6d5b
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.99%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.98%) checksum 238a131a3e8eb98d1fc5b27d882ca40b7618fd2a
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: checksum resumed file [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 100.00%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zero_from_start (0B, 100.00%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zero_from_start (0B, 100.00%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/special-!_.*'()&!@;:+,? (0B, 100.00%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/special-!_.*'()&!@;:+,? (0B, 100.00%)
|
||||||
@ -962,27 +962,27 @@ P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to
|
|||||||
P00 WARN: resumable backup [BACKUP-INCR-2] of same type exists -- remove invalid files and resume
|
P00 WARN: resumable backup [BACKUP-INCR-2] of same type exists -- remove invalid files and resume
|
||||||
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-INCR-2]/pg_data/changesize.txt' from resumed backup (mismatched size)
|
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-INCR-2]/pg_data/changesize.txt' from resumed backup (mismatched size)
|
||||||
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-INCR-2]/pg_data/zerosize.txt' from resumed backup (zero size)
|
P00 DETAIL: remove file '[TEST_PATH]/db-primary/repo/backup/db/[BACKUP-INCR-2]/pg_data/zerosize.txt' from resumed backup (zero size)
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.32%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33001 (64KB, 33.31%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.98%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/44000_init (32KB, 49.97%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.64%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.63%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.30%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.29%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.63%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.62%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.79%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.79%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.96%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.97%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P00 WARN: resumed backup file pg_data/badchecksum.txt does not have expected checksum f927212cd08d11a42a666b2f04235398e9ceeb51. The file will be recopied and backup will continue but this may be an issue unless the resumed backup path in the repository is known to be corrupted.
|
P00 WARN: resumed backup file pg_data/badchecksum.txt does not have expected checksum f927212cd08d11a42a666b2f04235398e9ceeb51. The file will be recopied and backup will continue but this may be an issue unless the resumed backup path in the repository is known to be corrupted.
|
||||||
NOTE: this does not indicate a problem with the PostgreSQL page checksums.
|
NOTE: this does not indicate a problem with the PostgreSQL page checksums.
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changesize.txt (9B, 99.98%) checksum 3905d5be2ec8d67f41435dab5e0dcda3ae47455d
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changesize.txt (9B, 99.97%) checksum 3905d5be2ec8d67f41435dab5e0dcda3ae47455d
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zerosize.txt (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zerosize.txt (0B, 99.99%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 100.00%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 99.99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
||||||
@ -1187,19 +1187,19 @@ P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/327
|
|||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.64%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000.32767 (32KB, 66.64%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.30%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/33000 (32KB, 83.30%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.63%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/17000 (16KB, 91.63%) checksum e0101dd8ffb910c9c202ca35b5f828bcb9697bed
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.80%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 95.79%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.96%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/12000 (8KB, 99.96%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.97%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/postgresql.conf (21B, 99.97%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/badchecksum.txt (11B, 99.98%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zerosize.txt (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/zerosize.txt (0B, 99.99%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 100.00%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt (7B, 99.99%) checksum d85de07d6421d90aa9191c11c889bfde43680f0f
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt: file size 7 is not divisible by page size 8192
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
||||||
@ -1751,25 +1751,25 @@ P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-t
|
|||||||
P00 INFO: last backup label = [BACKUP-INCR-3], version = [VERSION-1]
|
P00 INFO: last backup label = [BACKUP-INCR-3], version = [VERSION-1]
|
||||||
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-INCR-3]
|
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-INCR-3]
|
||||||
P00 WARN: file 'base/16384/17000' has same timestamp as prior but different size, enabling delta checksum
|
P00 WARN: file 'base/16384/17000' has same timestamp as prior but different size, enabling delta checksum
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.35%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.34%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.52%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.51%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.41%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.40%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.96%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (8B, 99.97%) checksum 9a53d532e27785e681766c98516a5e93f096a501
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (8B, 99.97%) checksum 9a53d532e27785e681766c98516a5e93f096a501
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.97%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/base2.txt (5B, 99.98%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/base2.txt (5B, 99.98%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 100.00%) checksum e324463005236d83e6e54795dbddd20a74533bf3
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 99.99%) checksum e324463005236d83e6e54795dbddd20a74533bf3
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2]
|
P00 DETAIL: reference pg_data/PG_VERSION to [BACKUP-FULL-2]
|
||||||
P00 DETAIL: reference pg_data/badchecksum.txt to [BACKUP-DIFF-1]
|
P00 DETAIL: reference pg_data/badchecksum.txt to [BACKUP-DIFF-1]
|
||||||
@ -1970,26 +1970,26 @@ P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-t
|
|||||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||||
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.35%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.34%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.52%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.51%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.41%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.40%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.96%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (8B, 99.97%) checksum 9a53d532e27785e681766c98516a5e93f096a501
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (8B, 99.97%) checksum 9a53d532e27785e681766c98516a5e93f096a501
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/base/16384/17000: file size 8 is not divisible by page size 8192
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.97%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/base2.txt (5B, 99.98%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/base2.txt (5B, 99.98%) checksum 09b5e31766be1dba1ec27de82f975c1b6eea2a92
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.99%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.99%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 100.00%) checksum e324463005236d83e6e54795dbddd20a74533bf3
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt (8B, 99.99%) checksum e324463005236d83e6e54795dbddd20a74533bf3
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt: file size 8 is not divisible by page size 8192
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
||||||
@ -2188,23 +2188,23 @@ P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-t
|
|||||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||||
P00 WARN: diff backup cannot alter compress-type option to 'zst', reset to value in [BACKUP-FULL-2]
|
P00 WARN: diff backup cannot alter compress-type option to 'zst', reset to value in [BACKUP-FULL-2]
|
||||||
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
P00 WARN: diff backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.35%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.34%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.52%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.52%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.70%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.87%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.41%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.41%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.96%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.97%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.97%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: match file from prior backup [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.98%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 100.00%) checksum dfcb8679956b734706cf87259d50c88f83e80e66
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99.99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt: file size 12 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt: file size 12 is not divisible by page size 8192
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
P00 WARN: page misalignment in file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt: file size 7 is not divisible by page size 8192
|
||||||
@ -2400,26 +2400,26 @@ full backup - update file (db-primary host)
|
|||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-primary/repo --stanza=db --start-fast --type=full
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base-2 --protocol-timeout=60 --repo1-hardlink --repo1-path=[TEST_PATH]/db-primary/repo --stanza=db --start-fast --type=full
|
||||||
P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-type=count', the repository may run out of space
|
P00 WARN: option 'repo1-retention-full' is not set for 'repo1-retention-full-type=count', the repository may run out of space
|
||||||
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
HINT: to retain full backups indefinitely (without warning), set option 'repo1-retention-full' to the maximum.
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.35%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33001 (64KB, 36.34%) checksum 6bf316f11d28c28914ea9be92c00de9bea6d9a6b
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.52%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/44000_init (32KB, 54.51%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33000.32767 (32KB, 72.69%) checksum 1d11c42e6080e805a7b12bf9f83f4def548d92ac
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/33000 (32KB, 90.86%) checksum 1d73a0052828531770e7c155aeb22338e017e196
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.41%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/global/pg_control (8KB, 95.40%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/1/12000 (8KB, 99.95%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/postgresql.conf (21B, 99.96%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.97%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/badchecksum.txt (11B, 99.96%) checksum f927212cd08d11a42a666b2f04235398e9ceeb51
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (9B, 99.97%) checksum 7579ada0808d7f98087a0a586d0df9de009cdc33
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/17000 (9B, 99.97%) checksum 7579ada0808d7f98087a0a586d0df9de009cdc33
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.98%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changecontent.txt (7B, 99.97%) checksum a094d94583e209556d03c3c5da33131a065f1689
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_stat/global.stat (5B, 99.98%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/changetime.txt (4B, 99.98%) checksum 88087292ed82e26f3eb824d0bffc05ccf7a30f8d
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/32768/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/16384/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/base/1/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/PG_VERSION (3B, 99.98%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zerosize.txt (0B, 99.98%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zero_from_start (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/zero_from_start (0B, 99.98%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/special-!_.*'()&!@;:+,? (0B, 99.99%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/special-!_.*'()&!@;:+,? (0B, 99.98%)
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 100.00%) checksum dfcb8679956b734706cf87259d50c88f83e80e66
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt (12B, 99.99%) checksum dfcb8679956b734706cf87259d50c88f83e80e66
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base-2/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt (7B, 100.00%) checksum dc7f76e43c46101b47acc55ae4d593a9e6983578
|
||||||
P00 INFO: new backup label = [BACKUP-FULL-3]
|
P00 INFO: new backup label = [BACKUP-FULL-3]
|
||||||
P00 INFO: full backup size = 176KB, file total = 21
|
P00 INFO: full backup size = 176KB, file total = 21
|
||||||
|
@ -314,8 +314,8 @@ full backup - create first full backup (db-primary host)
|
|||||||
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup
|
> [CONTAINER-EXEC] db-primary [BACKREST-BIN] --config=[TEST_PATH]/db-primary/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup
|
||||||
------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------
|
||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-gcs-bucket=gcsbucket --repo1-gcs-endpoint=gcs:4443 --repo1-gcs-key=<redacted> --repo1-gcs-key-type=token --repo1-path=/ --repo1-retention-full=2 --no-repo1-storage-verify-tls --repo1-type=gcs --stanza=db --start-fast --type=full
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-gcs-bucket=gcsbucket --repo1-gcs-endpoint=gcs:4443 --repo1-gcs-key=<redacted> --repo1-gcs-key-type=token --repo1-path=/ --repo1-retention-full=2 --no-repo1-storage-verify-tls --repo1-type=gcs --stanza=db --start-fast --type=full
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.33%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.32%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.66%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.65%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum f92539dea1f9482e2946c1138eeeecdea29d7f19
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum f92539dea1f9482e2946c1138eeeecdea29d7f19
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
||||||
@ -472,8 +472,8 @@ diff backup - diff changed to full backup (db-primary host)
|
|||||||
------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------
|
||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-gcs-bucket=gcsbucket --repo1-gcs-endpoint=gcs:4443 --repo1-gcs-key=<redacted> --repo1-gcs-key-type=token --repo1-path=/ --repo1-retention-full=2 --no-repo1-storage-verify-tls --repo1-type=gcs --stanza=db --start-fast --type=diff
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-type=zst --config=[TEST_PATH]/db-primary/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/db-primary/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/db-primary/log[] --no-log-timestamp --no-online --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-gcs-bucket=gcsbucket --repo1-gcs-endpoint=gcs:4443 --repo1-gcs-key=<redacted> --repo1-gcs-key-type=token --repo1-path=/ --repo1-retention-full=2 --no-repo1-storage-verify-tls --repo1-type=gcs --stanza=db --start-fast --type=diff
|
||||||
P00 WARN: no prior backup exists, diff backup has been changed to full
|
P00 WARN: no prior backup exists, diff backup has been changed to full
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.33%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.32%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.66%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.65%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum 762dae884fdccb805c5f3283662ea0f8da55f228
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum 762dae884fdccb805c5f3283662ea0f8da55f228
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520
|
||||||
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
P01 DETAIL: backup file [TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
||||||
|
@ -316,8 +316,8 @@ full backup - create first full backup (backup host)
|
|||||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup
|
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --repo1-retention-full=2 --no-online --type=full --stanza=db backup
|
||||||
------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------
|
||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=lz4 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-primary --pg1-host-cert-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.crt --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-primary/pgbackrest.conf --pg1-host-key-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.key --pg1-host-type=tls --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-azure-account=<redacted> --repo1-azure-container=azcontainer --repo1-azure-key=<redacted> --repo1-azure-uri-style=path --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-storage-host=azure --no-repo1-storage-verify-tls --repo1-type=azure --stanza=db --start-fast --type=full
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=lz4 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-primary --pg1-host-cert-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.crt --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-primary/pgbackrest.conf --pg1-host-key-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.key --pg1-host-type=tls --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-azure-account=<redacted> --repo1-azure-container=azcontainer --repo1-azure-key=<redacted> --repo1-azure-uri-style=path --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-storage-host=azure --no-repo1-storage-verify-tls --repo1-type=azure --stanza=db --start-fast --type=full
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.33%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.32%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.66%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.65%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum f92539dea1f9482e2946c1138eeeecdea29d7f19
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum f92539dea1f9482e2946c1138eeeecdea29d7f19
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4c77c900f7af0d9ab13fa9982051a42e0b637f6c
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
||||||
@ -525,8 +525,8 @@ diff backup - diff changed to full backup (backup host)
|
|||||||
------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------
|
||||||
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=lz4 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-primary --pg1-host-cert-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.crt --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-primary/pgbackrest.conf --pg1-host-key-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.key --pg1-host-type=tls --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-azure-account=<redacted> --repo1-azure-container=azcontainer --repo1-azure-key=<redacted> --repo1-azure-uri-style=path --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-storage-host=azure --no-repo1-storage-verify-tls --repo1-type=azure --stanza=db --start-fast --type=diff
|
P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=[BUFFER-SIZE] --compress-level=3 --compress-level-network=1 --compress-type=lz4 --config=[TEST_PATH]/backup/pgbackrest.conf --db-timeout=45 --exec-id=[EXEC-ID] --job-retry=0 --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=[LOG-LEVEL-FILE] --log-level-stderr=off --log-path=[TEST_PATH]/backup/log[] --no-log-timestamp --no-online --pg1-host=db-primary --pg1-host-cert-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.crt --pg1-host-cmd=[BACKREST-BIN] --pg1-host-config=[TEST_PATH]/db-primary/pgbackrest.conf --pg1-host-key-file=[REPO_PATH]/test/certificate/pgbackrest-test-client.key --pg1-host-type=tls --pg1-host-user=[USER-1] --pg1-path=[TEST_PATH]/db-primary/db/base --protocol-timeout=60 --repo1-azure-account=<redacted> --repo1-azure-container=azcontainer --repo1-azure-key=<redacted> --repo1-azure-uri-style=path --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/ --repo1-retention-full=2 --repo1-storage-host=azure --no-repo1-storage-verify-tls --repo1-type=azure --stanza=db --start-fast --type=diff
|
||||||
P00 WARN: no prior backup exists, diff backup has been changed to full
|
P00 WARN: no prior backup exists, diff backup has been changed to full
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.33%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/RECOVERYXLOG (16MB, 33.32%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.66%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000002 (16MB, 66.65%) checksum 51a8525d254c01f5edddda30b7fe697c7e44705c
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum 762dae884fdccb805c5f3283662ea0f8da55f228
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/000000010000000100000001 (16MB, 99.98%) checksum 762dae884fdccb805c5f3283662ea0f8da55f228
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/global/pg_control (8KB, 100.00%) checksum 4969435f3b36bfaa0f5a486bef97f1988a135520
|
||||||
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
P01 DETAIL: backup file db-primary:[TEST_PATH]/db-primary/db/base/pg_xlog/archive_status/000000010000000100000002.ready (0B, 100.00%)
|
||||||
|
@ -601,6 +601,28 @@ testBackupPqScript(unsigned int pgVersion, time_t backupTimeStart, TestBackupPqS
|
|||||||
THROW_FMT(AssertError, "unsupported test version %u", pgVersion); // {uncoverable - no invalid versions in tests}
|
THROW_FMT(AssertError, "unsupported test version %u", pgVersion); // {uncoverable - no invalid versions in tests}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/***********************************************************************************************************************************
|
||||||
|
Wrap cmdBackup() with lock acquire and release
|
||||||
|
***********************************************************************************************************************************/
|
||||||
|
void testCmdBackup(void)
|
||||||
|
{
|
||||||
|
FUNCTION_HARNESS_VOID();
|
||||||
|
|
||||||
|
lockAcquire(TEST_PATH_STR, cfgOptionStr(cfgOptStanza), cfgOptionStr(cfgOptExecId), lockTypeBackup, 0, true);
|
||||||
|
|
||||||
|
TRY_BEGIN()
|
||||||
|
{
|
||||||
|
cmdBackup();
|
||||||
|
}
|
||||||
|
FINALLY()
|
||||||
|
{
|
||||||
|
lockRelease(true);
|
||||||
|
}
|
||||||
|
TRY_END();
|
||||||
|
|
||||||
|
FUNCTION_HARNESS_RETURN_VOID();
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************************************************************************
|
/***********************************************************************************************************************************
|
||||||
Test Run
|
Test Run
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
@ -1851,8 +1873,11 @@ testRun(void)
|
|||||||
ProtocolParallelJob *job = protocolParallelJobNew(VARSTRDEF("key"), protocolCommandNew(strIdFromZ("x")));
|
ProtocolParallelJob *job = protocolParallelJobNew(VARSTRDEF("key"), protocolCommandNew(strIdFromZ("x")));
|
||||||
protocolParallelJobErrorSet(job, errorTypeCode(&AssertError), STRDEF("error message"));
|
protocolParallelJobErrorSet(job, errorTypeCode(&AssertError), STRDEF("error message"));
|
||||||
|
|
||||||
|
unsigned int currentPercentComplete = 0;
|
||||||
|
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
backupJobResult((Manifest *)1, NULL, storageTest, strLstNew(), job, false, 0, NULL), AssertError, "error message");
|
backupJobResult((Manifest *)1, NULL, storageTest, strLstNew(), job, false, 0, NULL, ¤tPercentComplete),
|
||||||
|
AssertError, "error message");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
TEST_TITLE("report host/100% progress on noop result");
|
TEST_TITLE("report host/100% progress on noop result");
|
||||||
@ -1882,9 +1907,15 @@ testRun(void)
|
|||||||
OBJ_NEW_END();
|
OBJ_NEW_END();
|
||||||
|
|
||||||
uint64_t sizeProgress = 0;
|
uint64_t sizeProgress = 0;
|
||||||
|
currentPercentComplete = 4567;
|
||||||
|
|
||||||
TEST_RESULT_VOID(
|
TEST_RESULT_VOID(
|
||||||
backupJobResult(manifest, STRDEF("host"), storageTest, strLstNew(), job, false, 0, &sizeProgress), "log noop result");
|
lockAcquire(TEST_PATH_STR, cfgOptionStr(cfgOptStanza), cfgOptionStr(cfgOptExecId), lockTypeBackup, 0, true),
|
||||||
|
"acquire backup lock");
|
||||||
|
TEST_RESULT_VOID(
|
||||||
|
backupJobResult(manifest, STRDEF("host"), storageTest, strLstNew(), job, false, 0, &sizeProgress,
|
||||||
|
¤tPercentComplete), "log noop result");
|
||||||
|
TEST_RESULT_VOID(lockRelease(true), "release backup lock");
|
||||||
|
|
||||||
TEST_RESULT_LOG("P00 DETAIL: match file from prior backup host:" TEST_PATH "/test (0B, 100.00%)");
|
TEST_RESULT_LOG("P00 DETAIL: match file from prior backup host:" TEST_PATH "/test (0B, 100.00%)");
|
||||||
}
|
}
|
||||||
@ -1929,7 +1960,7 @@ testRun(void)
|
|||||||
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_POSTMTRPID, "PID");
|
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_POSTMTRPID, "PID");
|
||||||
|
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
cmdBackup(), PgRunningError,
|
testCmdBackup(), PgRunningError,
|
||||||
"--no-online passed but " PG_FILE_POSTMTRPID " exists - looks like " PG_NAME " is running. Shut down " PG_NAME " and"
|
"--no-online passed but " PG_FILE_POSTMTRPID " exists - looks like " PG_NAME " is running. Shut down " PG_NAME " and"
|
||||||
" try again, or use --force.");
|
" try again, or use --force.");
|
||||||
|
|
||||||
@ -1950,13 +1981,13 @@ testRun(void)
|
|||||||
|
|
||||||
HRN_STORAGE_PUT_Z(storagePgWrite(), "postgresql.conf", "CONFIGSTUFF");
|
HRN_STORAGE_PUT_Z(storagePgWrite(), "postgresql.conf", "CONFIGSTUFF");
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG_FMT(
|
TEST_RESULT_LOG_FMT(
|
||||||
"P00 WARN: no prior backup exists, incr backup has been changed to full\n"
|
"P00 WARN: no prior backup exists, incr backup has been changed to full\n"
|
||||||
"P00 WARN: --no-online passed and " PG_FILE_POSTMTRPID " exists but --force was passed so backup will continue though"
|
"P00 WARN: --no-online passed and " PG_FILE_POSTMTRPID " exists but --force was passed so backup will continue though"
|
||||||
" it looks like " PG_NAME " is running and the backup will probably not be consistent\n"
|
" it looks like " PG_NAME " is running and the backup will probably not be consistent\n"
|
||||||
"P01 DETAIL: backup file " TEST_PATH "/pg1/global/pg_control (8KB, 99.87%%) checksum %s\n"
|
"P01 DETAIL: backup file " TEST_PATH "/pg1/global/pg_control (8KB, 99.86%%) checksum %s\n"
|
||||||
"P01 DETAIL: backup file " TEST_PATH "/pg1/postgresql.conf (11B, 100.00%%) checksum"
|
"P01 DETAIL: backup file " TEST_PATH "/pg1/postgresql.conf (11B, 100.00%%) checksum"
|
||||||
" e3db315c260e79211b7b52587123b7aa060f30ab\n"
|
" e3db315c260e79211b7b52587123b7aa060f30ab\n"
|
||||||
"P00 INFO: new backup label = [FULL-1]\n"
|
"P00 INFO: new backup label = [FULL-1]\n"
|
||||||
@ -1981,7 +2012,7 @@ testRun(void)
|
|||||||
hrnCfgArgRawStrId(argList, cfgOptType, backupTypeDiff);
|
hrnCfgArgRawStrId(argList, cfgOptType, backupTypeDiff);
|
||||||
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
||||||
|
|
||||||
TEST_ERROR(cmdBackup(), FileMissingError, "no files have changed since the last backup - this seems unlikely");
|
TEST_ERROR(testCmdBackup(), FileMissingError, "no files have changed since the last backup - this seems unlikely");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
||||||
@ -2003,7 +2034,7 @@ testRun(void)
|
|||||||
|
|
||||||
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, "VER");
|
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, "VER");
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
||||||
@ -2031,7 +2062,7 @@ testRun(void)
|
|||||||
sleepMSec(MSEC_PER_SEC - (timeMSec() % MSEC_PER_SEC));
|
sleepMSec(MSEC_PER_SEC - (timeMSec() % MSEC_PER_SEC));
|
||||||
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, "VR2");
|
HRN_STORAGE_PUT_Z(storagePgWrite(), PG_FILE_PGVERSION, "VR2");
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
||||||
@ -2065,7 +2096,8 @@ testRun(void)
|
|||||||
hrnCfgArgRawStrId(argList, cfgOptType, backupTypeDiff);
|
hrnCfgArgRawStrId(argList, cfgOptType, backupTypeDiff);
|
||||||
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG("P00 WARN: no prior backup exists, diff backup has been changed to full");
|
TEST_RESULT_LOG("P00 WARN: no prior backup exists, diff backup has been changed to full");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -2079,7 +2111,8 @@ testRun(void)
|
|||||||
hrnCfgArgKeyRawZ(argList, cfgOptRepoRetentionFull, 1, "1");
|
hrnCfgArgKeyRawZ(argList, cfgOptRepoRetentionFull, 1, "1");
|
||||||
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
HRN_CFG_LOAD(cfgCmdBackup, argList);
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: repo option not specified, defaulting to repo1\n"
|
"P00 INFO: repo option not specified, defaulting to repo1\n"
|
||||||
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = [FULL-1], version = " PROJECT_VERSION "\n"
|
||||||
@ -2101,7 +2134,8 @@ testRun(void)
|
|||||||
|
|
||||||
unsigned int backupCount = strLstSize(storageListP(storageRepoIdx(1), strNewFmt(STORAGE_PATH_BACKUP "/test1")));
|
unsigned int backupCount = strLstSize(storageListP(storageRepoIdx(1), strNewFmt(STORAGE_PATH_BACKUP "/test1")));
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: last backup label = [FULL-2], version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = [FULL-2], version = " PROJECT_VERSION "\n"
|
||||||
"P01 DETAIL: backup file " TEST_PATH "/pg1/PG_VERSION (3B, 100.00%) checksum c8663c2525f44b6d9c687fbceb4aafc63ed8b451\n"
|
"P01 DETAIL: backup file " TEST_PATH "/pg1/PG_VERSION (3B, 100.00%) checksum c8663c2525f44b6d9c687fbceb4aafc63ed8b451\n"
|
||||||
@ -2210,7 +2244,8 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_95, backupTimeStart, .noArchiveCheck = true, .noWal = true);
|
testBackupPqScriptP(PG_VERSION_95, backupTimeStart, .noArchiveCheck = true, .noWal = true);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
|
||||||
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n"
|
"P00 INFO: execute exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n"
|
||||||
@ -2349,7 +2384,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_95, backupTimeStart);
|
testBackupPqScriptP(PG_VERSION_95, backupTimeStart);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
// Enable storage features
|
// Enable storage features
|
||||||
((Storage *)storageRepoWrite())->pub.interface.feature |= 1 << storageFeaturePath;
|
((Storage *)storageRepoWrite())->pub.interface.feature |= 1 << storageFeaturePath;
|
||||||
@ -2514,7 +2549,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_95, backupTimeStart);
|
testBackupPqScriptP(PG_VERSION_95, backupTimeStart);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
// Check log
|
// Check log
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
@ -2653,7 +2688,7 @@ testRun(void)
|
|||||||
testBackupPqScriptP(
|
testBackupPqScriptP(
|
||||||
PG_VERSION_96, backupTimeStart, .noPriorWal = true, .backupStandby = true, .walCompressType = compressTypeGz);
|
PG_VERSION_96, backupTimeStart, .noPriorWal = true, .backupStandby = true, .walCompressType = compressTypeGz);
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
cmdBackup(), ArchiveTimeoutError,
|
testCmdBackup(), ArchiveTimeoutError,
|
||||||
"WAL segment 0000000105DA69BF000000FF was not archived before the 100ms timeout\n"
|
"WAL segment 0000000105DA69BF000000FF was not archived before the 100ms timeout\n"
|
||||||
"HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n"
|
"HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n"
|
||||||
"HINT: check the PostgreSQL server log for errors.\n"
|
"HINT: check the PostgreSQL server log for errors.\n"
|
||||||
@ -2663,7 +2698,7 @@ testRun(void)
|
|||||||
testBackupPqScriptP(
|
testBackupPqScriptP(
|
||||||
PG_VERSION_96, backupTimeStart, .noWal = true, .backupStandby = true, .walCompressType = compressTypeGz);
|
PG_VERSION_96, backupTimeStart, .noWal = true, .backupStandby = true, .walCompressType = compressTypeGz);
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
cmdBackup(), ArchiveTimeoutError,
|
testCmdBackup(), ArchiveTimeoutError,
|
||||||
"WAL segment 0000000105DA69C000000000 was not archived before the 100ms timeout\n"
|
"WAL segment 0000000105DA69C000000000 was not archived before the 100ms timeout\n"
|
||||||
"HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n"
|
"HINT: check the archive_command to ensure that all options are correct (especially --stanza).\n"
|
||||||
"HINT: check the PostgreSQL server log for errors.\n"
|
"HINT: check the PostgreSQL server log for errors.\n"
|
||||||
@ -2674,7 +2709,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .backupStandby = true, .walCompressType = compressTypeGz);
|
testBackupPqScriptP(PG_VERSION_96, backupTimeStart, .backupStandby = true, .walCompressType = compressTypeGz);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
// Set log level back to detail
|
// Set log level back to detail
|
||||||
harnessLogLevelSet(logLevelDetail);
|
harnessLogLevelSet(logLevelDetail);
|
||||||
@ -2839,7 +2874,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompressType = compressTypeGz, .walTotal = 3);
|
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompressType = compressTypeGz, .walTotal = 3);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
// Reset storage features
|
// Reset storage features
|
||||||
((Storage *)storageRepoWrite())->pub.interface.feature |= 1 << storageFeatureSymLink;
|
((Storage *)storageRepoWrite())->pub.interface.feature |= 1 << storageFeatureSymLink;
|
||||||
@ -2970,7 +3005,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
cmdBackup(), FileMissingError,
|
testCmdBackup(), FileMissingError,
|
||||||
"pg_control must be present in all online backups\n"
|
"pg_control must be present in all online backups\n"
|
||||||
"HINT: is something wrong with the clock or filesystem timestamps?");
|
"HINT: is something wrong with the clock or filesystem timestamps?");
|
||||||
|
|
||||||
@ -3008,7 +3043,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup. Make sure that the timeline selected converts to hexdecimal that can't be interpreted as decimal.
|
// Run backup. Make sure that the timeline selected converts to hexdecimal that can't be interpreted as decimal.
|
||||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .timeline = 0x2C, .walTotal = 2);
|
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .timeline = 0x2C, .walTotal = 2);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: last backup label = 20191027-181320F, version = " PROJECT_VERSION "\n"
|
"P00 INFO: last backup label = 20191027-181320F, version = " PROJECT_VERSION "\n"
|
||||||
@ -3135,7 +3170,7 @@ testRun(void)
|
|||||||
|
|
||||||
// Run backup
|
// Run backup
|
||||||
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompressType = compressTypeGz, .walTotal = 2);
|
testBackupPqScriptP(PG_VERSION_11, backupTimeStart, .walCompressType = compressTypeGz, .walTotal = 2);
|
||||||
TEST_RESULT_VOID(cmdBackup(), "backup");
|
TEST_RESULT_VOID(testCmdBackup(), "backup");
|
||||||
|
|
||||||
TEST_RESULT_LOG(
|
TEST_RESULT_LOG(
|
||||||
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n"
|
"P00 INFO: execute non-exclusive pg_start_backup(): backup begins after the next regular checkpoint completes\n"
|
||||||
|
@ -283,7 +283,9 @@ testRun(void)
|
|||||||
TEST_TITLE("lock file with another process lock, processId is invalid");
|
TEST_TITLE("lock file with another process lock, processId is invalid");
|
||||||
|
|
||||||
HRN_STORAGE_REMOVE(hrnStorage, "lock/db" STOP_FILE_EXT, .errorOnMissing = true, .comment = "remove stanza stop file");
|
HRN_STORAGE_REMOVE(hrnStorage, "lock/db" STOP_FILE_EXT, .errorOnMissing = true, .comment = "remove stanza stop file");
|
||||||
HRN_STORAGE_PUT_Z(hrnStorage, "lock/db-backup" LOCK_FILE_EXT, "-32768", .comment = "create lock file with invalid PID");
|
HRN_STORAGE_PUT_Z(
|
||||||
|
hrnStorage, "lock/db-backup" LOCK_FILE_EXT, "{\"execId\":\"test-1\",\"pid\":-32768}",
|
||||||
|
.comment = "create lock file with invalid PID");
|
||||||
|
|
||||||
HRN_FORK_BEGIN()
|
HRN_FORK_BEGIN()
|
||||||
{
|
{
|
||||||
|
@ -358,7 +358,7 @@ testRun(void)
|
|||||||
"text - multi-repo, single stanza, one wal segment");
|
"text - multi-repo, single stanza, one wal segment");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
TEST_TITLE("coverage for stanzaStatus branches");
|
TEST_TITLE("coverage for stanzaStatus branches && percent complete null");
|
||||||
|
|
||||||
// Db1 and Db3 (from above) have same system-id and db-version so consider them the same for WAL reporting
|
// Db1 and Db3 (from above) have same system-id and db-version so consider them the same for WAL reporting
|
||||||
HRN_STORAGE_PUT_EMPTY(
|
HRN_STORAGE_PUT_EMPTY(
|
||||||
@ -424,6 +424,7 @@ testRun(void)
|
|||||||
TEST_RESULT_INT_NE(
|
TEST_RESULT_INT_NE(
|
||||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza1"), STRDEF("777-afafafaf"), lockTypeBackup, 0, true),
|
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza1"), STRDEF("777-afafafaf"), lockTypeBackup, 0, true),
|
||||||
-1, "create backup/expire lock");
|
-1, "create backup/expire lock");
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup), "write lock data");
|
||||||
|
|
||||||
// Notify parent that lock has been acquired
|
// Notify parent that lock has been acquired
|
||||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||||
@ -617,7 +618,7 @@ testRun(void)
|
|||||||
// backup.info/archive.info files exist, backups exist, archives exist, multi-repo (mixed) with one stanza existing on both
|
// backup.info/archive.info files exist, backups exist, archives exist, multi-repo (mixed) with one stanza existing on both
|
||||||
// repos and the db history is different between the repos
|
// repos and the db history is different between the repos
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
TEST_TITLE("mixed multi-repo");
|
TEST_TITLE("mixed multi-repo, percent complete non-null");
|
||||||
|
|
||||||
HRN_INFO_PUT(
|
HRN_INFO_PUT(
|
||||||
storageTest, TEST_PATH "/repo/" STORAGE_PATH_ARCHIVE "/stanza1/" INFO_ARCHIVE_FILE,
|
storageTest, TEST_PATH "/repo/" STORAGE_PATH_ARCHIVE "/stanza1/" INFO_ARCHIVE_FILE,
|
||||||
@ -1015,6 +1016,7 @@ testRun(void)
|
|||||||
TEST_RESULT_INT_NE(
|
TEST_RESULT_INT_NE(
|
||||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
||||||
-1, "create backup/expire lock");
|
-1, "create backup/expire lock");
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup, .percentComplete = VARUINT(4545)), "write lock data");
|
||||||
|
|
||||||
// Notify parent that lock has been acquired
|
// Notify parent that lock has been acquired
|
||||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||||
@ -1447,6 +1449,7 @@ testRun(void)
|
|||||||
TEST_RESULT_INT_NE(
|
TEST_RESULT_INT_NE(
|
||||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
||||||
-1, "create backup/expire lock");
|
-1, "create backup/expire lock");
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup, .percentComplete = VARUINT(5555)), "write lock data");
|
||||||
|
|
||||||
// Notify parent that lock has been acquired
|
// Notify parent that lock has been acquired
|
||||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||||
@ -1519,7 +1522,7 @@ testRun(void)
|
|||||||
" backup reference list: 20201116-155000F\n"
|
" backup reference list: 20201116-155000F\n"
|
||||||
"\n"
|
"\n"
|
||||||
"stanza: stanza2\n"
|
"stanza: stanza2\n"
|
||||||
" status: mixed (backup/expire running)\n"
|
" status: mixed (backup/expire running - 55.55% complete)\n"
|
||||||
" repo1: error (no valid backups)\n"
|
" repo1: error (no valid backups)\n"
|
||||||
" repo2: error (missing stanza path)\n"
|
" repo2: error (missing stanza path)\n"
|
||||||
" cipher: mixed\n"
|
" cipher: mixed\n"
|
||||||
|
@ -32,7 +32,7 @@ testRun(void)
|
|||||||
|
|
||||||
lockLocal.file[lockTypeArchive].fd = lockFdTest;
|
lockLocal.file[lockTypeArchive].fd = lockFdTest;
|
||||||
lockLocal.file[lockTypeArchive].name = strDup(archiveLock);
|
lockLocal.file[lockTypeArchive].name = strDup(archiveLock);
|
||||||
TEST_RESULT_VOID(lockWriteData(lockTypeArchive), "write lock data");
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeArchive), "write lock data");
|
||||||
|
|
||||||
lockLocal.execId = STRDEF("2-test");
|
lockLocal.execId = STRDEF("2-test");
|
||||||
|
|
||||||
@ -202,8 +202,8 @@ testRun(void)
|
|||||||
strZ(strNewFmt(
|
strZ(strNewFmt(
|
||||||
"unable to acquire lock on file '%s': Resource temporarily unavailable\n"
|
"unable to acquire lock on file '%s': Resource temporarily unavailable\n"
|
||||||
"HINT: is another pgBackRest process running?", strZ(backupLockFile))));
|
"HINT: is another pgBackRest process running?", strZ(backupLockFile))));
|
||||||
TEST_RESULT_VOID(lockReleaseFile(lockFdTest, archiveLockFile), "release lock");
|
TEST_RESULT_VOID(lockReleaseFile(lockFdTest, archiveLockFile), "release archive lock");
|
||||||
TEST_RESULT_VOID(lockReleaseFile(lockFdTest, backupLockFile), "release lock");
|
TEST_RESULT_VOID(lockReleaseFile(lockFdTest, backupLockFile), "release backup lock");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
lockLocal.execId = STRDEF("1-test");
|
lockLocal.execId = STRDEF("1-test");
|
||||||
@ -211,6 +211,37 @@ testRun(void)
|
|||||||
TEST_RESULT_BOOL(lockAcquire(TEST_PATH_STR, stanza, STRDEF("1-test"), lockTypeAll, 0, true), true, "all lock");
|
TEST_RESULT_BOOL(lockAcquire(TEST_PATH_STR, stanza, STRDEF("1-test"), lockTypeAll, 0, true), true, "all lock");
|
||||||
TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLockFile), true, "archive lock file was created");
|
TEST_RESULT_BOOL(storageExistsP(storageTest, archiveLockFile), true, "archive lock file was created");
|
||||||
TEST_RESULT_BOOL(storageExistsP(storageTest, backupLockFile), true, "backup lock file was created");
|
TEST_RESULT_BOOL(storageExistsP(storageTest, backupLockFile), true, "backup lock file was created");
|
||||||
|
|
||||||
|
// Seek to start of file before read
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
TEST_RESULT_STR(
|
||||||
|
lockReadFileData(backupLockFile, lockLocal.file[lockTypeBackup].fd).execId, STRDEF("1-test"), "verify execId");
|
||||||
|
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup), "write lock data");
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
TEST_RESULT_PTR(
|
||||||
|
lockReadFileData(backupLockFile, lockLocal.file[lockTypeBackup].fd).percentComplete, NULL, "verify percentComplete");
|
||||||
|
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup, .percentComplete = VARUINT(5555)), "write lock data");
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
TEST_RESULT_UINT(
|
||||||
|
varUInt(lockReadFileData(backupLockFile, lockLocal.file[lockTypeBackup].fd).percentComplete), 5555,
|
||||||
|
"verify percentComplete");
|
||||||
|
|
||||||
|
TEST_RESULT_VOID(lockWriteDataP(lockTypeBackup, .percentComplete = VARUINT(8888)), "write lock data");
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
TEST_RESULT_UINT(
|
||||||
|
varUInt(lockReadFileData(backupLockFile, lockLocal.file[lockTypeBackup].fd).percentComplete), 8888,
|
||||||
|
"verify percentComplete");
|
||||||
|
|
||||||
TEST_ERROR(
|
TEST_ERROR(
|
||||||
lockAcquire(TEST_PATH_STR, stanza, STRDEF("1-test"), lockTypeAll, 0, false), AssertError,
|
lockAcquire(TEST_PATH_STR, stanza, STRDEF("1-test"), lockTypeAll, 0, false), AssertError,
|
||||||
"assertion 'failOnNoLock || lockType != lockTypeAll' failed");
|
"assertion 'failOnNoLock || lockType != lockTypeAll' failed");
|
||||||
@ -250,6 +281,38 @@ testRun(void)
|
|||||||
TEST_RESULT_UINT(lockReadFileP(STRDEF(TEST_PATH "/unlocked.lock")).status, lockReadStatusUnlocked, "lock read");
|
TEST_RESULT_UINT(lockReadFileP(STRDEF(TEST_PATH "/unlocked.lock")).status, lockReadStatusUnlocked, "lock read");
|
||||||
TEST_STORAGE_LIST(storageTest, NULL, "unlocked.lock\n", .remove = true);
|
TEST_STORAGE_LIST(storageTest, NULL, "unlocked.lock\n", .remove = true);
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
|
TEST_TITLE("execId && pid valid file");
|
||||||
|
|
||||||
|
const String *stanza = STRDEF("1-test");
|
||||||
|
lockLocal.execId = STRDEF("1-test");
|
||||||
|
|
||||||
|
TEST_RESULT_BOOL(lockAcquire(TEST_PATH_STR, stanza, STRDEF("1-test"), lockTypeBackup, 0, true), true, "backup lock");
|
||||||
|
TEST_RESULT_BOOL(storageExistsP(storageTest, lockLocal.file[lockTypeBackup].name), true, "backup lock file was created");
|
||||||
|
|
||||||
|
// Overwrite backup lock file with execId of 1-test and pid of 12345
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
|
||||||
|
ftruncate(lockLocal.file[lockTypeBackup].fd, 0);
|
||||||
|
|
||||||
|
IoWrite *const write = ioFdWriteNewOpen(lockLocal.file[lockTypeBackup].name, lockLocal.file[lockTypeBackup].fd, 0);
|
||||||
|
|
||||||
|
ioCopyP(ioBufferReadNewOpen(BUFSTRDEF("{\"execId\":\"1-test\",\"pid\":12345}")), write);
|
||||||
|
ioWriteClose(write);
|
||||||
|
|
||||||
|
// Seek to start of file before read
|
||||||
|
THROW_ON_SYS_ERROR_FMT(
|
||||||
|
lseek(lockLocal.file[lockTypeBackup].fd, 0, SEEK_SET) == -1, FileOpenError, STORAGE_ERROR_READ_SEEK, (uint64_t)0,
|
||||||
|
strZ(lockLocal.file[lockTypeBackup].name));
|
||||||
|
|
||||||
|
LockReadResult result = {0};
|
||||||
|
TEST_ASSIGN(result, lockReadFileP(lockLocal.file[lockTypeBackup].name), "lock read");
|
||||||
|
TEST_RESULT_STR(result.data.execId, STRDEF("1-test"), "lock read execId 1-test");
|
||||||
|
TEST_RESULT_UINT((uint64_t)result.data.processId, 12345, "lock read pid 12345");
|
||||||
|
TEST_RESULT_VOID(lockRelease(true), "release backup lock");
|
||||||
|
|
||||||
// -------------------------------------------------------------------------------------------------------------------------
|
// -------------------------------------------------------------------------------------------------------------------------
|
||||||
TEST_TITLE("invalid locked file");
|
TEST_TITLE("invalid locked file");
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user