You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2026-06-03 19:24:32 +02:00
Repository encryption support.
Contributed by Cynthia Shang.
This commit is contained in:
committed by
David Steele
parent
f07d2a3d0d
commit
b03c26968a
@@ -362,6 +362,29 @@
|
||||
|
||||
<example>cifs</example>
|
||||
</config-key>
|
||||
|
||||
<!-- CONFIG - REPO SECTION - REPO-CIPHER-TYPE KEY -->
|
||||
<config-key id="repo-cipher-type" name="Repository Cipher Type">
|
||||
<summary>Cipher used to encrypt the repository.</summary>
|
||||
|
||||
<text>The following repository types are supported:
|
||||
<ul>
|
||||
<li><id>none</id> - The repository is not encrypted</li>
|
||||
<li><id>aes-256-cbc</id> - Advanced Encryption Standard with 256 bit key length</li>
|
||||
</ul></text>
|
||||
|
||||
<default>none</default>
|
||||
<example>aes-256-cbc</example>
|
||||
</config-key>
|
||||
|
||||
<!-- CONFIG - REPO SECTION - REPO-CIPHER-PASS KEY -->
|
||||
<config-key id="repo-cipher-pass" name="Repository Cipher Passphrase">
|
||||
<summary>Repository cipher passphrase.</summary>
|
||||
|
||||
<text>Passphrase used to encrypt/decrypt files of the repository.</text>
|
||||
|
||||
<example>zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO</example>
|
||||
</config-key>
|
||||
</config-key-list>
|
||||
</config-section>
|
||||
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
<release-core-list>
|
||||
<release-feature-list>
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-contributor id="shang.cynthia"/>
|
||||
<release-item-contributor id="steele.david"/>
|
||||
</release-item-contributor-list>
|
||||
|
||||
<p>Repository encryption support.</p>
|
||||
</release-item>
|
||||
</release-feature-list>
|
||||
|
||||
+39
-2
@@ -29,6 +29,8 @@
|
||||
<variable key="perl-bin-path">/usr/bin</variable>
|
||||
|
||||
<variable key="backrest-repo-path">/var/lib/pgbackrest</variable>
|
||||
<variable key="backrest-repo-cipher-type">aes-256-cbc</variable>
|
||||
<variable key="backrest-repo-cipher-pass">zWaf6XtpjIVZC5444yXB+cgFDFl7MxGlgkZSaoPvTGirhPygu4jOKOXf9LO4vjfO</variable>
|
||||
<variable key="br-user">backrest</variable>
|
||||
<variable key="br-group">{[br-user]}</variable>
|
||||
<variable key="br-home-path">/home/{[br-user]}</variable>
|
||||
@@ -286,7 +288,7 @@
|
||||
</execute-list>
|
||||
|
||||
<!-- LibC installation - disabled for better testing of the C/Perl failback mechanism -->
|
||||
<!-- <p><backrest/> includes an optional companion C library that enhances performance and enables the `checksum-page` option. Pre-built packages are generally a better option than building the C library manually but the steps required are given below for completeness. Depending on the distribution a number of packages may be required which will not be enumerated here.</p>
|
||||
<p><backrest/> includes an optional companion C library that enhances performance and enables the `checksum-page` option and encryption. Pre-built packages are generally a better option than building the C library manually but the steps required are given below for completeness. Depending on the distribution a number of packages may be required which will not be enumerated here.</p>
|
||||
|
||||
<execute-list host="{[host-db-primary]}">
|
||||
<title>Build and Install C Library</title>
|
||||
@@ -301,7 +303,7 @@
|
||||
<execute user="root">
|
||||
<exe-cmd>make -C /root/pgbackrest-release-{[version]}/libc install</exe-cmd>
|
||||
</execute>
|
||||
</execute-list> -->
|
||||
</execute-list>
|
||||
</block-define>
|
||||
|
||||
<block-define id="br-install-repo">
|
||||
@@ -370,6 +372,15 @@
|
||||
<p>WAL is conceptually infinite but in practice is broken up into individual 16MB files called segments. WAL segments follow the naming convention <id>0000000100000A1E000000FE</id> where the first 8 hexadecimal digits represent the timeline and the next 16 digits are the logical sequence number (LSN).</p>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- SECTION => CONCEPTS - ENCRYPTION -->
|
||||
<section id="encryption">
|
||||
<title>Encryption</title>
|
||||
|
||||
<p>Encryption is the process of converting data into a format that is unrecognizable unless the appropriate password (also referred to as passphrase) is provided.</p>
|
||||
|
||||
<p><backrest/> will encrypt the repository based on a user-provided password, thereby preventing unauthorized access to data stored within the repository.</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- SECTION => INSTALLATION -->
|
||||
@@ -573,6 +584,25 @@
|
||||
<p>More information about retention can be found in the <link section="/retention">Retention</link> section.</p>
|
||||
</section>
|
||||
|
||||
<!-- SECTION => QUICKSTART - CONFIGURE ENCRYPTION -->
|
||||
<!-- Since S3 and backup host require configure-archiving, this section must come after. -->
|
||||
<section id="configure-encryption">
|
||||
<title>Configure Repository Encryption</title>
|
||||
|
||||
<p>The repository will be configured with a cipher type and key to demonstrate encryption. The companion C library is required for encryption, see <link section="/installation">Installation</link>.</p>
|
||||
|
||||
<p>It is important to use a long, random passphrase for the cipher key. A good way to generate one is to run: <code>openssl rand -base64 48</code>.</p>
|
||||
|
||||
<backrest-config host="{[host-db-primary]}" file="{[backrest-config-demo]}">
|
||||
<title>Configure <backrest/> repository encryption</title>
|
||||
|
||||
<backrest-config-option section="global" key="repo-cipher-type">{[backrest-repo-cipher-type]}</backrest-config-option>
|
||||
<backrest-config-option section="global" key="repo-cipher-pass">{[backrest-repo-cipher-pass]}</backrest-config-option>
|
||||
</backrest-config>
|
||||
|
||||
<p>Once the repository has been configured and the stanza created and checked, the repository encryption settings cannot be changed.</p>
|
||||
</section>
|
||||
|
||||
<!-- SECTION => QUICKSTART - STANZA CREATE -->
|
||||
<section id="create-stanza">
|
||||
<title>Create the Stanza</title>
|
||||
@@ -1460,6 +1490,13 @@
|
||||
|
||||
<p><backrest/> supports storing repositories in <proper>Amazon S3</proper>.</p>
|
||||
|
||||
<backrest-config host="{[host-db-primary]}" show="n" file="{[backrest-config-demo]}">
|
||||
<title>Clear the cipher settings</title>
|
||||
|
||||
<backrest-config-option section="global" key="repo-cipher-type">none</backrest-config-option>
|
||||
<backrest-config-option section="global" key="repo-cipher-pass"></backrest-config-option>
|
||||
</backrest-config>
|
||||
|
||||
<backrest-config host="{[host-db-primary]}" file="{[backrest-config-demo]}">
|
||||
<title>Configure <proper>S3</proper></title>
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@ sub getCheck
|
||||
|
||||
my $strArchiveId;
|
||||
my $strArchiveFile;
|
||||
my $strCipherPass;
|
||||
|
||||
# If the dbVersion/dbSysId are not passed, then we need to retrieve the database information
|
||||
if (!defined($strDbVersion) || !defined($ullDbSysId) )
|
||||
@@ -90,20 +91,23 @@ sub getCheck
|
||||
# Get db info from the repo
|
||||
if (!isRepoLocal())
|
||||
{
|
||||
($strArchiveId, $strArchiveFile) = protocolGet(CFGOPTVAL_REMOTE_TYPE_BACKUP)->cmdExecute(
|
||||
($strArchiveId, $strArchiveFile, $strCipherPass) = protocolGet(CFGOPTVAL_REMOTE_TYPE_BACKUP)->cmdExecute(
|
||||
OP_ARCHIVE_GET_CHECK, [$strDbVersion, $ullDbSysId, $strWalFile], true);
|
||||
}
|
||||
else
|
||||
{
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), true);
|
||||
|
||||
# check that the archive info is compatible with the database
|
||||
$strArchiveId =
|
||||
(new pgBackRest::Archive::Info(
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), true))->check($strDbVersion, $ullDbSysId);
|
||||
$strArchiveId = $oArchiveInfo->check($strDbVersion, $ullDbSysId);
|
||||
|
||||
if (defined($strWalFile))
|
||||
{
|
||||
$strArchiveFile = walSegmentFind(storageRepo(), ${strArchiveId}, $strWalFile);
|
||||
}
|
||||
|
||||
# Get the encryption passphrase to read/write files (undefined if the repo is not encrypted)
|
||||
$strCipherPass = $oArchiveInfo->cipherPassSub();
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
@@ -111,7 +115,8 @@ sub getCheck
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'strArchiveId', value => $strArchiveId},
|
||||
{name => 'strArchiveFile', value => $strArchiveFile}
|
||||
{name => 'strArchiveFile', value => $strArchiveFile},
|
||||
{name => 'strCipherPass', value => $strCipherPass, redact => true}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ sub get
|
||||
$strDestinationFile = walPath($strDestinationFile, cfgOption(CFGOPT_DB_PATH, false), cfgCommandName(cfgCommandGet()));
|
||||
|
||||
# Get the wal segment filename
|
||||
my ($strArchiveId, $strArchiveFile) = $self->getCheck(
|
||||
my ($strArchiveId, $strArchiveFile, $strCipherPass) = $self->getCheck(
|
||||
undef, undef, walIsSegment($strSourceArchive) ? $strSourceArchive : undef);
|
||||
|
||||
if (!defined($strArchiveFile) && !walIsSegment($strSourceArchive) &&
|
||||
@@ -127,9 +127,11 @@ sub get
|
||||
my $bSourceCompressed = $strArchiveFile =~ ('^.*\.' . COMPRESS_EXT . '$') ? true : false;
|
||||
|
||||
# Copy the archive file to the requested location
|
||||
# If the file is encrypted, then the passphrase from the info file is required to open the archive file in the repo
|
||||
$oStorageRepo->copy(
|
||||
$oStorageRepo->openRead(
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveId}/${strArchiveFile}", {bProtocolCompress => !$bSourceCompressed}),
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveId}/${strArchiveFile}", {bProtocolCompress => !$bSourceCompressed,
|
||||
strCipherPass => defined($strCipherPass) ? $strCipherPass : undef}),
|
||||
storageDb()->openWrite(
|
||||
$strDestinationFile,
|
||||
{rhyFilter => $bSourceCompressed ?
|
||||
|
||||
@@ -75,6 +75,7 @@ sub new
|
||||
$bRequired, # Is archive info required?
|
||||
$bLoad, # Should the file attempt to be loaded?
|
||||
$bIgnoreMissing, # Don't error on missing files
|
||||
$strCipherPassSub, # Passphrase to encrypt the subsequent archive files if repo is encrypted
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -83,6 +84,7 @@ sub new
|
||||
{name => 'bRequired', default => true},
|
||||
{name => 'bLoad', optional => true, default => true},
|
||||
{name => 'bIgnoreMissing', optional => true, default => false},
|
||||
{name => 'strCipherPassSub', optional => true},
|
||||
);
|
||||
|
||||
# Build the archive info path/file name
|
||||
@@ -95,7 +97,8 @@ sub new
|
||||
eval
|
||||
{
|
||||
$self = $class->SUPER::new($strArchiveInfoFile, {bLoad => $bLoad, bIgnoreMissing => $bIgnoreMissing,
|
||||
oStorage => storageRepo()});
|
||||
oStorage => storageRepo(), strCipherPass => storageRepo()->cipherPassUser(),
|
||||
strCipherPassSub => $strCipherPassSub});
|
||||
return true;
|
||||
}
|
||||
or do
|
||||
@@ -116,9 +119,13 @@ sub new
|
||||
confess &log(ERROR, $strArchiveInfoMissingMsg, ERROR_FILE_MISSING);
|
||||
}
|
||||
}
|
||||
elsif ($iResult == ERROR_CIPHER && $strResultMessage =~ "^unable to flush")
|
||||
{
|
||||
confess &log(ERROR, "unable to parse '$strArchiveInfoFile'\nHINT: Is or was the repo encrypted?", $iResult);
|
||||
}
|
||||
else
|
||||
{
|
||||
confess &log(ERROR, $strResultMessage, $iResult);
|
||||
confess $EVAL_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,7 +264,7 @@ sub archiveId
|
||||
####################################################################################################################################
|
||||
# create
|
||||
#
|
||||
# Creates the archive.info file. WARNING - this file should only be called from stanza-create.
|
||||
# Creates the archive.info file. WARNING - this function should only be called from stanza-create or tests.
|
||||
####################################################################################################################################
|
||||
sub create
|
||||
{
|
||||
@@ -368,10 +375,19 @@ sub reconstruct
|
||||
# Read first 8k of WAL segment
|
||||
my $tBlock;
|
||||
|
||||
# Error if the file encryption setting is not valid for the repo
|
||||
if (!storageRepo()->encryptionValid(storageRepo()->encrypted($strArchiveFilePath)))
|
||||
{
|
||||
confess &log(ERROR, "encryption incompatible for '$strArchiveFilePath'" .
|
||||
"\nHINT: Is or was the repo encrypted?", ERROR_CIPHER);
|
||||
}
|
||||
|
||||
# If the file is encrypted, then the passprase from the info file is required, else getEncryptionKeySub returns undefined
|
||||
my $oFileIo = storageRepo()->openRead(
|
||||
$strArchiveFilePath,
|
||||
{rhyFilter => $strArchiveFile =~ ('\.' . COMPRESS_EXT . '$') ?
|
||||
[{strClass => STORAGE_FILTER_GZIP, rxyParam => [{strCompressType => STORAGE_DECOMPRESS}]}] : undef});
|
||||
[{strClass => STORAGE_FILTER_GZIP, rxyParam => [{strCompressType => STORAGE_DECOMPRESS}]}] : undef,
|
||||
strCipherPass => $self->cipherPassSub()});
|
||||
|
||||
$oFileIo->read(\$tBlock, 512, true);
|
||||
$oFileIo->close();
|
||||
|
||||
@@ -53,6 +53,7 @@ sub archivePushCheck
|
||||
my $oStorageRepo = storageRepo();
|
||||
my $strArchiveId;
|
||||
my $strChecksum;
|
||||
my $strCipherPass = undef;
|
||||
|
||||
# WAL file is segment?
|
||||
my $bWalSegment = walIsSegment($strArchiveFile);
|
||||
@@ -60,17 +61,18 @@ sub archivePushCheck
|
||||
if (!isRepoLocal())
|
||||
{
|
||||
# Execute the command
|
||||
($strArchiveId, $strChecksum) = protocolGet(CFGOPTVAL_REMOTE_TYPE_BACKUP)->cmdExecute(
|
||||
($strArchiveId, $strChecksum, $strCipherPass) = protocolGet(CFGOPTVAL_REMOTE_TYPE_BACKUP)->cmdExecute(
|
||||
OP_ARCHIVE_PUSH_CHECK, [$strArchiveFile, $strDbVersion, $ullDbSysId], true);
|
||||
}
|
||||
else
|
||||
{
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info($oStorageRepo->pathGet(STORAGE_REPO_ARCHIVE));
|
||||
|
||||
# If a segment check db version and system-id
|
||||
if ($bWalSegment)
|
||||
{
|
||||
# If the info file exists check db version and system-id else error
|
||||
$strArchiveId = (new pgBackRest::Archive::Info(
|
||||
$oStorageRepo->pathGet(STORAGE_REPO_ARCHIVE)))->check($strDbVersion, $ullDbSysId);
|
||||
$strArchiveId = $oArchiveInfo->check($strDbVersion, $ullDbSysId);
|
||||
|
||||
# Check if the WAL segment already exists in the archive
|
||||
my $strFoundFile = walSegmentFind($oStorageRepo, $strArchiveId, $strArchiveFile);
|
||||
@@ -83,8 +85,11 @@ sub archivePushCheck
|
||||
# Else just get the archive id
|
||||
else
|
||||
{
|
||||
$strArchiveId = (new pgBackRest::Archive::Info($oStorageRepo->pathGet(STORAGE_REPO_ARCHIVE)))->archiveId();
|
||||
$strArchiveId = $oArchiveInfo->archiveId();
|
||||
}
|
||||
|
||||
# Get the encryption passphrase to read/write files (undefined if the repo is not encrypted)
|
||||
$strCipherPass = $oArchiveInfo->cipherPassSub();
|
||||
}
|
||||
|
||||
my $strWarning;
|
||||
@@ -111,7 +116,8 @@ sub archivePushCheck
|
||||
$strOperation,
|
||||
{name => 'strArchiveId', value => $strArchiveId},
|
||||
{name => 'strChecksum', value => $strChecksum},
|
||||
{name => 'strWarning', value => $strWarning}
|
||||
{name => 'strCipherPass', value => $strCipherPass, redact => true},
|
||||
{name => 'strWarning', value => $strWarning},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -153,7 +159,7 @@ sub archivePushFile
|
||||
}
|
||||
|
||||
# Check if the WAL already exists in the repo
|
||||
my ($strArchiveId, $strChecksum, $strWarning) = archivePushCheck(
|
||||
my ($strArchiveId, $strChecksum, $strCipherPass, $strWarning) = archivePushCheck(
|
||||
$strWalFile, $strDbVersion, $ullDbSysId, walIsSegment($strWalFile) ? "${strWalPath}/${strWalFile}" : undef);
|
||||
|
||||
# Only copy the WAL segment if checksum is not defined. If checksum is defined it means that the WAL segment already exists
|
||||
@@ -185,12 +191,13 @@ sub archivePushFile
|
||||
push(@{$rhyFilter}, {strClass => STORAGE_FILTER_GZIP, rxyParam => [{iLevel => $iCompressLevel}]});
|
||||
}
|
||||
|
||||
# Copy
|
||||
# Copy. If the file is encrypted, then the key from the info file is required to open the archive file in the repo.
|
||||
$oStorageRepo->copy(
|
||||
storageDb()->openRead("${strWalPath}/${strWalFile}", {rhyFilter => $rhyFilter}),
|
||||
$oStorageRepo->openWrite(
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveFile}",
|
||||
{bPathCreate => true, bAtomic => true, bProtocolCompress => !walIsSegment($strWalFile) || !$bCompress}));
|
||||
{bPathCreate => true, bAtomic => true, bProtocolCompress => !walIsSegment($strWalFile) || !$bCompress,
|
||||
strCipherPass => $strCipherPass}));
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
|
||||
@@ -349,7 +349,8 @@ sub processManifest
|
||||
cfgOption(CFGOPT_CHECKSUM_PAGE) ? isChecksumPage($strRepoFile) : false, $strBackupLabel, $bCompress,
|
||||
cfgOption(CFGOPT_COMPRESS_LEVEL), $oBackupManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strRepoFile,
|
||||
MANIFEST_SUBKEY_TIMESTAMP, false), $bIgnoreMissing,
|
||||
cfgOption(CFGOPT_CHECKSUM_PAGE) && isChecksumPage($strRepoFile) ? $hStartLsnParam : undef]);
|
||||
cfgOption(CFGOPT_CHECKSUM_PAGE) && isChecksumPage($strRepoFile) ? $hStartLsnParam : undef],
|
||||
{rParamSecure => $oBackupManifest->cipherPassSub() ? [$oBackupManifest->cipherPassSub()] : undef});
|
||||
|
||||
# Size and checksum will be removed and then verified later as a sanity check
|
||||
$oBackupManifest->remove(MANIFEST_SECTION_TARGET_FILE, $strRepoFile, MANIFEST_SUBKEY_SIZE);
|
||||
@@ -440,6 +441,10 @@ sub process
|
||||
# Load the backup.info
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($oStorageRepo->pathGet(STORAGE_REPO_BACKUP));
|
||||
|
||||
# Get passphrase to open manifest (undefined if repo not encrypted) and intialize passphrase variable for backup files
|
||||
my $strCipherPassManifest = $oBackupInfo->cipherPassSub();
|
||||
my $strCipherPassBackupSet;
|
||||
|
||||
# Initialize database objects
|
||||
my $oDbMaster = undef;
|
||||
my $oDbStandby = undef;
|
||||
@@ -487,7 +492,11 @@ sub process
|
||||
if (defined($strBackupLastPath) && $oBackupInfo->confirmDb($strBackupLastPath, $strDbVersion, $ullDbSysId))
|
||||
{
|
||||
$oLastManifest = new pgBackRest::Manifest(
|
||||
$oStorageRepo->pathGet(STORAGE_REPO_BACKUP . "/${strBackupLastPath}/" . FILE_MANIFEST));
|
||||
$oStorageRepo->pathGet(STORAGE_REPO_BACKUP . "/${strBackupLastPath}/" . FILE_MANIFEST),
|
||||
{strCipherPass => $strCipherPassManifest});
|
||||
|
||||
# If the repo is encrypted then use the passphrase in this manifest for the backup set
|
||||
$strCipherPassBackupSet = $oLastManifest->cipherPassSub();
|
||||
|
||||
&log(INFO, 'last backup label = ' . $oLastManifest->get(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL) .
|
||||
', version = ' . $oLastManifest->get(INI_SECTION_BACKREST, INI_KEY_VERSION));
|
||||
@@ -544,7 +553,8 @@ sub process
|
||||
eval
|
||||
{
|
||||
# Load the aborted manifest
|
||||
$oAbortedManifest = new pgBackRest::Manifest("${strBackupPath}/" . FILE_MANIFEST);
|
||||
$oAbortedManifest = new pgBackRest::Manifest("${strBackupPath}/" . FILE_MANIFEST,
|
||||
{strCipherPass => $strCipherPassManifest});
|
||||
|
||||
# Key and values that do not match
|
||||
my $strKey;
|
||||
@@ -621,6 +631,12 @@ sub process
|
||||
if ($bUsable)
|
||||
{
|
||||
$strBackupLabel = $strAbortedBackup;
|
||||
|
||||
# If the repo is encrypted, set the backup set passphrase from this manifest
|
||||
if (defined($strCipherPassManifest))
|
||||
{
|
||||
$strCipherPassBackupSet = $oAbortedManifest->cipherPassSub();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -635,6 +651,12 @@ sub process
|
||||
}
|
||||
}
|
||||
|
||||
# Generate a passphrase for the backup set if the repo is encrypted
|
||||
if (defined($strCipherPassManifest) && !defined($strCipherPassBackupSet) && $strType eq CFGOPTVAL_BACKUP_TYPE_FULL)
|
||||
{
|
||||
$strCipherPassBackupSet = $oStorageRepo->cipherPassGen();
|
||||
}
|
||||
|
||||
# If backup label is not defined then create the label and path.
|
||||
if (!defined($strBackupLabel))
|
||||
{
|
||||
@@ -642,9 +664,13 @@ sub process
|
||||
$strBackupPath = $oStorageRepo->pathGet(STORAGE_REPO_BACKUP . "/${strBackupLabel}");
|
||||
}
|
||||
|
||||
# Declare the backup manifest
|
||||
my $oBackupManifest = new pgBackRest::Manifest(
|
||||
"$strBackupPath/" . FILE_MANIFEST, {bLoad => false, strDbVersion => $strDbVersion});
|
||||
# Declare the backup manifest. Since the manifest could be an aborted backup, don't load it from the file here.
|
||||
# Instead just instantiate it. Pass the passphrases to open the manifest and one to encrypt the backup files if the repo is
|
||||
# encrypted (undefined if not).
|
||||
my $oBackupManifest = new pgBackRest::Manifest("$strBackupPath/" . FILE_MANIFEST,
|
||||
{bLoad => false, strDbVersion => $strDbVersion,
|
||||
strCipherPass => defined($strCipherPassManifest) ? $strCipherPassManifest : undef,
|
||||
strCipherPassSub => defined($strCipherPassManifest) ? $strCipherPassBackupSet : undef});
|
||||
|
||||
# Backup settings
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE, undef, $strType);
|
||||
@@ -850,9 +876,12 @@ sub process
|
||||
push(@{$rhyFilter}, {strClass => STORAGE_FILTER_GZIP});
|
||||
}
|
||||
|
||||
# If the backups are encrypted, then the passphrase for the backup set from the manifest file is required to access
|
||||
# the file in the repo
|
||||
my $oDestinationFileIo = $oStorageRepo->openWrite(
|
||||
STORAGE_REPO_BACKUP . "/${strBackupLabel}/${strFile}" . ($bCompress ? qw{.} . COMPRESS_EXT : ''),
|
||||
{rhyFilter => $rhyFilter});
|
||||
{rhyFilter => $rhyFilter,
|
||||
strCipherPass => defined($strCipherPassBackupSet) ? $strCipherPassBackupSet : undef});
|
||||
|
||||
# Write content out to a file
|
||||
$oStorageRepo->put($oDestinationFileIo, $oFileHash->{$strFile});
|
||||
@@ -885,7 +914,9 @@ sub process
|
||||
|
||||
# After the backup has been stopped, need to make a copy of the archive logs to make the db consistent
|
||||
logDebugMisc($strOperation, "retrieve archive logs ${strArchiveStart}:${strArchiveStop}");
|
||||
my $strArchiveId = new pgBackRest::Archive::Get::Get()->getArchiveId();
|
||||
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), true);
|
||||
my $strArchiveId = $oArchiveInfo->archiveId();
|
||||
my @stryArchive = lsnFileRange($strLsnStart, $strLsnStop, $strDbVersion);
|
||||
|
||||
foreach my $strArchive (@stryArchive)
|
||||
@@ -903,9 +934,12 @@ sub process
|
||||
my $bArchiveCompressed = $strArchiveFile =~ ('^.*\.' . COMPRESS_EXT . '\$');
|
||||
|
||||
$oStorageRepo->copy(
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveId}/${strArchiveFile}",
|
||||
STORAGE_REPO_BACKUP . "/${strBackupLabel}/" . MANIFEST_TARGET_PGDATA . qw{/} . $oBackupManifest->walPath() .
|
||||
"/${strArchive}" . ($bCompress ? qw{.} . COMPRESS_EXT : ''));
|
||||
$oStorageRepo->openRead(STORAGE_REPO_ARCHIVE . "/${strArchiveId}/${strArchiveFile}",
|
||||
{strCipherPass => $oArchiveInfo->cipherPassSub()}),
|
||||
$oStorageRepo->openWrite(STORAGE_REPO_BACKUP . "/${strBackupLabel}/" . MANIFEST_TARGET_PGDATA . qw{/} .
|
||||
$oBackupManifest->walPath() . "/${strArchive}" . ($bCompress ? qw{.} . COMPRESS_EXT : ''),
|
||||
{strCipherPass => $strCipherPassBackupSet})
|
||||
);
|
||||
|
||||
# Add the archive file to the manifest so it can be part of the restore and checked in validation
|
||||
my $strPathLog = MANIFEST_TARGET_PGDATA . qw{/} . $oBackupManifest->walPath();
|
||||
@@ -931,13 +965,16 @@ sub process
|
||||
|
||||
&log(INFO, "new backup label = ${strBackupLabel}");
|
||||
|
||||
# Copy a compressed version of the manifest to history
|
||||
# Copy a compressed version of the manifest to history. If the repo is encrypted then the passphrase to open the manifest is
|
||||
# required.
|
||||
$oStorageRepo->copy(
|
||||
STORAGE_REPO_BACKUP . "/${strBackupLabel}/" . FILE_MANIFEST,
|
||||
$oStorageRepo->openRead(STORAGE_REPO_BACKUP . "/${strBackupLabel}/" . FILE_MANIFEST,
|
||||
{'strCipherPass' => $strCipherPassManifest}),
|
||||
$oStorageRepo->openWrite(
|
||||
STORAGE_REPO_BACKUP . qw{/} . PATH_BACKUP_HISTORY . qw{/} . substr($strBackupLabel, 0, 4) .
|
||||
"/${strBackupLabel}.manifest." . COMPRESS_EXT,
|
||||
{rhyFilter => [{strClass => STORAGE_FILTER_GZIP}], bPathCreate => true, bAtomic => true}));
|
||||
"/${strBackupLabel}.manifest." . COMPRESS_EXT, {rhyFilter => [{strClass => STORAGE_FILTER_GZIP}],
|
||||
bPathCreate => true, bAtomic => true,
|
||||
strCipherPass => defined($strCipherPassManifest) ? $strCipherPassManifest : undef}));
|
||||
|
||||
# Sync history path
|
||||
$oStorageRepo->pathSync(STORAGE_REPO_BACKUP . qw{/} . PATH_BACKUP_HISTORY);
|
||||
|
||||
@@ -57,6 +57,7 @@ sub backupFile
|
||||
$lModificationTime, # File modification time
|
||||
$bIgnoreMissing, # Is it OK if the file is missing?
|
||||
$hExtraParam, # Parameter to pass to the extra function
|
||||
$strCipherPass, # Passphrase to access the repo file (undefined if repo not encrypted)
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -72,6 +73,7 @@ sub backupFile
|
||||
{name => 'lModificationTime', trace => true},
|
||||
{name => 'bIgnoreMissing', default => true, trace => true},
|
||||
{name => 'hExtraParam', required => false, trace => true},
|
||||
{name => 'strCipherPass', required => false, trace => true},
|
||||
);
|
||||
|
||||
my $oStorageRepo = storageRepo(); # Repo storage
|
||||
@@ -89,7 +91,7 @@ sub backupFile
|
||||
|
||||
if (defined($strChecksum))
|
||||
{
|
||||
# Add compression
|
||||
# Add decompression
|
||||
my $rhyFilter;
|
||||
|
||||
if ($bCompress)
|
||||
@@ -99,7 +101,8 @@ sub backupFile
|
||||
|
||||
# Get the checksum
|
||||
($strCopyChecksum, $lCopySize) = $oStorageRepo->hashSize(
|
||||
$oStorageRepo->openRead(STORAGE_REPO_BACKUP . "/${strBackupLabel}/${strFileOp}", {rhyFilter => $rhyFilter}));
|
||||
$oStorageRepo->openRead(STORAGE_REPO_BACKUP . "/${strBackupLabel}/${strFileOp}",
|
||||
{rhyFilter => $rhyFilter, strCipherPass => $strCipherPass}));
|
||||
|
||||
# Determine if the file needs to be recopied
|
||||
$bCopy = !($strCopyChecksum eq $strChecksum && $lCopySize == $lSizeFile);
|
||||
@@ -143,7 +146,7 @@ sub backupFile
|
||||
$oSourceFileIo,
|
||||
$oStorageRepo->openWrite(
|
||||
STORAGE_REPO_BACKUP . "/${strBackupLabel}/${strFileOp}",
|
||||
{bPathCreate => true, bProtocolCompress => !$bCompress}));
|
||||
{bPathCreate => true, bProtocolCompress => !$bCompress, strCipherPass => $strCipherPass}));
|
||||
|
||||
# Get sha checksum and size
|
||||
$strCopyChecksum = $oSourceFileIo->result(STORAGE_FILTER_SHA);
|
||||
|
||||
@@ -117,6 +117,7 @@ sub new
|
||||
$oStorage,
|
||||
$bLoad, # Should the file attemp to be loaded?
|
||||
$bIgnoreMissing, # Don't error on missing files
|
||||
$strCipherPassSub, # Generated passphrase to encrypt manifest files if the repo is encrypted
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -127,6 +128,7 @@ sub new
|
||||
{name => 'oStorage', optional => true, default => storageRepo()},
|
||||
{name => 'bLoad', optional => true, default => true},
|
||||
{name => 'bIgnoreMissing', optional => true, default => false},
|
||||
{name => 'strCipherPassSub', optional => true},
|
||||
);
|
||||
|
||||
# Build the backup info path/file name
|
||||
@@ -139,7 +141,8 @@ sub new
|
||||
eval
|
||||
{
|
||||
$self = $class->SUPER::new($strBackupInfoFile, {bLoad => $bLoad, bIgnoreMissing => $bIgnoreMissing,
|
||||
oStorage => $oStorage});
|
||||
oStorage => $oStorage, strCipherPass => $oStorage->cipherPassUser(),
|
||||
strCipherPassSub => $strCipherPassSub});
|
||||
return true;
|
||||
}
|
||||
or do
|
||||
@@ -160,9 +163,13 @@ sub new
|
||||
confess &log(ERROR, "${strBackupClusterPath}/$strBackupInfoMissingMsg", ERROR_FILE_MISSING);
|
||||
}
|
||||
}
|
||||
elsif ($iResult == ERROR_CIPHER && $strResultMessage =~ "^unable to flush")
|
||||
{
|
||||
confess &log(ERROR, "unable to parse '$strBackupInfoFile'\nHINT: Is or was the repo encrypted?", $iResult);
|
||||
}
|
||||
else
|
||||
{
|
||||
confess &log(ERROR, $strResultMessage, $iResult);
|
||||
confess $EVAL_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,7 +254,8 @@ sub reconstruct
|
||||
|
||||
if (!$self->current($strBackup) && $self->{oStorage}->exists($strManifestFile))
|
||||
{
|
||||
my $oManifest = pgBackRest::Manifest->new($strManifestFile);
|
||||
my $oManifest = pgBackRest::Manifest->new($strManifestFile,
|
||||
{strCipherPass => ($self->{oStorage}->encrypted($strManifestFile)) ? $self->cipherPassSub() : undef});
|
||||
|
||||
# If we are reconstructing, then we need to be sure this db-id and version is in the history section. Also if it
|
||||
# has a db-id greater than anything in the history section, then add it to the db section.
|
||||
|
||||
@@ -154,7 +154,7 @@ sub process
|
||||
{
|
||||
&log(WARN,
|
||||
"WAL segment ${strWalSegment} did not reach the archive:" . (defined($strArchiveId) ? $strArchiveId : '') . "\n" .
|
||||
"HINT: Check the archive_command to ensure that all options are correct (especialy --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.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,12 @@ use constant INI_KEY_FORMAT => 'backrest
|
||||
use constant INI_KEY_VERSION => 'backrest-version';
|
||||
push @EXPORT, qw(INI_KEY_VERSION);
|
||||
|
||||
use constant INI_SECTION_CIPHER => 'cipher';
|
||||
push @EXPORT, qw(INI_SECTION_CIPHER);
|
||||
|
||||
use constant INI_KEY_CIPHER_PASS => 'cipher-pass';
|
||||
push @EXPORT, qw(INI_KEY_CIPHER_PASS);
|
||||
|
||||
####################################################################################################################################
|
||||
# Ini file copy extension
|
||||
####################################################################################################################################
|
||||
@@ -84,6 +90,8 @@ sub new
|
||||
$self->{iInitFormat},
|
||||
$self->{strInitVersion},
|
||||
my $bIgnoreMissing,
|
||||
$self->{strCipherPass}, # Passphrase to read/write the file
|
||||
my $strCipherPassSub, # Passphrase to read/write subsequent files
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -95,8 +103,15 @@ sub new
|
||||
{name => 'iInitFormat', optional => true, default => BACKREST_FORMAT, trace => true},
|
||||
{name => 'strInitVersion', optional => true, default => BACKREST_VERSION, trace => true},
|
||||
{name => 'bIgnoreMissing', optional => true, default => false, trace => true},
|
||||
{name => 'strCipherPass', optional => true, trace => true},
|
||||
{name => 'strCipherPassSub', optional => true, trace => true},
|
||||
);
|
||||
|
||||
if (defined($self->{oStorage}->cipherPassUser()) && !defined($self->{strCipherPass}))
|
||||
{
|
||||
confess &log(ERROR, 'passphrase is required when storage is encrypted', ERROR_CIPHER);
|
||||
}
|
||||
|
||||
# Set changed to false
|
||||
$self->{bModified} = false;
|
||||
|
||||
@@ -115,11 +130,22 @@ sub new
|
||||
$self->headerCheck();
|
||||
}
|
||||
|
||||
# Initialize if not loading from string and file does not exist
|
||||
# Initialize if not loading the file and not loading from string or if a load was attempted and the file does not exist
|
||||
if (!$self->{bExists} && !defined($strContent))
|
||||
{
|
||||
$self->numericSet(INI_SECTION_BACKREST, INI_KEY_FORMAT, undef, $self->{iInitFormat});
|
||||
$self->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef, $self->{strInitVersion});
|
||||
|
||||
# Determine if the passphrase section should be set
|
||||
if (defined($self->{strCipherPass}) && defined($strCipherPassSub))
|
||||
{
|
||||
$self->set(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, $strCipherPassSub);
|
||||
}
|
||||
elsif ((defined($self->{strCipherPass}) && !defined($strCipherPassSub)) ||
|
||||
(!defined($self->{strCipherPass}) && defined($strCipherPassSub)))
|
||||
{
|
||||
confess &log(ASSERT, 'a user passphrase and sub passphrase are both required when encrypting');
|
||||
}
|
||||
}
|
||||
|
||||
return $self;
|
||||
@@ -134,28 +160,38 @@ sub loadVersion
|
||||
my $bCopy = shift;
|
||||
my $bIgnoreError = shift;
|
||||
|
||||
# Load main
|
||||
my $rstrContent = $self->{oStorage}->get(
|
||||
$self->{oStorage}->openRead($self->{strFileName} . ($bCopy ? INI_COPY_EXT : ''), {bIgnoreMissing => $bIgnoreError}));
|
||||
|
||||
# If the file exists then attempt to parse it
|
||||
if (defined($rstrContent))
|
||||
# Make sure the file encryption setting is valid for the repo
|
||||
if ($self->{oStorage}->encryptionValid($self->{oStorage}->encrypted($self->{strFileName} . ($bCopy ? INI_COPY_EXT : ''),
|
||||
{bIgnoreMissing => $bIgnoreError})))
|
||||
{
|
||||
# Load main
|
||||
my $rstrContent = $self->{oStorage}->get(
|
||||
$self->{oStorage}->openRead($self->{strFileName} . ($bCopy ? INI_COPY_EXT : ''),
|
||||
{bIgnoreMissing => $bIgnoreError, strCipherPass => $self->{strCipherPass}}));
|
||||
|
||||
my $rhContent = iniParse($$rstrContent, {bIgnoreInvalid => $bIgnoreError});
|
||||
|
||||
# If the content is valid then check the header
|
||||
if (defined($rhContent))
|
||||
# If the file exists then attempt to parse it
|
||||
if (defined($rstrContent))
|
||||
{
|
||||
$self->{oContent} = $rhContent;
|
||||
my $rhContent = iniParse($$rstrContent, {bIgnoreInvalid => $bIgnoreError});
|
||||
|
||||
# If the header is invalid then undef content
|
||||
if (!$self->headerCheck({bIgnoreInvalid => $bIgnoreError}))
|
||||
# If the content is valid then check the header
|
||||
if (defined($rhContent))
|
||||
{
|
||||
delete($self->{oContent});
|
||||
$self->{oContent} = $rhContent;
|
||||
|
||||
# If the header is invalid then undef content
|
||||
if (!$self->headerCheck({bIgnoreInvalid => $bIgnoreError}))
|
||||
{
|
||||
delete($self->{oContent});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
confess &log(ERROR, "unable to parse '$self->{strFileName}" . ($bCopy ? INI_COPY_EXT : '') . "'" .
|
||||
"\nHINT: Is or was the repo encrypted?", ERROR_CIPHER);
|
||||
}
|
||||
|
||||
return defined($self->{oContent});
|
||||
}
|
||||
@@ -388,9 +424,10 @@ sub save
|
||||
$self->hash();
|
||||
|
||||
# Save the file
|
||||
$self->{oStorage}->put($self->{strFileName}, iniRender($self->{oContent}));
|
||||
$self->{oStorage}->put($self->{strFileName}, iniRender($self->{oContent}), {strCipherPass => $self->{strCipherPass}});
|
||||
$self->{oStorage}->pathSync(dirname($self->{strFileName}));
|
||||
$self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}));
|
||||
$self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}),
|
||||
{strCipherPass => $self->{strCipherPass}});
|
||||
$self->{oStorage}->pathSync(dirname($self->{strFileName}));
|
||||
$self->{bModified} = false;
|
||||
|
||||
@@ -418,7 +455,8 @@ sub saveCopy
|
||||
}
|
||||
|
||||
$self->hash();
|
||||
$self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}));
|
||||
$self->{oStorage}->put($self->{strFileName} . INI_COPY_EXT, iniRender($self->{oContent}),
|
||||
{strCipherPass => $self->{strCipherPass}});
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -815,10 +853,21 @@ sub boolTest
|
||||
return $self->test($strSection, $strValue, $strSubValue, defined($bTest) ? ($bTest ? INI_TRUE : INI_FALSE) : undef);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# cipherPassSub - gets the passphrase (if it exists) used to read/write subsequent files
|
||||
####################################################################################################################################
|
||||
sub cipherPassSub
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
return $self->get(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, false);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# Properties.
|
||||
####################################################################################################################################
|
||||
sub modified {shift->{bModified}} # Has the data been modified since last load/save?
|
||||
sub exists {shift->{bExists}} # Is the data persisted to file?
|
||||
sub cipherPass {shift->{strCipherPass}} # Return passphrase (will be undef if repo not encrypted)
|
||||
|
||||
1;
|
||||
|
||||
@@ -599,6 +599,31 @@ my $oConfigHelpData =
|
||||
"edit/check recovery.conf before manually restarting."
|
||||
},
|
||||
|
||||
# REPO-CIPHER-PASS Option Help
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
'repo-cipher-pass' =>
|
||||
{
|
||||
section => 'repository',
|
||||
summary =>
|
||||
"Repository cipher passphrase.",
|
||||
description =>
|
||||
"Passphrase used to encrypt/decrypt files of the repository."
|
||||
},
|
||||
|
||||
# REPO-CIPHER-TYPE Option Help
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
'repo-cipher-type' =>
|
||||
{
|
||||
section => 'repository',
|
||||
summary =>
|
||||
"Cipher used to encrypt the repository.",
|
||||
description =>
|
||||
"The following repository types are supported:\n" .
|
||||
"\n" .
|
||||
"* none - The repository is not encrypted\n" .
|
||||
"* aes-256-cbc - Advanced Encryption Standard with 256 bit key length"
|
||||
},
|
||||
|
||||
# REPO-PATH Option Help
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
'repo-path' =>
|
||||
@@ -945,6 +970,8 @@ my $oConfigHelpData =
|
||||
'log-timestamp' => 'section',
|
||||
'neutral-umask' => 'section',
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -999,6 +1026,8 @@ my $oConfigHelpData =
|
||||
'neutral-umask' => 'section',
|
||||
'process-max' => 'section',
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1092,6 +1121,8 @@ my $oConfigHelpData =
|
||||
|
||||
'process-max' => 'section',
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1191,6 +1222,8 @@ my $oConfigHelpData =
|
||||
},
|
||||
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1233,6 +1266,8 @@ my $oConfigHelpData =
|
||||
'log-path' => 'section',
|
||||
'log-timestamp' => 'section',
|
||||
'neutral-umask' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1313,6 +1348,8 @@ my $oConfigHelpData =
|
||||
},
|
||||
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1387,6 +1424,8 @@ my $oConfigHelpData =
|
||||
'process-max' => 'section',
|
||||
'protocol-timeout' => 'section',
|
||||
'recovery-option' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1550,6 +1589,8 @@ my $oConfigHelpData =
|
||||
},
|
||||
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1616,6 +1657,8 @@ my $oConfigHelpData =
|
||||
},
|
||||
|
||||
'protocol-timeout' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1662,6 +1705,8 @@ my $oConfigHelpData =
|
||||
'log-path' => 'section',
|
||||
'log-timestamp' => 'section',
|
||||
'neutral-umask' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
@@ -1724,6 +1769,8 @@ my $oConfigHelpData =
|
||||
'log-path' => 'section',
|
||||
'log-timestamp' => 'section',
|
||||
'neutral-umask' => 'section',
|
||||
'repo-cipher-pass' => 'section',
|
||||
'repo-cipher-type' => 'section',
|
||||
'repo-path' => 'section',
|
||||
'repo-s3-bucket' => 'section',
|
||||
'repo-s3-ca-file' => 'section',
|
||||
|
||||
@@ -183,6 +183,10 @@ use constant CFGOPT_REPO_PATH => 'repo-pat
|
||||
push @EXPORT, qw(CFGOPT_REPO_PATH);
|
||||
use constant CFGOPT_REPO_TYPE => 'repo-type';
|
||||
push @EXPORT, qw(CFGOPT_REPO_TYPE);
|
||||
use constant CFGOPT_REPO_CIPHER_TYPE => 'repo-cipher-type';
|
||||
push @EXPORT, qw(CFGOPT_REPO_CIPHER_TYPE);
|
||||
use constant CFGOPT_REPO_CIPHER_PASS => 'repo-cipher-pass';
|
||||
push @EXPORT, qw(CFGOPT_REPO_CIPHER_PASS);
|
||||
|
||||
# Repository S3
|
||||
use constant CFGOPT_REPO_S3_KEY => 'repo-s3-key';
|
||||
@@ -341,6 +345,13 @@ use constant CFGOPTVAL_REPO_TYPE_POSIX => 'posix';
|
||||
use constant CFGOPTVAL_REPO_TYPE_S3 => 's3';
|
||||
push @EXPORT, qw(CFGOPTVAL_REPO_TYPE_S3);
|
||||
|
||||
# Repo encryption type
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
use constant CFGOPTVAL_REPO_CIPHER_TYPE_NONE => 'none';
|
||||
push @EXPORT, qw(CFGOPTVAL_REPO_CIPHER_TYPE_NONE);
|
||||
use constant CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC => 'aes-256-cbc';
|
||||
push @EXPORT, qw(CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
|
||||
# Info output
|
||||
#-----------------------------------------------------------------------------------------------------------------------------------
|
||||
use constant CFGOPTVAL_INFO_OUTPUT_TEXT => 'text';
|
||||
@@ -1054,6 +1065,33 @@ my %hConfigDefine =
|
||||
}
|
||||
},
|
||||
|
||||
&CFGOPT_REPO_CIPHER_PASS =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
&CFGDEF_TYPE => CFGDEF_TYPE_STRING,
|
||||
&CFGDEF_SECURE => true,
|
||||
&CFGDEF_REQUIRED => false,
|
||||
&CFGDEF_DEPEND =>
|
||||
{
|
||||
&CFGDEF_DEPEND_OPTION => CFGOPT_REPO_CIPHER_TYPE,
|
||||
&CFGDEF_DEPEND_LIST => [CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC],
|
||||
},
|
||||
&CFGDEF_COMMAND => CFGOPT_REPO_TYPE,
|
||||
},
|
||||
|
||||
&CFGOPT_REPO_CIPHER_TYPE =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
&CFGDEF_TYPE => CFGDEF_TYPE_STRING,
|
||||
&CFGDEF_DEFAULT => CFGOPTVAL_REPO_CIPHER_TYPE_NONE,
|
||||
&CFGDEF_ALLOW_LIST =>
|
||||
[
|
||||
&CFGOPTVAL_REPO_CIPHER_TYPE_NONE,
|
||||
&CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC,
|
||||
],
|
||||
&CFGDEF_COMMAND => CFGOPT_REPO_TYPE,
|
||||
},
|
||||
|
||||
&CFGOPT_REPO_PATH =>
|
||||
{
|
||||
&CFGDEF_SECTION => CFGDEF_SECTION_GLOBAL,
|
||||
|
||||
+77
-28
@@ -7,12 +7,14 @@ use strict;
|
||||
use warnings FATAL => qw(all);
|
||||
use Carp qw(confess);
|
||||
|
||||
use English '-no_match_vars';
|
||||
use Exporter qw(import);
|
||||
our @EXPORT = qw();
|
||||
use File::Basename qw(dirname);
|
||||
|
||||
use pgBackRest::Backup::Common;
|
||||
use pgBackRest::Backup::Info;
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Common::Ini;
|
||||
use pgBackRest::Common::String;
|
||||
@@ -47,6 +49,8 @@ use constant INFO_STANZA_STATUS_MISSING_STANZA_CODE => 1;
|
||||
use constant INFO_STANZA_STATUS_MISSING_STANZA_MESSAGE => 'missing stanza path';
|
||||
use constant INFO_STANZA_STATUS_NO_BACKUP_CODE => 2;
|
||||
use constant INFO_STANZA_STATUS_NO_BACKUP_MESSAGE => 'no valid backups';
|
||||
use constant INFO_STANZA_STATUS_MISSING_STANZA_DATA_CODE => 3;
|
||||
use constant INFO_STANZA_STATUS_MISSING_STANZA_DATA_MESSAGE => 'missing stanza data';
|
||||
|
||||
use constant INFO_KEY_CODE => 'code';
|
||||
use constant INFO_KEY_DELTA => 'delta';
|
||||
@@ -390,7 +394,7 @@ sub stanzaList
|
||||
$self->backupList($strStanzaFound);
|
||||
|
||||
# If there are no backups then set status to no backup
|
||||
if (@{$$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}} == 0)
|
||||
if (defined($$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}) && @{$$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}} == 0)
|
||||
{
|
||||
$$oStanzaInfo{&INFO_SECTION_STATUS} =
|
||||
{
|
||||
@@ -399,7 +403,7 @@ sub stanzaList
|
||||
};
|
||||
}
|
||||
# Else status is OK
|
||||
else
|
||||
elsif (defined($$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}))
|
||||
{
|
||||
$$oStanzaInfo{&INFO_SECTION_STATUS} =
|
||||
{
|
||||
@@ -411,31 +415,46 @@ sub stanzaList
|
||||
# Array to store tne min/max archive for each database for which there are archives
|
||||
my @oyDbArchiveList = ();
|
||||
|
||||
# Get the current DB info (always last element in the array)
|
||||
my $hDbCurrent = @{$oStanzaInfo->{&INFO_BACKUP_SECTION_DB}}[-1];
|
||||
my $strDbCurrentVersion = $hDbCurrent->{&INFO_KEY_VERSION};
|
||||
my $ullDbCurrentSystemId = $hDbCurrent->{&INFO_KEY_SYSTEM_ID};
|
||||
|
||||
# Loop through the DB history from oldest to newest
|
||||
foreach my $hDbInfo (@{$oStanzaInfo->{&INFO_BACKUP_SECTION_DB}})
|
||||
if (!defined($$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}))
|
||||
{
|
||||
my $strArchiveStanzaPath = "archive/" . $strStanzaFound;
|
||||
my $strDbVersion = $hDbInfo->{&INFO_KEY_VERSION};
|
||||
my $ullDbSysId = $hDbInfo->{&INFO_KEY_SYSTEM_ID};
|
||||
|
||||
# With multiple DB versions, the backup.info history-id may not be the same as archive.info history-id, so the
|
||||
# archive path must be built by retrieving the archive id given the db version and system id of the backup
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet($strArchiveStanzaPath));
|
||||
my $strArchiveId = $oArchiveInfo->archiveId({strDbVersion => $hDbInfo->{&INFO_KEY_VERSION},
|
||||
ullDbSysId => $hDbInfo->{&INFO_KEY_SYSTEM_ID}});
|
||||
my $strArchivePath = "archive/${strStanzaFound}/${strArchiveId}";
|
||||
|
||||
# Fill in the archive info if available
|
||||
my $hDbArchive = $self->dbArchiveSection($hDbInfo, $strArchiveId, $strArchivePath, $strDbCurrentVersion,
|
||||
$ullDbCurrentSystemId);
|
||||
if (defined($hDbArchive))
|
||||
$$oStanzaInfo{&INFO_SECTION_STATUS} =
|
||||
{
|
||||
push(@oyDbArchiveList, $hDbArchive);
|
||||
&INFO_KEY_CODE => INFO_STANZA_STATUS_MISSING_STANZA_DATA_CODE,
|
||||
&INFO_KEY_MESSAGE => INFO_STANZA_STATUS_MISSING_STANZA_DATA_MESSAGE
|
||||
};
|
||||
|
||||
$$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP} = [];
|
||||
$$oStanzaInfo{&INFO_BACKUP_SECTION_DB} = [];
|
||||
}
|
||||
else
|
||||
{
|
||||
# Get the current DB info (always last element in the array)
|
||||
my $hDbCurrent = @{$oStanzaInfo->{&INFO_BACKUP_SECTION_DB}}[-1];
|
||||
my $strDbCurrentVersion = $hDbCurrent->{&INFO_KEY_VERSION};
|
||||
my $ullDbCurrentSystemId = $hDbCurrent->{&INFO_KEY_SYSTEM_ID};
|
||||
|
||||
# Loop through the DB history from oldest to newest
|
||||
foreach my $hDbInfo (@{$oStanzaInfo->{&INFO_BACKUP_SECTION_DB}})
|
||||
{
|
||||
my $strArchiveStanzaPath = "archive/" . $strStanzaFound;
|
||||
my $strDbVersion = $hDbInfo->{&INFO_KEY_VERSION};
|
||||
my $ullDbSysId = $hDbInfo->{&INFO_KEY_SYSTEM_ID};
|
||||
|
||||
# With multiple DB versions, the backup.info history-id may not be the same as archive.info history-id, so the
|
||||
# archive path must be built by retrieving the archive id given the db version and system id of the backup
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet($strArchiveStanzaPath));
|
||||
my $strArchiveId = $oArchiveInfo->archiveId({strDbVersion => $hDbInfo->{&INFO_KEY_VERSION},
|
||||
ullDbSysId => $hDbInfo->{&INFO_KEY_SYSTEM_ID}});
|
||||
my $strArchivePath = "archive/${strStanzaFound}/${strArchiveId}";
|
||||
|
||||
# Fill in the archive info if available
|
||||
my $hDbArchive = $self->dbArchiveSection($hDbInfo, $strArchiveId, $strArchivePath, $strDbCurrentVersion,
|
||||
$ullDbCurrentSystemId);
|
||||
|
||||
if (defined($hDbArchive))
|
||||
{
|
||||
push(@oyDbArchiveList, $hDbArchive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -491,9 +510,39 @@ sub backupList
|
||||
{name => 'strStanza'}
|
||||
);
|
||||
|
||||
# Load the backup.info but do not attempt to validate it or confirm it's existence
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(
|
||||
cfgCommandName(CFGCMD_BACKUP) . "/${strStanza}"), false, false, {bIgnoreMissing => true});
|
||||
# Load the backup.info but do not attempt to validate it
|
||||
my $oBackupInfo = undef;
|
||||
|
||||
# Turn off console logging to control when to display the error
|
||||
logDisable();
|
||||
|
||||
eval
|
||||
{
|
||||
$oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(cfgCommandName(CFGCMD_BACKUP) . "/${strStanza}"), false);
|
||||
logEnable();
|
||||
return true;
|
||||
}
|
||||
or do
|
||||
{
|
||||
logEnable();
|
||||
|
||||
if (exceptionCode($EVAL_ERROR) == ERROR_FILE_MISSING)
|
||||
{
|
||||
return;
|
||||
}
|
||||
elsif (exceptionCode($EVAL_ERROR) == ERROR_CIPHER)
|
||||
{
|
||||
# Confess the encryption error with additional hint
|
||||
confess &log(ERROR, exceptionMessage($EVAL_ERROR) .
|
||||
"\nHINT: use option --stanza if encryption settings are different for the stanza than the global settings",
|
||||
ERROR_CIPHER);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Confess unhandled errors
|
||||
confess $EVAL_ERROR;
|
||||
}
|
||||
};
|
||||
|
||||
# Build the db list
|
||||
my @oyDbList;
|
||||
|
||||
@@ -285,6 +285,8 @@ sub new
|
||||
$bLoad,
|
||||
$oStorage,
|
||||
$strDbVersion,
|
||||
$strCipherPass, # Passphrase to open the manifest if encrypted
|
||||
$strCipherPassSub, # Passphrase to encrypt the backup files
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -293,10 +295,13 @@ sub new
|
||||
{name => 'bLoad', optional => true, default => true, trace => true},
|
||||
{name => 'oStorage', optional => true, default => storageRepo(), trace => true},
|
||||
{name => 'strDbVersion', optional => true, trace => true},
|
||||
{name => 'strCipherPass', optional => true, redact => true},
|
||||
{name => 'strCipherPassSub', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Init object and store variables
|
||||
my $self = $class->SUPER::new($strFileName, {bLoad => $bLoad, oStorage => $oStorage});
|
||||
my $self = $class->SUPER::new($strFileName, {bLoad => $bLoad, oStorage => $oStorage, strCipherPass => $strCipherPass,
|
||||
strCipherPassSub => $strCipherPassSub});
|
||||
|
||||
# If manifest not loaded from a file then the db version must be set
|
||||
if (!$bLoad)
|
||||
|
||||
@@ -55,6 +55,8 @@ use constant OP_STORAGE_OPEN_READ => 'storageO
|
||||
push @EXPORT, qw(OP_STORAGE_OPEN_READ);
|
||||
use constant OP_STORAGE_OPEN_WRITE => 'storageOpenWrite';
|
||||
push @EXPORT, qw(OP_STORAGE_OPEN_WRITE);
|
||||
use constant OP_STORAGE_CIPHER_PASS_USER => 'storageCipherPassUser';
|
||||
push @EXPORT, qw(OP_STORAGE_CIPHER_PASS_USER);
|
||||
use constant OP_STORAGE_EXISTS => 'storageExists';
|
||||
push @EXPORT, qw(OP_STORAGE_EXISTS);
|
||||
use constant OP_STORAGE_LIST => 'storageList';
|
||||
|
||||
@@ -497,6 +497,7 @@ sub queueJob
|
||||
$strKey,
|
||||
$strOp,
|
||||
$rParam,
|
||||
$rParamSecure,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -506,6 +507,7 @@ sub queueJob
|
||||
{name => 'strKey'},
|
||||
{name => 'strOp'},
|
||||
{name => 'rParam'},
|
||||
{name => 'rParamSecure', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Don't add jobs while in the middle of processing the current queue
|
||||
@@ -514,6 +516,12 @@ sub queueJob
|
||||
confess &log(ASSERT, 'new jobs cannot be added until processing is complete');
|
||||
}
|
||||
|
||||
# Copy the parameters to a new variable so we can push the secure parameters on
|
||||
if (defined($rParamSecure))
|
||||
{
|
||||
push(@{$rParam}, @{$rParamSecure});
|
||||
}
|
||||
|
||||
# Build the hash
|
||||
my $hJob =
|
||||
{
|
||||
|
||||
@@ -115,6 +115,8 @@ sub init
|
||||
my $oDestinationFileIo = $oStorage->openWrite(@{shift()});
|
||||
$oStorage->copy(new pgBackRest::Protocol::Storage::File($self, $oDestinationFileIo), $oDestinationFileIo);
|
||||
},
|
||||
|
||||
&OP_STORAGE_CIPHER_PASS_USER => sub {$oStorage->cipherPassUser()},
|
||||
&OP_STORAGE_EXISTS => sub {$oStorage->exists(@{shift()})},
|
||||
&OP_STORAGE_LIST => sub {$oStorage->list(@{shift()})},
|
||||
&OP_STORAGE_MANIFEST => sub {$oStorage->manifest(@{shift()})},
|
||||
|
||||
@@ -15,6 +15,7 @@ use pgBackRest::Common::Log;
|
||||
use pgBackRest::Config::Config;
|
||||
use pgBackRest::Protocol::Helper;
|
||||
use pgBackRest::Protocol::Storage::Remote;
|
||||
use pgBackRest::Storage::Base;
|
||||
use pgBackRest::Storage::Helper;
|
||||
use pgBackRest::Storage::Local;
|
||||
|
||||
@@ -207,10 +208,22 @@ sub storageRepo
|
||||
$oDriver = new pgBackRest::Storage::Posix::Driver();
|
||||
}
|
||||
|
||||
# Set the encryption for the repo
|
||||
my $strCipherType;
|
||||
my $strCipherPass;
|
||||
|
||||
# If the encryption is not the default (none) then set the user-defined passphrase and magic based on the type
|
||||
if (cfgOption(CFGOPT_REPO_CIPHER_TYPE) ne CFGOPTVAL_REPO_CIPHER_TYPE_NONE)
|
||||
{
|
||||
$strCipherType = cfgOption(CFGOPT_REPO_CIPHER_TYPE);
|
||||
$strCipherPass = cfgOption(CFGOPT_REPO_CIPHER_PASS);
|
||||
}
|
||||
|
||||
# Create local storage
|
||||
$hStorage->{&STORAGE_REPO}{$strStanza} = new pgBackRest::Storage::Local(
|
||||
cfgOption(CFGOPT_REPO_PATH), $oDriver,
|
||||
{strTempExtension => STORAGE_TEMP_EXT, hRule => $hRule, lBufferMax => cfgOption(CFGOPT_BUFFER_SIZE)});
|
||||
{strTempExtension => STORAGE_TEMP_EXT, hRule => $hRule, lBufferMax => cfgOption(CFGOPT_BUFFER_SIZE),
|
||||
strCipherType => $strCipherType, strCipherPassUser => $strCipherPass});
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -230,4 +243,31 @@ sub storageRepo
|
||||
|
||||
push @EXPORT, qw(storageRepo);
|
||||
|
||||
####################################################################################################################################
|
||||
# storageRepoCacheClear - FOR TESTING ONLY!
|
||||
####################################################################################################################################
|
||||
sub storageRepoCacheClear
|
||||
{
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strStanza,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '::storageRepoCacheClear', \@_,
|
||||
{name => 'strStanza'},
|
||||
);
|
||||
|
||||
if (defined($hStorage->{&STORAGE_REPO}{$strStanza}))
|
||||
{
|
||||
delete($hStorage->{&STORAGE_REPO}{$strStanza});
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
push @EXPORT, qw(storageRepoCacheClear);
|
||||
|
||||
1;
|
||||
|
||||
@@ -309,6 +309,33 @@ sub move
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# cipherPassUser
|
||||
####################################################################################################################################
|
||||
sub cipherPassUser
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->cipherPassUser', \@_,
|
||||
);
|
||||
|
||||
my $strCipherPassUser = $self->{oProtocol}->cmdExecute(OP_STORAGE_CIPHER_PASS_USER);
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'strCipherPassUser', value => $strCipherPassUser, redact => true}
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# getters
|
||||
####################################################################################################################################
|
||||
|
||||
@@ -198,7 +198,16 @@ sub manifestLoad
|
||||
my $self = shift; # Class hash
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my ($strOperation) = logDebugParam (__PACKAGE__ . '->manifestLoad');
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strCipherPass, # Passphrase to decrypt the manifest file if encrypted
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->manifestLoad', \@_,
|
||||
{name => 'strCipherPass', required => false, redact => true},
|
||||
);
|
||||
|
||||
# Error if the backup set does not exist
|
||||
if (!storageRepo()->exists(STORAGE_REPO_BACKUP . "/$self->{strBackupSet}/" . FILE_MANIFEST))
|
||||
@@ -208,7 +217,8 @@ sub manifestLoad
|
||||
|
||||
# Copy the backup manifest to the db cluster path
|
||||
storageDb()->copy(
|
||||
storageRepo()->openRead(STORAGE_REPO_BACKUP . "/$self->{strBackupSet}/" . FILE_MANIFEST, {bProtocolCompress => true}),
|
||||
storageRepo()->openRead(STORAGE_REPO_BACKUP . "/$self->{strBackupSet}/" . FILE_MANIFEST, {bProtocolCompress => true,
|
||||
strCipherPass => $strCipherPass}),
|
||||
$self->{strDbClusterPath} . '/' . FILE_MANIFEST);
|
||||
|
||||
# Load the manifest into a hash
|
||||
@@ -1089,7 +1099,7 @@ sub process
|
||||
&log(INFO, "restore backup set " . $self->{strBackupSet});
|
||||
|
||||
# Make sure the backup path is valid and load the manifest
|
||||
my $oManifest = $self->manifestLoad();
|
||||
my $oManifest = $self->manifestLoad($oBackupInfo->cipherPassSub());
|
||||
|
||||
# Delete pg_control file. This will be copied from the backup at the very end to prevent a partially restored database
|
||||
# from being started by PostgreSQL.
|
||||
@@ -1248,7 +1258,8 @@ sub process
|
||||
$oManifest->get(MANIFEST_SECTION_TARGET_FILE, $strRepoFile, MANIFEST_SUBKEY_USER),
|
||||
$oManifest->get(MANIFEST_SECTION_TARGET_FILE, $strRepoFile, MANIFEST_SUBKEY_GROUP),
|
||||
$oManifest->numericGet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_COPY_START), cfgOption(CFGOPT_DELTA),
|
||||
$self->{strBackupSet}, $oManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS)]);
|
||||
$self->{strBackupSet}, $oManifest->boolGet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS)],
|
||||
{rParamSecure => $oManifest->cipherPassSub() ? [$oManifest->cipherPassSub()] : undef});
|
||||
}
|
||||
|
||||
# Run the restore jobs and process results
|
||||
|
||||
@@ -50,6 +50,7 @@ sub restoreFile
|
||||
$bDelta, # Is restore a delta?
|
||||
$strBackupPath, # Backup path
|
||||
$bSourceCompressed, # Is the source compressed?
|
||||
$strCipherPass, # Passphrase to decrypt the repo file (undefined if repo not encrypted)
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -69,6 +70,7 @@ sub restoreFile
|
||||
{name => 'bDelta', trace => true},
|
||||
{name => 'strBackupPath', trace => true},
|
||||
{name => 'bSourceCompressed', trace => true},
|
||||
{name => 'strCipherPass', required => false, trace => true},
|
||||
);
|
||||
|
||||
# Does the file need to be copied?
|
||||
@@ -145,7 +147,7 @@ sub restoreFile
|
||||
storageRepo()->openRead(
|
||||
STORAGE_REPO_BACKUP . qw(/) . (defined($strReference) ? $strReference : $strBackupPath) .
|
||||
"/${strRepoFile}" . ($bSourceCompressed ? qw{.} . COMPRESS_EXT : ''),
|
||||
{bProtocolCompress => !$bSourceCompressed && $lSize != 0}),
|
||||
{bProtocolCompress => !$bSourceCompressed && $lSize != 0, strCipherPass => $strCipherPass}),
|
||||
$oDestinationFileIo);
|
||||
|
||||
# Validate checksum
|
||||
|
||||
+201
-79
@@ -29,7 +29,9 @@ use pgBackRest::Protocol::Storage::Helper;
|
||||
####################################################################################################################################
|
||||
my $strHintForce = "\nHINT: use stanza-create --force to force the stanza data to be created.";
|
||||
my $strInfoMissing = " information missing";
|
||||
my $strStanzaCreateErrorMsg = "not empty" . $strHintForce;
|
||||
my $strStanzaCreateErrorMsg = "not empty";
|
||||
my $strRepoEncryptedMsg = " and repo is encrypted and info file(s) are missing, --force cannot be used";
|
||||
my $strHintStanzaCreate = "\nHINT: has a stanza-create been performed?";
|
||||
|
||||
####################################################################################################################################
|
||||
# CONSTRUCTOR
|
||||
@@ -109,43 +111,63 @@ sub stanzaCreate
|
||||
my $strParentPathArchive = $self->parentPathGet(STORAGE_REPO_ARCHIVE);
|
||||
my $strParentPathBackup = $self->parentPathGet(STORAGE_REPO_BACKUP);
|
||||
|
||||
# Get a listing of files in the directory, ignoring if any are missing
|
||||
# Get a listing of files in the top-level repo directories, ignoring if any are missing
|
||||
my @stryFileListArchive = storageRepo()->list($strParentPathArchive, {bIgnoreMissing => true});
|
||||
my @stryFileListBackup = storageRepo()->list($strParentPathBackup, {bIgnoreMissing => true});
|
||||
|
||||
# If force not used, then if files exist force should be required since create must have already occurred and reissuing a create
|
||||
# needs to be a consciuos effort to rewrite the files
|
||||
if (!cfgOption(CFGOPT_FORCE))
|
||||
# If files exist force should be required since create must have already occurred and reissuing a create needs to be a consciuos
|
||||
# effort to rewrite the files.
|
||||
# If at least one directory is not empty, then check to see if the info files exist
|
||||
if (@stryFileListArchive || @stryFileListBackup)
|
||||
{
|
||||
# At least one directory is not empty, then check to see if the info files exist
|
||||
if (@stryFileListArchive || @stryFileListBackup)
|
||||
my $strBackupInfoFile = &FILE_BACKUP_INFO;
|
||||
my $strArchiveInfoFile = &ARCHIVE_INFO_FILE;
|
||||
|
||||
# If .info exists, set to true. Do not include .info.copy
|
||||
my $bBackupInfoFileExists = grep(/^$strBackupInfoFile$/i, @stryFileListBackup);
|
||||
my $bArchiveInfoFileExists = grep(/^$strArchiveInfoFile$/i, @stryFileListArchive);
|
||||
|
||||
# Determine if a file exists other than the info files
|
||||
my $strExistingFile = $self->existingFileName(STORAGE_REPO_BACKUP, $strParentPathBackup, &FILE_BACKUP_INFO);
|
||||
if (!defined($strExistingFile))
|
||||
{
|
||||
my $strBackupInfoFile = &FILE_BACKUP_INFO;
|
||||
my $strArchiveInfoFile = &ARCHIVE_INFO_FILE;
|
||||
$strExistingFile = $self->existingFileName(STORAGE_REPO_ARCHIVE, $strParentPathArchive, &ARCHIVE_INFO_FILE);
|
||||
}
|
||||
|
||||
my $bBackupInfoFileExists = grep(/^$strBackupInfoFile$/i, @stryFileListBackup);
|
||||
my $bArchiveInfoFileExists = grep(/^$strArchiveInfoFile$/i, @stryFileListArchive);
|
||||
# If something other than the info files exist in the repo (maybe a backup is in progress) and the user is attempting to
|
||||
# change the repo encryption in anyway, then error
|
||||
if (defined($strExistingFile) && (!storageRepo()->encryptionValid(storageRepo()->encrypted($strExistingFile))))
|
||||
{
|
||||
confess &log(ERROR, 'files exist - the encryption type or passphrase cannot be changed', ERROR_PATH_NOT_EMPTY);
|
||||
}
|
||||
|
||||
# If the info file exists in one directory but is missing from the other directory then there is clearly a mismatch
|
||||
# which requires force option
|
||||
if (!$bArchiveInfoFileExists && $bBackupInfoFileExists)
|
||||
{
|
||||
confess &log(ERROR, 'archive' . $strInfoMissing . $strHintForce, ERROR_FILE_MISSING);
|
||||
}
|
||||
elsif (!$bBackupInfoFileExists && $bArchiveInfoFileExists)
|
||||
{
|
||||
confess &log(ERROR, 'backup' . $strInfoMissing . $strHintForce, ERROR_FILE_MISSING);
|
||||
}
|
||||
# If we get here then either both exist or neither exist so if neither file exists then something still exists in the
|
||||
# directories since one or both of them are not empty so need to use force option
|
||||
elsif (!$bArchiveInfoFileExists)
|
||||
{
|
||||
confess &log(ERROR,
|
||||
(@stryFileListBackup ? 'backup directory ' : '') .
|
||||
((@stryFileListBackup && @stryFileListArchive) ? 'and/or ' : '') .
|
||||
(@stryFileListArchive ? 'archive directory ' : '') .
|
||||
$strStanzaCreateErrorMsg, ERROR_PATH_NOT_EMPTY);
|
||||
}
|
||||
# If the .info file exists in one directory but is missing from the other directory then there is clearly a mismatch
|
||||
# which requires force option so throw an error to indicate force is needed. If the repo is encrypted and something other
|
||||
# than the info files exist, then error that force cannot be used (the info files cannot be reconstructed since we no longer
|
||||
# have the passphrase that was in the info file to open the other files in the repo)
|
||||
if (!$bArchiveInfoFileExists && $bBackupInfoFileExists)
|
||||
{
|
||||
$self->errorForce('archive' . $strInfoMissing, ERROR_FILE_MISSING, $strExistingFile, $bArchiveInfoFileExists,
|
||||
$strParentPathArchive, $strParentPathBackup);
|
||||
}
|
||||
elsif (!$bBackupInfoFileExists && $bArchiveInfoFileExists)
|
||||
{
|
||||
$self->errorForce('backup' . $strInfoMissing, ERROR_FILE_MISSING, $strExistingFile, $bBackupInfoFileExists,
|
||||
$strParentPathArchive, $strParentPathBackup);
|
||||
}
|
||||
|
||||
# If we get here then either both exist or neither exist so if neither file exists and something else exists in the
|
||||
# directories then need to use force option to recreate the missing info files - unless the repo is encrypted, then force
|
||||
# cannot be used if other than the info files exist. If only the info files exist then force must be used to overwrite the
|
||||
# files.
|
||||
else
|
||||
{
|
||||
$self->errorForce(
|
||||
(@stryFileListBackup ? 'backup directory ' : '') .
|
||||
((@stryFileListBackup && @stryFileListArchive) ? 'and/or ' : '') .
|
||||
(@stryFileListArchive ? 'archive directory ' : '') .
|
||||
$strStanzaCreateErrorMsg, ERROR_PATH_NOT_EMPTY,
|
||||
$strExistingFile, $bArchiveInfoFileExists, $strParentPathArchive, $strParentPathBackup);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,14 +176,12 @@ sub stanzaCreate
|
||||
my $oBackupInfo = $self->infoObject(STORAGE_REPO_BACKUP, $strParentPathBackup, {bRequired => false, bIgnoreMissing => true});
|
||||
|
||||
# Create the archive info object
|
||||
my ($iResult, $strResultMessage) =
|
||||
$self->infoFileCreate($oArchiveInfo, STORAGE_REPO_ARCHIVE, $strParentPathArchive, \@stryFileListArchive);
|
||||
my ($iResult, $strResultMessage) = $self->infoFileCreate($oArchiveInfo);
|
||||
|
||||
if ($iResult == 0)
|
||||
{
|
||||
# Create the backup.info file
|
||||
($iResult, $strResultMessage) =
|
||||
$self->infoFileCreate($oBackupInfo, STORAGE_REPO_BACKUP, $strParentPathBackup, \@stryFileListBackup);
|
||||
($iResult, $strResultMessage) = $self->infoFileCreate($oBackupInfo);
|
||||
}
|
||||
|
||||
if ($iResult != 0)
|
||||
@@ -191,7 +211,7 @@ sub stanzaUpgrade
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my ($strOperation) = logDebugParam(__PACKAGE__ . '->stanzaUpgrade');
|
||||
|
||||
# Get the archive info and backup info files; if either does not exist an error will be thrown
|
||||
# Get the archive info and backup info files; if either does not exist or cannot be opened an error will be thrown
|
||||
my $oArchiveInfo = $self->infoObject(STORAGE_REPO_ARCHIVE, storageRepo()->pathGet(STORAGE_REPO_ARCHIVE));
|
||||
my $oBackupInfo = $self->infoObject(STORAGE_REPO_BACKUP, storageRepo()->pathGet(STORAGE_REPO_BACKUP));
|
||||
my $bBackupUpgraded = false;
|
||||
@@ -268,6 +288,124 @@ sub parentPathGet
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# existingFileName
|
||||
#
|
||||
# Get a name of a file in the specified storage
|
||||
####################################################################################################################################
|
||||
sub existingFileName
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strPathType,
|
||||
$strParentPath,
|
||||
$strExcludeFile,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->existingFileName', \@_,
|
||||
{name => 'strPathType'},
|
||||
{name => 'strParentPath'},
|
||||
{name => 'strExcludeFile'},
|
||||
);
|
||||
|
||||
my $hFullList = storageRepo()->manifest(storageRepo()->pathGet($strPathType), {bIgnoreMissing => true});
|
||||
my $strExistingFile = undef;
|
||||
|
||||
foreach my $strName (keys(%{$hFullList}))
|
||||
{
|
||||
if (($hFullList->{$strName}{type} eq 'f') &&
|
||||
(substr($strName, 0, length($strExcludeFile)) ne $strExcludeFile))
|
||||
{
|
||||
$strExistingFile = $strParentPath . "/" . $strName;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'strExistingFile', value => $strExistingFile},
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# errorForce
|
||||
#
|
||||
# Creates the parent path if it doesn't exist and returns the path.
|
||||
####################################################################################################################################
|
||||
sub errorForce
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strMessage,
|
||||
$iErrorCode,
|
||||
$strFileName,
|
||||
$bInfoFileExists,
|
||||
$strParentPathArchive,
|
||||
$strParentPathBackup,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->errorForce', \@_,
|
||||
{name => 'strMessage', trace => true},
|
||||
{name => 'iErrorCode', trace => true},
|
||||
{name => 'strFileName', required => false, trace => true},
|
||||
{name => 'bInfoFileExists', trace => true},
|
||||
{name => 'strParentPathArchive', trace => true},
|
||||
{name => 'strParentPathBackup', trace => true},
|
||||
);
|
||||
|
||||
my $bRepoEncrypted = false;
|
||||
|
||||
# Check if the file passed is encrypted (if one exists) else check the repo setting.
|
||||
if (defined($strFileName))
|
||||
{
|
||||
$bRepoEncrypted = storageRepo()->encrypted($strFileName);
|
||||
}
|
||||
elsif (defined(storageRepo()->cipherType()))
|
||||
{
|
||||
$bRepoEncrypted = true;
|
||||
}
|
||||
|
||||
# If the repo is encrypted and a file other than the info files exist yet the info file is missing then the --force option
|
||||
# cannot be used
|
||||
if ($bRepoEncrypted && defined($strFileName) && !$bInfoFileExists)
|
||||
{
|
||||
confess &log(ERROR, $strMessage . $strRepoEncryptedMsg, $iErrorCode);
|
||||
}
|
||||
elsif (!cfgOption(CFGOPT_FORCE))
|
||||
{
|
||||
# If info files exist, check to see if an upgrade is required
|
||||
if ($bInfoFileExists && !defined($strFileName) && $iErrorCode == ERROR_PATH_NOT_EMPTY)
|
||||
{
|
||||
if ($self->upgradeCheck(new pgBackRest::Backup::Info($strParentPathBackup), STORAGE_REPO_BACKUP,
|
||||
ERROR_BACKUP_MISMATCH) ||
|
||||
$self->upgradeCheck(new pgBackRest::Archive::Info($strParentPathArchive), STORAGE_REPO_ARCHIVE,
|
||||
ERROR_ARCHIVE_MISMATCH))
|
||||
{
|
||||
confess &log(ERROR, "backup info file or archive info file invalid\n" .
|
||||
'HINT: use stanza-upgrade if the database has been upgraded or use --force', ERROR_FILE_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
# If get here just indicate force is required
|
||||
confess &log(ERROR, $strMessage . $strHintForce, $iErrorCode);
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn($strOperation);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# infoObject
|
||||
#
|
||||
@@ -308,10 +446,17 @@ sub infoObject
|
||||
eval
|
||||
{
|
||||
# Ignore missing files if directed but if the info or info.copy file exists the exists flag will still be set and data will
|
||||
# attempt to be loaded
|
||||
# attempt to be loaded. If the info file is missing and the repo is encrypted, we can only get to this function if nothing
|
||||
# else existed in the repo so a passphrase is generated to store in the file. If it exists and the repo is encrypted then
|
||||
# the generated passphrase passed will not be used - the one from the info file will be read.
|
||||
my $oParamRef =
|
||||
{bIgnoreMissing => $bIgnoreMissing,
|
||||
strCipherPassSub => defined(storageRepo()->cipherType()) ?
|
||||
storageRepo()->cipherPassGen() : undef};
|
||||
|
||||
$oInfo = ($strPathType eq STORAGE_REPO_BACKUP ?
|
||||
new pgBackRest::Backup::Info($strParentPath, false, $bRequired, {bIgnoreMissing => $bIgnoreMissing}) :
|
||||
new pgBackRest::Archive::Info($strParentPath, $bRequired, {bIgnoreMissing => $bIgnoreMissing}));
|
||||
new pgBackRest::Backup::Info($strParentPath, false, $bRequired, $oParamRef) :
|
||||
new pgBackRest::Archive::Info($strParentPath, $bRequired, $oParamRef));
|
||||
|
||||
# Reset the console logging
|
||||
logEnable();
|
||||
@@ -335,7 +480,8 @@ sub infoObject
|
||||
{
|
||||
if ($iResult == ERROR_FILE_MISSING)
|
||||
{
|
||||
confess &log(ERROR, cfgOptionValid(CFGOPT_FORCE) ? $strResultMessage . $strHintForce : $strResultMessage, $iResult);
|
||||
confess &log(ERROR, cfgOptionValid(CFGOPT_FORCE) ? $strResultMessage . $strHintForce :
|
||||
$strResultMessage . $strHintStanzaCreate, $iResult);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -345,9 +491,20 @@ sub infoObject
|
||||
# Else instatiate the object without loading it so we can reconstruct and overwrite the invalid files
|
||||
else
|
||||
{
|
||||
# Confess unhandled exception
|
||||
if (($iResult != ERROR_FILE_MISSING) && ($iResult != ERROR_CIPHER))
|
||||
{
|
||||
confess &log(ERROR, $strResultMessage, $iResult);
|
||||
}
|
||||
|
||||
my $oParamRef =
|
||||
{bLoad => false,
|
||||
strCipherPassSub => defined(storageRepo()->cipherType()) ?
|
||||
storageRepo()->cipherPassGen() : undef};
|
||||
|
||||
$oInfo = ($strPathType eq STORAGE_REPO_BACKUP ?
|
||||
new pgBackRest::Backup::Info($strParentPath, false, false, {bLoad => false}) :
|
||||
new pgBackRest::Archive::Info($strParentPath, false, {bLoad => false}));
|
||||
new pgBackRest::Backup::Info($strParentPath, false, false, $oParamRef) :
|
||||
new pgBackRest::Archive::Info($strParentPath, false, $oParamRef));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,38 +530,24 @@ sub infoFileCreate
|
||||
(
|
||||
$strOperation,
|
||||
$oInfo,
|
||||
$strPathType,
|
||||
$strParentPath,
|
||||
$stryFileList,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->infoFileCreate', \@_,
|
||||
{name => 'oInfo', trace => true},
|
||||
{name => 'strPathType'},
|
||||
{name => 'strParentPath'},
|
||||
{name => 'stryFileList'},
|
||||
);
|
||||
|
||||
my $iResult = 0;
|
||||
my $strResultMessage = undef;
|
||||
my $strWarningMsgArchive = undef;
|
||||
|
||||
# If force was not used and the info file does not exist and the directory is not empty, then error
|
||||
# This should also be performed by the calling routine before this function is called, so this is just a safety check
|
||||
if (!cfgOption(CFGOPT_FORCE) && !$oInfo->{bExists} && @$stryFileList)
|
||||
{
|
||||
confess &log(ERROR, ($strPathType eq STORAGE_REPO_BACKUP ? 'backup directory ' : 'archive directory ') .
|
||||
$strStanzaCreateErrorMsg, ERROR_PATH_NOT_EMPTY);
|
||||
}
|
||||
|
||||
# Turn off console logging to control when to display the error
|
||||
logDisable();
|
||||
|
||||
eval
|
||||
{
|
||||
# Reconstruct the file from the data in the directory if there is any else initialize the file
|
||||
if ($strPathType eq STORAGE_REPO_BACKUP)
|
||||
if (defined($oInfo->{strBackupClusterPath}))
|
||||
{
|
||||
$oInfo->reconstruct(false, false, $self->{oDb}{strDbVersion}, $self->{oDb}{ullDbSysId}, $self->{oDb}{iControlVersion},
|
||||
$self->{oDb}{iCatalogVersion});
|
||||
@@ -415,27 +558,6 @@ sub infoFileCreate
|
||||
$strWarningMsgArchive = $oInfo->reconstruct($self->{oDb}{strDbVersion}, $self->{oDb}{ullDbSysId});
|
||||
}
|
||||
|
||||
# If the file exists on disk, then check if the reconstructed data is the same as what is on disk
|
||||
if ($oInfo->exists())
|
||||
{
|
||||
my $oInfoOnDisk =
|
||||
($strPathType eq STORAGE_REPO_BACKUP ?
|
||||
new pgBackRest::Backup::Info($strParentPath) : new pgBackRest::Archive::Info($strParentPath));
|
||||
|
||||
# If the hashes are not the same
|
||||
if ($oInfoOnDisk->hash() ne $oInfo->hash())
|
||||
{
|
||||
# If force was not used and the hashes are different then error
|
||||
if (!cfgOption(CFGOPT_FORCE))
|
||||
{
|
||||
$iResult = ERROR_FILE_INVALID;
|
||||
$strResultMessage =
|
||||
($strPathType eq STORAGE_REPO_BACKUP ? 'backup info file ' : 'archive info file ') . "invalid\n" .
|
||||
'HINT: use stanza-upgrade if the database has been upgraded or use --force';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Reset the console logging
|
||||
logEnable();
|
||||
return true;
|
||||
@@ -550,7 +672,7 @@ sub upgradeCheck
|
||||
|
||||
# Capture the result which will be the expected error, meaning an upgrade is needed
|
||||
$iResult = exceptionCode($EVAL_ERROR);
|
||||
$strResultMessage = exceptionMessage($EVAL_ERROR->message());
|
||||
$strResultMessage = exceptionMessage($EVAL_ERROR);
|
||||
};
|
||||
|
||||
# Return from function and log return values if any
|
||||
|
||||
@@ -31,6 +31,8 @@ use constant STORAGE_ENCRYPT => 'encrypt'
|
||||
push @EXPORT, qw(STORAGE_ENCRYPT);
|
||||
use constant STORAGE_DECRYPT => 'decrypt';
|
||||
push @EXPORT, qw(STORAGE_DECRYPT);
|
||||
use constant CIPHER_MAGIC => 'Salted__';
|
||||
push @EXPORT, qw(CIPHER_MAGIC);
|
||||
|
||||
####################################################################################################################################
|
||||
# Capability constants
|
||||
@@ -69,7 +71,8 @@ sub new
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# copy - copy a file
|
||||
# copy - copy a file. If special encryption settings are required, then the file objects from openRead/openWrite must be passed
|
||||
# instead of file names.
|
||||
####################################################################################################################################
|
||||
sub copy
|
||||
{
|
||||
@@ -94,7 +97,8 @@ sub copy
|
||||
|
||||
# Is source an IO object or a file expression?
|
||||
my $oSourceFileIo =
|
||||
defined($xSourceFile) ? (ref($xSourceFile) ? $xSourceFile : $self->openRead($self->pathGet($xSourceFile))) : undef;
|
||||
defined($xSourceFile) ?
|
||||
(ref($xSourceFile) ? $xSourceFile : $self->openRead($self->pathGet($xSourceFile))) : undef;
|
||||
|
||||
# Proceed if source file exists
|
||||
if (defined($oSourceFileIo))
|
||||
@@ -142,15 +146,19 @@ sub get
|
||||
(
|
||||
$strOperation,
|
||||
$xFile,
|
||||
$strCipherPass,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->get', \@_,
|
||||
{name => 'xFile', required => false, trace => true},
|
||||
{name => 'strCipherPass', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Is this an IO object or a file expression?
|
||||
my $oFileIo = defined($xFile) ? (ref($xFile) ? $xFile : $self->openRead($xFile)) : undef;
|
||||
# Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or
|
||||
# if the repo has a user passphrase defined - else pass undef
|
||||
my $oFileIo = defined($xFile) ? (ref($xFile) ? $xFile : $self->openRead(
|
||||
$xFile, {strCipherPass => defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser()})) : undef;
|
||||
|
||||
# Read only if there is something to read from
|
||||
my $tContent;
|
||||
@@ -264,16 +272,20 @@ sub put
|
||||
$strOperation,
|
||||
$xFile,
|
||||
$xContent,
|
||||
$strCipherPass,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->put', \@_,
|
||||
{name => 'xFile', trace => true},
|
||||
{name => 'xContent', required => false, trace => true},
|
||||
{name => 'strCipherPass', optional => true, trace => true, redact => true},
|
||||
);
|
||||
|
||||
# Is this an IO object or a file expression?
|
||||
my $oFileIo = ref($xFile) ? $xFile : $self->openWrite($xFile);
|
||||
# Is this an IO object or a file expression? If file expression, then open the file and pass passphrase if one is defined or if
|
||||
# the repo has a user passphrase defined - else pass undef
|
||||
my $oFileIo = ref($xFile) ? $xFile : $self->openWrite(
|
||||
$xFile, {strCipherPass => defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser()});
|
||||
|
||||
# Determine size of content
|
||||
my $lSize = defined($xContent) ? length(ref($xContent) ? $$xContent : $xContent) : 0;
|
||||
@@ -281,7 +293,7 @@ sub put
|
||||
# Write only if there is something to write
|
||||
if ($lSize > 0)
|
||||
{
|
||||
$oFileIo->write(ref($xContent) ? $xContent : \$xContent, $lSize);
|
||||
$oFileIo->write(ref($xContent) ? $xContent : \$xContent);
|
||||
}
|
||||
# Else open the file so a zero length file is created (since file is not opened until first write)
|
||||
else
|
||||
|
||||
@@ -16,6 +16,7 @@ use File::Basename qw(dirname);
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Common::String;
|
||||
use pgBackRest::Storage::Base;
|
||||
use pgBackRest::Storage::Filter::Sha;
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -37,6 +38,8 @@ sub new
|
||||
$strDefaultPathMode,
|
||||
$strDefaultFileMode,
|
||||
$lBufferMax,
|
||||
$strCipherType,
|
||||
$strCipherPassUser,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -49,6 +52,8 @@ sub new
|
||||
{name => 'strDefaultPathMode', optional => true, default => '0750'},
|
||||
{name => 'strDefaultFileMode', optional => true, default => '0640'},
|
||||
{name => 'lBufferMax', optional => true},
|
||||
{name => 'strCipherType', optional => true},
|
||||
{name => 'strCipherPassUser', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Create class
|
||||
@@ -62,6 +67,14 @@ sub new
|
||||
$self->{strTempExtension} = $strTempExtension;
|
||||
$self->{strDefaultPathMode} = $strDefaultPathMode;
|
||||
$self->{strDefaultFileMode} = $strDefaultFileMode;
|
||||
$self->{strCipherType} = $strCipherType;
|
||||
$self->{strCipherPassUser} = $strCipherPassUser;
|
||||
|
||||
if (defined($self->{strCipherType}))
|
||||
{
|
||||
require pgBackRest::Storage::Filter::CipherBlock;
|
||||
pgBackRest::Storage::Filter::CipherBlock->import();
|
||||
}
|
||||
|
||||
# Set temp extension in driver
|
||||
$self->driver()->tempExtensionSet($self->{strTempExtension}) if $self->driver()->can('tempExtensionSet');
|
||||
@@ -105,7 +118,8 @@ sub exists
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# hashSize - calculate sha1 hash and size of file
|
||||
# hashSize - calculate sha1 hash and size of file. If special encryption settings are required, then the file objects from
|
||||
# openRead/openWrite must be passed instead of file names.
|
||||
####################################################################################################################################
|
||||
sub hashSize
|
||||
{
|
||||
@@ -395,6 +409,7 @@ sub openRead
|
||||
$xFileExp,
|
||||
$bIgnoreMissing,
|
||||
$rhyFilter,
|
||||
$strCipherPass,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -402,17 +417,31 @@ sub openRead
|
||||
{name => 'xFileExp'},
|
||||
{name => 'bIgnoreMissing', optional => true, default => false},
|
||||
{name => 'rhyFilter', optional => true},
|
||||
{name => 'strCipherPass', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Need to push this down to drivers so errors do not appear in the log
|
||||
# Open the file
|
||||
my $oFileIo = $self->driver()->openRead($self->pathGet($xFileExp), {bIgnoreMissing => $bIgnoreMissing});
|
||||
|
||||
# Apply filters if file is defined
|
||||
if (defined($rhyFilter) && defined($oFileIo))
|
||||
if (defined($oFileIo))
|
||||
{
|
||||
foreach my $rhFilter (@{$rhyFilter})
|
||||
# If cipher is set then add the filter so that decryption is the first filter applied to the data read before any of the
|
||||
# other filters
|
||||
if (defined($self->cipherType()))
|
||||
{
|
||||
$oFileIo = $rhFilter->{strClass}->new($oFileIo, @{$rhFilter->{rxyParam}});
|
||||
$oFileIo = &STORAGE_FILTER_CIPHER_BLOCK->new(
|
||||
$oFileIo, $self->cipherType(), defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser(),
|
||||
{strMode => STORAGE_DECRYPT});
|
||||
}
|
||||
|
||||
# Apply any other filters
|
||||
if (defined($rhyFilter))
|
||||
{
|
||||
foreach my $rhFilter (@{$rhyFilter})
|
||||
{
|
||||
$oFileIo = $rhFilter->{strClass}->new($oFileIo, @{$rhFilter->{rxyParam}});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,6 +472,7 @@ sub openWrite
|
||||
$bAtomic,
|
||||
$bPathCreate,
|
||||
$rhyFilter,
|
||||
$strCipherPass,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -455,6 +485,7 @@ sub openWrite
|
||||
{name => 'bAtomic', optional => true, default => false},
|
||||
{name => 'bPathCreate', optional => true, default => false},
|
||||
{name => 'rhyFilter', optional => true},
|
||||
{name => 'strCipherPass', optional => true, redact => true},
|
||||
);
|
||||
|
||||
# Open the file
|
||||
@@ -462,7 +493,14 @@ sub openWrite
|
||||
{strMode => $strMode, strUser => $strUser, strGroup => $strGroup, lTimestamp => $lTimestamp, bPathCreate => $bPathCreate,
|
||||
bAtomic => $bAtomic});
|
||||
|
||||
# Apply filters if file is defined
|
||||
# If cipher is set then add filter so that encryption is performed just before the data is actually written
|
||||
if (defined($self->cipherType()))
|
||||
{
|
||||
$oFileIo = &STORAGE_FILTER_CIPHER_BLOCK->new(
|
||||
$oFileIo, $self->cipherType(), defined($strCipherPass) ? $strCipherPass : $self->cipherPassUser());
|
||||
}
|
||||
|
||||
# Apply any other filters
|
||||
if (defined($rhyFilter))
|
||||
{
|
||||
foreach my $rhFilter (reverse(@{$rhyFilter}))
|
||||
@@ -765,10 +803,151 @@ sub remove
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# encrypted - determine if the file is encrypted or not
|
||||
####################################################################################################################################
|
||||
sub encrypted
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strFileName,
|
||||
$bIgnoreMissing,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->encrypted', \@_,
|
||||
{name => 'strFileName'},
|
||||
{name => 'bIgnoreMissing', optional => true, default => false},
|
||||
);
|
||||
|
||||
my $tMagicSignature;
|
||||
my $bEncrypted = false;
|
||||
|
||||
# Open the file via the driver
|
||||
my $oFile = $self->driver()->openRead($self->pathGet($strFileName), {bIgnoreMissing => $bIgnoreMissing});
|
||||
|
||||
# If the file does not exist because we're ignoring missing (else it would error before this is executed) then determine if it
|
||||
# should be encrypted based on the repo
|
||||
if (!defined($oFile))
|
||||
{
|
||||
if (defined($self->{strCipherType}))
|
||||
{
|
||||
$bEncrypted = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# If the file does exist, then read the magic signature
|
||||
my $lSizeRead = $oFile->read(\$tMagicSignature, length(CIPHER_MAGIC));
|
||||
|
||||
# Close the file handle
|
||||
$oFile->close();
|
||||
|
||||
# If the file is able to be read, then if it is encrypted it must at least have the magic signature, even if it were
|
||||
# originally a 0 byte file
|
||||
if (($lSizeRead > 0) && substr($tMagicSignature, 0, length(CIPHER_MAGIC)) eq CIPHER_MAGIC)
|
||||
{
|
||||
$bEncrypted = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'bEncrypted', value => $bEncrypted}
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# encryptionValid - determine if encyption set properly based on the value passed
|
||||
####################################################################################################################################
|
||||
sub encryptionValid
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$bEncrypted,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->encryptionValid', \@_,
|
||||
{name => 'bEncrypted'},
|
||||
);
|
||||
|
||||
my $bValid = true;
|
||||
|
||||
# If encryption is set on the file then make sure the repo is encrypted and visa-versa
|
||||
if ($bEncrypted)
|
||||
{
|
||||
if (!defined($self->{strCipherType}))
|
||||
{
|
||||
$bValid = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (defined($self->{strCipherType}))
|
||||
{
|
||||
$bValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'bValid', value => $bValid}
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# cipherPassGen - generate a passphrase of the specified size (in bytes)
|
||||
####################################################################################################################################
|
||||
sub cipherPassGen
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$iKeySizeInBytes,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->cipherPassGen', \@_,
|
||||
{name => 'iKeySizeInBytes', default => 48},
|
||||
);
|
||||
|
||||
require pgBackRest::LibC;
|
||||
pgBackRest::LibC->import(qw(:random :encode));
|
||||
|
||||
# ??? Constant for base64 encoding can't used here because it is not loaded at parse time -- fix when the C library required
|
||||
my $strCipherPass = encodeToStr(0, randomBytes($iKeySizeInBytes));
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'strCipherPassSub', value => $strCipherPass, redact => true}
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# Getters
|
||||
####################################################################################################################################
|
||||
sub pathBase {shift->{strPathBase}}
|
||||
sub driver {shift->{oDriver}}
|
||||
sub cipherType {shift->{strCipherType}}
|
||||
sub cipherPassUser {shift->{strCipherPassUser}}
|
||||
|
||||
1;
|
||||
|
||||
@@ -161,7 +161,7 @@ sub s3SigningKey
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'strSigningKey', value => $strSigningKey, trace => true}
|
||||
{name => 'strSigningKey', value => $strSigningKey, redact => true, trace => true}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -232,8 +232,7 @@ sub buildXsAll
|
||||
"# Configuration option value constants\n" .
|
||||
"sub libcAutoConstant\n" .
|
||||
"{\n" .
|
||||
" return \n" .
|
||||
# " use constant\n" .
|
||||
" return\n" .
|
||||
" {\n" .
|
||||
" " . trim($strConstantBlock) . "\n" .
|
||||
" }\n" .
|
||||
|
||||
@@ -12,11 +12,14 @@ sub libcAutoVersion
|
||||
# Configuration option value constants
|
||||
sub libcAutoConstant
|
||||
{
|
||||
return
|
||||
return
|
||||
{
|
||||
CFGOPTVAL_INFO_OUTPUT_TEXT => 'text',
|
||||
CFGOPTVAL_INFO_OUTPUT_JSON => 'json',
|
||||
|
||||
CFGOPTVAL_REPO_CIPHER_TYPE_NONE => 'none',
|
||||
CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC => 'aes-256-cbc',
|
||||
|
||||
CFGOPTVAL_REPO_TYPE_CIFS => 'cifs',
|
||||
CFGOPTVAL_REPO_TYPE_POSIX => 'posix',
|
||||
CFGOPTVAL_REPO_TYPE_S3 => 's3',
|
||||
@@ -71,6 +74,8 @@ sub libcAutoExportTag
|
||||
[
|
||||
'CFGOPTVAL_INFO_OUTPUT_TEXT',
|
||||
'CFGOPTVAL_INFO_OUTPUT_JSON',
|
||||
'CFGOPTVAL_REPO_CIPHER_TYPE_NONE',
|
||||
'CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC',
|
||||
'CFGOPTVAL_REPO_TYPE_CIFS',
|
||||
'CFGOPTVAL_REPO_TYPE_POSIX',
|
||||
'CFGOPTVAL_REPO_TYPE_S3',
|
||||
@@ -159,6 +164,8 @@ sub libcAutoExportTag
|
||||
'CFGOPT_PROCESS_MAX',
|
||||
'CFGOPT_PROTOCOL_TIMEOUT',
|
||||
'CFGOPT_RECOVERY_OPTION',
|
||||
'CFGOPT_REPO_CIPHER_PASS',
|
||||
'CFGOPT_REPO_CIPHER_TYPE',
|
||||
'CFGOPT_REPO_PATH',
|
||||
'CFGOPT_REPO_S3_BUCKET',
|
||||
'CFGOPT_REPO_S3_CA_FILE',
|
||||
|
||||
@@ -78,6 +78,8 @@ Option constants
|
||||
#define CFGOPT_PROCESS_MAX cfgOptProcessMax
|
||||
#define CFGOPT_PROTOCOL_TIMEOUT cfgOptProtocolTimeout
|
||||
#define CFGOPT_RECOVERY_OPTION cfgOptRecoveryOption
|
||||
#define CFGOPT_REPO_CIPHER_PASS cfgOptRepoCipherPass
|
||||
#define CFGOPT_REPO_CIPHER_TYPE cfgOptRepoCipherType
|
||||
#define CFGOPT_REPO_PATH cfgOptRepoPath
|
||||
#define CFGOPT_REPO_S3_BUCKET cfgOptRepoS3Bucket
|
||||
#define CFGOPT_REPO_S3_CA_FILE cfgOptRepoS3CaFile
|
||||
|
||||
@@ -938,6 +938,22 @@ ConfigOptionData configOptionData[] = CONFIG_OPTION_LIST
|
||||
CONFIG_OPTION_DEFINE_ID(cfgDefOptRecoveryOption)
|
||||
)
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
CONFIG_OPTION
|
||||
(
|
||||
CONFIG_OPTION_NAME("repo-cipher-pass")
|
||||
CONFIG_OPTION_INDEX(0)
|
||||
CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoCipherPass)
|
||||
)
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
CONFIG_OPTION
|
||||
(
|
||||
CONFIG_OPTION_NAME("repo-cipher-type")
|
||||
CONFIG_OPTION_INDEX(0)
|
||||
CONFIG_OPTION_DEFINE_ID(cfgDefOptRepoCipherType)
|
||||
)
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------------------
|
||||
CONFIG_OPTION
|
||||
(
|
||||
|
||||
@@ -83,6 +83,8 @@ typedef enum
|
||||
cfgOptProcessMax,
|
||||
cfgOptProtocolTimeout,
|
||||
cfgOptRecoveryOption,
|
||||
cfgOptRepoCipherPass,
|
||||
cfgOptRepoCipherType,
|
||||
cfgOptRepoPath,
|
||||
cfgOptRepoS3Bucket,
|
||||
cfgOptRepoS3CaFile,
|
||||
|
||||
@@ -1632,6 +1632,86 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
)
|
||||
)
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
CFGDEFDATA_OPTION_NAME("repo-cipher-pass")
|
||||
CFGDEFDATA_OPTION_REQUIRED(false)
|
||||
CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal)
|
||||
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString)
|
||||
|
||||
CFGDEFDATA_OPTION_INDEX_TOTAL(1)
|
||||
CFGDEFDATA_OPTION_NEGATE(false)
|
||||
CFGDEFDATA_OPTION_SECURE(true)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEPEND_LIST
|
||||
(
|
||||
cfgDefOptRepoCipherType,
|
||||
"aes-256-cbc"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
CFGDEFDATA_OPTION_NAME("repo-cipher-type")
|
||||
CFGDEFDATA_OPTION_REQUIRED(true)
|
||||
CFGDEFDATA_OPTION_SECTION(cfgDefSectionGlobal)
|
||||
CFGDEFDATA_OPTION_TYPE(cfgDefOptTypeString)
|
||||
|
||||
CFGDEFDATA_OPTION_INDEX_TOTAL(1)
|
||||
CFGDEFDATA_OPTION_NEGATE(false)
|
||||
CFGDEFDATA_OPTION_SECURE(false)
|
||||
|
||||
CFGDEFDATA_OPTION_COMMAND_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_LIST
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_ALLOW_LIST
|
||||
(
|
||||
"none",
|
||||
"aes-256-cbc"
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("none")
|
||||
)
|
||||
)
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------------
|
||||
CFGDEFDATA_OPTION
|
||||
(
|
||||
|
||||
@@ -96,6 +96,8 @@ typedef enum
|
||||
cfgDefOptProcessMax,
|
||||
cfgDefOptProtocolTimeout,
|
||||
cfgDefOptRecoveryOption,
|
||||
cfgDefOptRepoCipherPass,
|
||||
cfgDefOptRepoCipherType,
|
||||
cfgDefOptRepoPath,
|
||||
cfgDefOptRepoS3Bucket,
|
||||
cfgDefOptRepoS3CaFile,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 001 - rmt 0, cmp 0, error version, s3 0
|
||||
===========================================
|
||||
run 001 - rmt 0, cmp 0, error version, s3 0, enc 0
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
run 002 - rmt 0, cmp 1, error version, s3 0
|
||||
===========================================
|
||||
run 002 - rmt 0, cmp 1, error version, s3 0, enc 1
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
@@ -14,6 +14,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -31,6 +34,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 003 - rmt 1, cmp 0, error version, s3 0
|
||||
===========================================
|
||||
run 003 - rmt 1, cmp 0, error version, s3 0, enc 0
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 004 - rmt 1, cmp 0, error connect, s3 0
|
||||
===========================================
|
||||
run 004 - rmt 1, cmp 0, error connect, s3 0, enc 0
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
run 005 - rmt 1, cmp 1, error version, s3 0
|
||||
===========================================
|
||||
run 005 - rmt 1, cmp 1, error version, s3 0, enc 1
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
@@ -14,6 +14,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -31,6 +34,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
run 006 - rmt 1, cmp 1, error connect, s3 0
|
||||
===========================================
|
||||
run 006 - rmt 1, cmp 1, error connect, s3 0, enc 1
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
@@ -14,6 +14,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -31,6 +34,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 007 - rmt 1, cmp 0, error connect, s3 1
|
||||
===========================================
|
||||
run 007 - rmt 1, cmp 0, error connect, s3 1, enc 0
|
||||
==================================================
|
||||
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 001 - local
|
||||
===============
|
||||
run 001 - local, enc 0
|
||||
======================
|
||||
|
||||
* full backup: label = [BACKUP-FULL-1], start = 000000010000000000000000, stop = 000000010000000000000002
|
||||
* incr backup: label = [BACKUP-INCR-1], prior = [BACKUP-FULL-1], start = 000000010000000000000006, stop = 0000000100000000000000FB
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 002 - Expire::stanzaUpgrade
|
||||
===============================
|
||||
run 002 - Expire::stanzaUpgrade, enc 0
|
||||
======================================
|
||||
|
||||
* full backup: label = [BACKUP-FULL-1], start = 000000010000000000000000, stop = 000000010000000000000002
|
||||
* incr backup: label = [BACKUP-INCR-1], prior = [BACKUP-FULL-1], start = 000000010000000000000006, stop = 000000010000000000000008
|
||||
|
||||
@@ -89,6 +89,8 @@ Repository Options:
|
||||
--backup-ssh-port backup server SSH port when backup-host is set
|
||||
--backup-user backup host user when backup-host is set
|
||||
[default=backrest]
|
||||
--repo-cipher-pass repository cipher passphrase
|
||||
--repo-cipher-type cipher used to encrypt the repository [default=none]
|
||||
--repo-path repository path where WAL segments and backups
|
||||
stored [default=/var/lib/pgbackrest]
|
||||
--repo-s3-bucket s3 repository bucket
|
||||
@@ -181,6 +183,8 @@ Repository Options:
|
||||
--backup-ssh-port backup server SSH port when backup-host is set
|
||||
--backup-user backup host user when backup-host is set
|
||||
[default=backrest]
|
||||
--repo-cipher-pass repository cipher passphrase
|
||||
--repo-cipher-type cipher used to encrypt the repository [default=none]
|
||||
--repo-path repository path where WAL segments and backups
|
||||
stored [default=/var/lib/pgbackrest]
|
||||
--repo-s3-bucket s3 repository bucket
|
||||
|
||||
+232
-136
@@ -1,5 +1,5 @@
|
||||
run 001 - rmt 0, s3 0
|
||||
=====================
|
||||
run 001 - rmt 0, s3 0, enc 0
|
||||
============================
|
||||
|
||||
info all stanzas - no stanzas exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn info
|
||||
@@ -74,7 +74,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=16384 --check
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 16384, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 16384, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -82,8 +82,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -93,7 +98,7 @@ P00 DEBUG: Db::dbObjectGet(): bMasterOnly = <false>
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 16384, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 16384, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Backup::Info->check(): bRequired = <true>, iCatalogVersion = 201409291, iControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
@@ -106,6 +111,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^[BACKUP-FULL-1], strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -119,7 +125,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/db-maste
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-1], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
@@ -139,18 +145,18 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreEx
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_stat_tmp
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_subtrans
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_tblspc
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --buffer-size=16384 --command=backup --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --repo-type=cifs --stanza=db --type=db local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 16384, iCompressLevel = 3, iCompressLevelNetwork = 3, iProtocolTimeout = 60, strCommand = [BACKREST-BIN] --buffer-size=16384 --command=backup --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --repo-type=cifs --stanza=db --type=db local, strId = local-1 process, strName = local
|
||||
@@ -164,21 +170,21 @@ P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33001 (64KB, 39
|
||||
P00 WARN: invalid page checksums found in file [TEST_PATH]/db-master/db/base/base/32768/33001 at pages 0, 3-5, 7
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 65536, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 32768, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, {bAlign => 1, bValid => 1}), strKey = pg_data/base/32768/33000.32767
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/32768/33000, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 59%) checksum 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 32768, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 32768, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, {bAlign => 1, bValid => 1}), strKey = pg_data/base/32768/33000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/16384/17000, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 79%) checksum 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 32768, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 16384, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, {bAlign => 1, bValid => 0, iyPageError => (1)}), strKey = pg_data/base/16384/17000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/global/pg_control, strQueueIdx = 0
|
||||
@@ -186,56 +192,56 @@ P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/16384/17000 (16KB, 89
|
||||
P00 WARN: invalid page checksum found in file [TEST_PATH]/db-master/db/base/base/16384/17000 at page 1
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 16384, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 8192, 8192, 89373d9f2973502940de06bc5212489df3f8a912, [undef]), strKey = pg_data/global/pg_control
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/1/12000, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/global/pg_control (8KB, 94%) checksum 89373d9f2973502940de06bc5212489df3f8a912
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 8192, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 8192, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, {bAlign => 1, bValid => 1}), strKey = pg_data/base/1/12000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/postgresql.conf, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 8192, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 21, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, [undef]), strKey = pg_data/postgresql.conf
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/pg_stat/global.stat, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 21, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 5, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, [undef]), strKey = pg_data/pg_stat/global.stat
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/32768/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 5, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/32768/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/16384/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/16384/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/1/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/1/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: no jobs found, stop local: iHostConfigIdx = [undef], iHostIdx = 0, iProcessId = 1, strHostType = [undef]
|
||||
@@ -243,7 +249,7 @@ P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base/PG_VERSION (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: all jobs complete
|
||||
P00 DEBUG: Backup::Backup->processManifest=>: lSizeTotal = 163878
|
||||
@@ -251,26 +257,31 @@ P00 INFO: full backup size = 160KB
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]
|
||||
P00 INFO: new backup label = [BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=16384 --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --repo-type=cifs --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -452,7 +463,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -460,8 +471,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -477,7 +493,7 @@ P00 DEBUG: Db::dbObjectGet(): bMasterOnly = <false>
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Backup::Info->check(): bRequired = <true>, iCatalogVersion = 201409291, iControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
@@ -494,6 +510,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^[BACKUP-FULL-2], strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -507,7 +524,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/db-maste
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 TEST: PgBaCkReStTeSt-BACKUP-START-PgBaCkReStTeSt
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 63, oException = [undef], strSignal = TERM
|
||||
@@ -525,7 +542,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -569,7 +586,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -622,7 +639,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --checksum-page --no-compre
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -630,8 +647,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -649,7 +671,7 @@ P00 DEBUG: Db::dbObjectGet(): bMasterOnly = <false>
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Backup::Info->check(): bRequired = <true>, iCatalogVersion = 201409291, iControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
@@ -662,8 +684,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FUL
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 WARN: --no-online passed and postmaster.pid exists but --force was passed so backup will continue though it looks like the postmaster is running and the backup will probably not be consistent
|
||||
@@ -685,7 +719,7 @@ P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <f
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
@@ -705,18 +739,18 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreEx
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_stat_tmp
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_subtrans
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_tblspc
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, 89373d9f2973502940de06bc5212489df3f8a912, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, 89373d9f2973502940de06bc5212489df3f8a912, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --command=backup --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db --type=db local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 3, iProtocolTimeout = 60, strCommand = [BACKREST-BIN] --command=backup --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db --type=db local, strId = local-1 process, strName = local
|
||||
@@ -767,27 +801,32 @@ P00 INFO: full backup size = 160KB
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]
|
||||
P00 INFO: new backup label = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = false
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -956,7 +995,7 @@ restore delta, backup '[BACKUP-FULL-2]' - add and delete files (db-master host)
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: restore command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --delta --link-all --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --set=[BACKUP-FULL-2] --stanza=db
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = restore
|
||||
@@ -964,29 +1003,41 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp = [TEST_PATH]/db-master/db/base
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/PG_VERSION
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = <REPO:BACKUP>/backup.info
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/backup.info
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [TEST_PATH]/db-master/db/base/backup.info, xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = false, oStorage = [object], strBackupClusterPath = [TEST_PATH]/db-master/db/base
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = false, oStorage = [object], strBackupClusterPath = [TEST_PATH]/db-master/db/base, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Backup::Info->current(): strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->current=>: bTest = true
|
||||
P00 INFO: restore backup set [BACKUP-FULL-2]
|
||||
P00 DEBUG: Restore->manifestLoad(): strCipherPass = [undef]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [TEST_PATH]/db-master/db/base/backup.manifest, xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = [object], strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Restore->manifestOwnershipCheck(): oManifest = [object]
|
||||
P00 WARN: backup group for pg_data/base/16384/PG_VERSION was not mapped to a name, set to [GROUP-1]
|
||||
P00 WARN: backup user for pg_data/base/1/PG_VERSION was not mapped to a name, set to [USER-1]
|
||||
@@ -1120,18 +1171,18 @@ P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: build level 3 paths/links
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = backup
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, 65536, [MODIFICATION-TIME-1], 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 0, 0, pg_data/base/32768/33001, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33001, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, 32768, [MODIFICATION-TIME-1], 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 0, 0, pg_data/base/32768/33000.32767, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33000.32767, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, 32768, [MODIFICATION-TIME-1], 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 0, 0, pg_data/base/32768/33000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, 16384, [MODIFICATION-TIME-1], e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 0, 0, pg_data/base/16384/17000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/16384/17000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp, 8192, [MODIFICATION-TIME-2], 89373d9f2973502940de06bc5212489df3f8a912, 0, 0, pg_data/global/pg_control, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/global/pg_control, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, 8192, [MODIFICATION-TIME-1], 22c98d248ff548311eda88559e4a8405ed77c003, 0, 0, pg_data/base/1/12000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/1/12000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, 21, [MODIFICATION-TIME-2], 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, 0, pg_data/postgresql.conf, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/postgresql.conf, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, 5, [MODIFICATION-TIME-2], e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, 0, pg_data/pg_stat/global.stat, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/pg_stat/global.stat, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/32768/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/16384/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/16384/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/1/PG_VERSION, [undef], 0660, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/1/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, 65536, [MODIFICATION-TIME-1], 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 0, 0, pg_data/base/32768/33001, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, 32768, [MODIFICATION-TIME-1], 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 0, 0, pg_data/base/32768/33000.32767, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, 32768, [MODIFICATION-TIME-1], 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 0, 0, pg_data/base/32768/33000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, 16384, [MODIFICATION-TIME-1], e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 0, 0, pg_data/base/16384/17000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp, 8192, [MODIFICATION-TIME-2], 89373d9f2973502940de06bc5212489df3f8a912, 0, 0, pg_data/global/pg_control, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, 8192, [MODIFICATION-TIME-1], 22c98d248ff548311eda88559e4a8405ed77c003, 0, 0, pg_data/base/1/12000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, 21, [MODIFICATION-TIME-2], 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, 0, pg_data/postgresql.conf, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, 5, [MODIFICATION-TIME-2], e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, 0, pg_data/pg_stat/global.stat, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/32768/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/16384/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/1/PG_VERSION, [undef], 0660, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = backup
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --command=restore --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db --type=backup local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 3, iProtocolTimeout = 60, strCommand = [BACKREST-BIN] --command=restore --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db --type=backup local, strId = local-1 process, strName = local
|
||||
@@ -1540,7 +1591,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -1548,8 +1599,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1565,7 +1621,7 @@ P00 DEBUG: Db::dbObjectGet(): bMasterOnly = <false>
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Backup::Info->check(): bRequired = <true>, iCatalogVersion = 201409291, iControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
@@ -1578,7 +1634,13 @@ P00 DEBUG: Backup::Info->list=>: stryBackup = ([BACKUP-FULL-2])
|
||||
P00 DEBUG: Backup::Info->last=>: strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->dbHistoryList=>: hDbHash = [hash]
|
||||
P00 DEBUG: Backup::Info->confirmDb=>: bConfirmDb = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1592,6 +1654,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = [BACKUP-EXPR](D|I)\.manifest\.gz$, strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
@@ -1605,7 +1668,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/db-maste
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-INCR-1], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = incr
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
@@ -1616,8 +1679,8 @@ P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/17
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/global/pg_control to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/1/12000 to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/postgresql.conf to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, [undef], 0, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, [undef], 1, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, [undef], 0, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, [undef], 1, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2]
|
||||
@@ -1644,27 +1707,32 @@ P00 INFO: incr backup size = 18B
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]
|
||||
P00 INFO: new backup label = [BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1840,7 +1908,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -1848,8 +1916,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1873,7 +1946,7 @@ P00 DEBUG: Db::dbObjectGet(): bMasterOnly = <false>
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Backup::Info->check(): bRequired = <true>, iCatalogVersion = 201409291, iControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
@@ -1886,7 +1959,13 @@ P00 DEBUG: Backup::Info->list=>: stryBackup = ([BACKUP-FULL-2])
|
||||
P00 DEBUG: Backup::Info->last=>: strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->dbHistoryList=>: hDbHash = [hash]
|
||||
P00 DEBUG: Backup::Info->confirmDb=>: bConfirmDb = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1896,8 +1975,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-INC
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
@@ -1920,7 +2011,7 @@ P00 DETAIL: clean resumed backup path: [TEST_PATH]/db-master/repo/backup/db/[BAC
|
||||
P00 DEBUG: Storage::Local->manifest(): strPathExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-INCR-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = incr
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
@@ -1931,9 +2022,9 @@ P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/17
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/global/pg_control to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/1/12000 to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/postgresql.conf to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, bogus, 0, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, 7, [undef], 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, strOp = backupFile, strQueue = pg_tblspc/2
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, d85de07d6421d90aa9191c11c889bfde43680f0f, 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, bogus, 0, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, 7, [undef], 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, strOp = backupFile, strQueue = pg_tblspc/2
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, d85de07d6421d90aa9191c11c889bfde43680f0f, 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2]
|
||||
@@ -1964,27 +2055,32 @@ P00 INFO: incr backup size = 25B
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]
|
||||
P00 INFO: new backup label = [BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/db-master/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -4315,7 +4411,7 @@ stanza: db
|
||||
backup reference list: [BACKUP-FULL-3]
|
||||
|
||||
stanza: db_empty
|
||||
status: error (no valid backups)
|
||||
status: error (missing stanza data)
|
||||
|
||||
info all stanzas - normal output (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --output=json info
|
||||
@@ -4413,8 +4509,8 @@ info all stanzas - normal output (db-master host)
|
||||
"db" : [],
|
||||
"name" : "db_empty",
|
||||
"status" : {
|
||||
"code" : 2,
|
||||
"message" : "no valid backups"
|
||||
"code" : 3,
|
||||
"message" : "missing stanza data"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+285
-145
@@ -1,5 +1,5 @@
|
||||
run 002 - rmt 1, s3 0
|
||||
=====================
|
||||
run 002 - rmt 1, s3 0, enc 0
|
||||
============================
|
||||
|
||||
info all stanzas - no stanzas exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn info
|
||||
@@ -74,7 +74,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --buffer-size=16384 --check
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 16384, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 16384, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -82,8 +82,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -111,6 +116,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^[BACKUP-FULL-1], strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -124,7 +130,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/backup/r
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-1], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
@@ -139,18 +145,18 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreEx
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_clog
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_stat
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]/pg_data/pg_tblspc
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, [undef], 1, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --buffer-size=16384 --cmd-ssh=/usr/bin/ssh --command=backup --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db1-socket-path==/test_socket_path --db-timeout=1 --db1-user=[USER-1] --host-id=1 --lock-path=[TEST_PATH]/backup/lock --log-path=[TEST_PATH]/backup/log --process=1 --protocol-timeout=2 --repo-path=[TEST_PATH]/backup/repo --repo-type=cifs --stanza=db --type=db local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 16384, iCompressLevel = 3, iCompressLevelNetwork = 1, iProtocolTimeout = 2, strCommand = [BACKREST-BIN] --buffer-size=16384 --cmd-ssh=/usr/bin/ssh --command=backup --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db1-socket-path==/test_socket_path --db-timeout=1 --db1-user=[USER-1] --host-id=1 --lock-path=[TEST_PATH]/backup/lock --log-path=[TEST_PATH]/backup/log --process=1 --protocol-timeout=2 --repo-path=[TEST_PATH]/backup/repo --repo-type=cifs --stanza=db --type=db local, strId = local-1 process, strName = local
|
||||
@@ -164,21 +170,21 @@ P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/32768/33001
|
||||
P00 WARN: invalid page checksums found in file db-master:[TEST_PATH]/db-master/db/base/base/32768/33001 at pages 0, 3-5, 7
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 65536, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 32768, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, {bAlign => 1, bValid => 1}), strKey = pg_data/base/32768/33000.32767
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/32768/33000, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/32768/33000.32767 (32KB, 59%) checksum 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 32768, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 32768, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, {bAlign => 1, bValid => 1}), strKey = pg_data/base/32768/33000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/16384/17000, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/32768/33000 (32KB, 79%) checksum 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 32768, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 16384, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, {bAlign => 1, bValid => 0, iyPageError => (1)}), strKey = pg_data/base/16384/17000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/global/pg_control, strQueueIdx = 0
|
||||
@@ -186,56 +192,56 @@ P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/16384/17000
|
||||
P00 WARN: invalid page checksum found in file db-master:[TEST_PATH]/db-master/db/base/base/16384/17000 at page 1
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 16384, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 8192, 8192, 89373d9f2973502940de06bc5212489df3f8a912, [undef]), strKey = pg_data/global/pg_control
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/1/12000, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/global/pg_control (8KB, 94%) checksum 89373d9f2973502940de06bc5212489df3f8a912
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 8192, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 8192, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, {bAlign => 1, bValid => 1}), strKey = pg_data/base/1/12000
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/postgresql.conf, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/1/12000 (8KB, 99%) checksum 22c98d248ff548311eda88559e4a8405ed77c003
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 8192, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 21, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, [undef]), strKey = pg_data/postgresql.conf
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/pg_stat/global.stat, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/postgresql.conf (21B, 99%) checksum 6721d92c9fcdf4248acff1f9a1377127d9064807
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 21, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 5, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, [undef]), strKey = pg_data/pg_stat/global.stat
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/32768/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_stat/global.stat (5B, 99%) checksum e350d5ce0153f3e22d5db21cf2a4eff00f3ee877
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 5, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/32768/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/16384/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/32768/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/16384/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/base/1/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/16384/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/base/1/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: get job from queue: iHostIdx = 0, iProcessId = 1, strKey = pg_data/PG_VERSION, strQueueIdx = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/base/1/PG_VERSION (3B, 99%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: job complete: iProcessId = 1, rResult = (1, 3, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, [undef]), strKey = pg_data/PG_VERSION
|
||||
P00 DEBUG: Protocol::Local::Process->process: no jobs found, stop local: iHostConfigIdx = [undef], iHostIdx = 0, iProcessId = 1, strHostType = [undef]
|
||||
@@ -243,7 +249,7 @@ P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/PG_VERSION (3B, 100%) checksum 184473f470864e067ee3a22e64b47b0a1c356f29
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::File::backupManifestUpdate: save manifest: lManifestSaveCurrent = 3, lManifestSaveSize = 3
|
||||
P00 DEBUG: Protocol::Local::Process->process: all jobs complete
|
||||
P00 DEBUG: Backup::Backup->processManifest=>: lSizeTotal = 163878
|
||||
@@ -253,26 +259,31 @@ P00 DEBUG: Protocol::Helper::protocolDestroy: found cached protocol: iRemot
|
||||
P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]
|
||||
P00 INFO: new backup label = [BACKUP-FULL-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --buffer-size=16384 --cmd-ssh=/usr/bin/ssh --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --repo-type=cifs --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -453,7 +464,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -461,8 +472,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -500,6 +516,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^[BACKUP-FULL-2], strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -513,7 +530,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/backup/r
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 TEST: PgBaCkReStTeSt-BACKUP-START-PgBaCkReStTeSt
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
@@ -547,7 +564,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -555,8 +572,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -594,8 +616,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FUL
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -611,7 +645,7 @@ P00 DETAIL: clean resumed backup path: [TEST_PATH]/backup/repo/backup/db/[BACKUP
|
||||
P00 DEBUG: Storage::Local->manifest(): strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 TEST: PgBaCkReStTeSt-BACKUP-START-PgBaCkReStTeSt
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
@@ -632,7 +666,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -640,8 +674,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -704,7 +743,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -712,8 +751,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -798,7 +842,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -806,8 +850,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -845,8 +894,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FUL
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 DEBUG: Manifest->build(): bOnline = false, bTablespace = [undef], hDatabaseMap = [undef], hTablespaceMap = [undef], oLastManifest = [undef], oStorageDbMaster = [object], strFilter = [undef], strLevel = [undef], strParentPath = [undef], strPath = [TEST_PATH]/db-master/db/base
|
||||
@@ -862,7 +923,7 @@ P00 DETAIL: clean resumed backup path: [TEST_PATH]/backup/repo/backup/db/[BACKUP
|
||||
P00 DEBUG: Storage::Local->manifest(): strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 TEST: PgBaCkReStTeSt-BACKUP-START-PgBaCkReStTeSt
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 63, oException = [undef], strSignal = TERM
|
||||
@@ -882,7 +943,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -912,7 +973,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --checksum-page --no-compre
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -920,8 +981,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -957,8 +1023,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FUL
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = true
|
||||
P00 WARN: --no-online passed and postmaster.pid exists but --force was passed so backup will continue though it looks like the postmaster is running and the backup will probably not be consistent
|
||||
@@ -980,7 +1058,7 @@ P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <f
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-FULL-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = full
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
@@ -995,18 +1073,18 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreEx
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_clog
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_stat
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/pg_data/pg_tblspc
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, 89373d9f2973502940de06bc5212489df3f8a912, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, pg_data/base/32768/33001, 65536, 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, pg_data/base/32768/33000.32767, 32768, 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, pg_data/base/32768/33000, 32768, 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, pg_data/base/16384/17000, 16384, e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control, pg_data/global/pg_control, 8192, 89373d9f2973502940de06bc5212489df3f8a912, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 0, [undef]), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, pg_data/base/1/12000, 8192, 22c98d248ff548311eda88559e4a8405ed77c003, 1, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, pg_data/postgresql.conf, 21, 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, pg_data/pg_stat/global.stat, 5, e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-2], 1, [undef]), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, pg_data/base/32768/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, pg_data/base/16384/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, pg_data/base/1/PG_VERSION, 3, 184473f470864e067ee3a22e64b47b0a1c356f29, 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, pg_data/PG_VERSION, 3, [undef], 0, [BACKUP-FULL-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = db
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --command=backup --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --host-id=1 --lock-path=[TEST_PATH]/backup/lock --log-path=[TEST_PATH]/backup/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db --type=db local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 1, iProtocolTimeout = 60, strCommand = [BACKREST-BIN] --command=backup --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --host-id=1 --lock-path=[TEST_PATH]/backup/lock --log-path=[TEST_PATH]/backup/log --process=1 --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db --type=db local, strId = local-1 process, strName = local
|
||||
@@ -1059,27 +1137,32 @@ P00 DEBUG: Protocol::Helper::protocolDestroy: found cached protocol: iRemot
|
||||
P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]
|
||||
P00 INFO: new backup label = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-FULL-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = false
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1275,7 +1358,7 @@ P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
P00 DEBUG: Protocol::Remote::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 1, iProtocolTimeout = 60, iSshPort = [undef], strCommand = [BACKREST-BIN] --buffer-size=4194304 --command=restore --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --stanza=db --type=backup remote, strCommandSSH = /usr/bin/ssh, strHost = backup, strUser = [USER-2]
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 1, iProtocolTimeout = 60, strCommand = /usr/bin/ssh -o LogLevel=error -o Compression=no -o PasswordAuthentication=no backrest@backup '[BACKREST-BIN] --buffer-size=4194304 --command=restore --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --protocol-timeout=60 --stanza=db --type=backup remote', strId = remote process on 'backup', strName = remote
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp = [TEST_PATH]/db-master/db/base
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
@@ -1287,20 +1370,32 @@ P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
P00 DEBUG: Protocol::Storage::Remote->new(): oProtocol = [object]
|
||||
P00 DEBUG: Protocol::Storage::Remote->openRead(): rhParam = [hash], strFileExp = <REPO:BACKUP>/backup.info
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [TEST_PATH]/db-master/db/base/backup.info, xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = false, oStorage = [object], strBackupClusterPath = [TEST_PATH]/db-master/db/base
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = false, oStorage = [object], strBackupClusterPath = [TEST_PATH]/db-master/db/base, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = [TEST_PATH]/db-master/db/base/backup.info
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Backup::Info->current(): strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->current=>: bTest = true
|
||||
P00 INFO: restore backup set [BACKUP-FULL-2]
|
||||
P00 DEBUG: Restore->manifestLoad(): strCipherPass = [undef]
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = true
|
||||
P00 DEBUG: Protocol::Storage::Remote->openRead(): rhParam = [hash], strFileExp = <REPO:BACKUP>/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [TEST_PATH]/db-master/db/base/backup.manifest, xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = [object], strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Restore->manifestOwnershipCheck(): oManifest = [object]
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = [TEST_PATH]/db-master/db/base/global/pg_control
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
@@ -1378,18 +1473,18 @@ P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: build level 3 paths/links
|
||||
P00 DEBUG: Protocol::Local::Process->new(): bConfessError = <true>, iSelectTimeout = <30>, strBackRestBin = <[BACKREST-BIN]>, strHostType = backup
|
||||
P00 DEBUG: Protocol::Local::Process->hostAdd(): iHostConfigIdx = 1, iProcessMax = 1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, 65536, [MODIFICATION-TIME-1], 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 0, 0, pg_data/base/32768/33001, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33001, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, 32768, [MODIFICATION-TIME-1], 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 0, 0, pg_data/base/32768/33000.32767, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33000.32767, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, 32768, [MODIFICATION-TIME-1], 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 0, 0, pg_data/base/32768/33000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/33000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, 16384, [MODIFICATION-TIME-1], e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 0, 0, pg_data/base/16384/17000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/16384/17000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp, 8192, [MODIFICATION-TIME-2], 89373d9f2973502940de06bc5212489df3f8a912, 0, 0, pg_data/global/pg_control, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/global/pg_control, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, 8192, [MODIFICATION-TIME-1], 22c98d248ff548311eda88559e4a8405ed77c003, 0, 0, pg_data/base/1/12000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/1/12000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, 21, [MODIFICATION-TIME-2], 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, 0, pg_data/postgresql.conf, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/postgresql.conf, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, 5, [MODIFICATION-TIME-2], e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, 0, pg_data/pg_stat/global.stat, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/pg_stat/global.stat, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/32768/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/32768/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/16384/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/16384/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/1/PG_VERSION, [undef], 0660, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/base/1/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), strKey = pg_data/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33001, 65536, [MODIFICATION-TIME-1], 6bf316f11d28c28914ea9be92c00de9bea6d9a6b, 0, 0, pg_data/base/32768/33001, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33001, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000.32767, 32768, [MODIFICATION-TIME-1], 21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5, 0, 0, pg_data/base/32768/33000.32767, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33000.32767, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/33000, 32768, [MODIFICATION-TIME-1], 4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f, 0, 0, pg_data/base/32768/33000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/33000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/17000, 16384, [MODIFICATION-TIME-1], e0101dd8ffb910c9c202ca35b5f828bcb9697bed, 0, 0, pg_data/base/16384/17000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/16384/17000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/global/pg_control.pgbackrest.tmp, 8192, [MODIFICATION-TIME-2], 89373d9f2973502940de06bc5212489df3f8a912, 0, 0, pg_data/global/pg_control, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/global/pg_control, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/12000, 8192, [MODIFICATION-TIME-1], 22c98d248ff548311eda88559e4a8405ed77c003, 0, 0, pg_data/base/1/12000, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/1/12000, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/postgresql.conf, 21, [MODIFICATION-TIME-2], 6721d92c9fcdf4248acff1f9a1377127d9064807, 0, 0, pg_data/postgresql.conf, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/postgresql.conf, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_stat/global.stat, 5, [MODIFICATION-TIME-2], e350d5ce0153f3e22d5db21cf2a4eff00f3ee877, 0, 0, pg_data/pg_stat/global.stat, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/pg_stat/global.stat, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/32768/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/32768/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/32768/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/16384/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/16384/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/16384/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/base/1/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/base/1/PG_VERSION, [undef], 0660, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/base/1/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/PG_VERSION, 3, [MODIFICATION-TIME-1], 184473f470864e067ee3a22e64b47b0a1c356f29, 0, 0, pg_data/PG_VERSION, [undef], 0600, [USER-1], [GROUP-1], [MODIFICATION-TIME-3], 1, [BACKUP-FULL-2], 0), rParamSecure = [undef], strKey = pg_data/PG_VERSION, strOp = restoreFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->hostConnect: start local process: iHostConfigIdx = 1, iHostIdx = 0, iHostProcessIdx = 0, iProcessId = 1, strHostType = backup
|
||||
P00 DEBUG: Protocol::Local::Master->new(): iProcessIdx = 1, strCommand = [BACKREST-BIN] --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --cmd-ssh=/usr/bin/ssh --command=restore --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --stanza=db --type=backup local
|
||||
P00 DEBUG: Protocol::Command::Master->new(): iBufferMax = 4194304, iCompressLevel = 3, iCompressLevelNetwork = 1, iProtocolTimeout = 60, strCommand = [BACKREST-BIN] --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --cmd-ssh=/usr/bin/ssh --command=restore --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --host-id=1 --lock-path=[TEST_PATH]/db-master/lock --log-path=[TEST_PATH]/db-master/log --process=1 --protocol-timeout=60 --stanza=db --type=backup local, strId = local-1 process, strName = local
|
||||
@@ -1632,7 +1727,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -1640,8 +1735,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1675,7 +1775,13 @@ P00 DEBUG: Backup::Info->list=>: stryBackup = ([BACKUP-FULL-2])
|
||||
P00 DEBUG: Backup::Info->last=>: strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->dbHistoryList=>: hDbHash = [hash]
|
||||
P00 DEBUG: Backup::Info->confirmDb=>: bConfirmDb = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1689,6 +1795,7 @@ P00 DEBUG: Storage::Local->list(): bIgnoreMissing = <false>, strExpression
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = [BACKUP-EXPR](D|I)\.manifest\.gz$, strPathExp = <REPO:BACKUP>/backup.history/[YEAR-1], strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
@@ -1702,7 +1809,7 @@ P00 DEBUG: Backup::Backup->process: create backup path [TEST_PATH]/backup/r
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = <false>, bIgnoreExists = <false>, strMode = <0750>, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-INCR-1], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = incr
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
@@ -1715,8 +1822,8 @@ P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/17
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/global/pg_control to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/1/12000 to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/postgresql.conf to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, [undef], 0, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, [undef], 1, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, [undef], 0, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, [undef], 1, [BACKUP-INCR-1], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2]
|
||||
@@ -1745,27 +1852,32 @@ P00 DEBUG: Protocol::Helper::protocolDestroy: found cached protocol: iRemot
|
||||
P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]
|
||||
P00 INFO: new backup label = [BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-INCR-1]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-1].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-INCR-1]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -1960,7 +2072,7 @@ P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --compress-le
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/backup/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
@@ -1968,8 +2080,13 @@ P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExist
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = <0750>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -2011,7 +2128,13 @@ P00 DEBUG: Backup::Info->list=>: stryBackup = ([BACKUP-FULL-2])
|
||||
P00 DEBUG: Backup::Info->last=>: strBackup = [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Info->dbHistoryList=>: hDbHash = [hash]
|
||||
P00 DEBUG: Backup::Info->confirmDb=>: bConfirmDb = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-FULL-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 INFO: last backup label = [BACKUP-FULL-2], version = [VERSION-1]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -2021,8 +2144,20 @@ P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-INC
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = true
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Manifest->new(): bLoad = <true>, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = [undef], strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Manifest->new(): bLoad = false, oStorage = <[object]>, strCipherPass = [undef], strCipherPassSub = [undef], strDbVersion = 9.4, strFileName = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists(): strPathExp = [TEST_PATH]/db-master/db/base/postmaster.pid
|
||||
P00 DEBUG: Protocol::Storage::Remote->exists=>: bExists = false
|
||||
P00 WARN: incr backup cannot alter 'checksum-page' option to 'false', reset to 'true' from [BACKUP-FULL-2]
|
||||
@@ -2045,7 +2180,7 @@ P00 DETAIL: clean resumed backup path: [TEST_PATH]/backup/repo/backup/db/[BACKUP
|
||||
P00 DEBUG: Storage::Local->manifest(): strPathExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->exists(): strFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->exists=>: bExists = false
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Backup::Backup->processManifest(): bCompress = false, bHardLink = false, oBackupManifest = [object], strBackupLabel = [BACKUP-INCR-2], strDbCopyPath = [TEST_PATH]/db-master/db/base, strDbMasterPath = [TEST_PATH]/db-master/db/base, strDbVersion = 9.4, strLsnStart = [undef], strType = incr
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = <backup>, strRemoteType = db
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
@@ -2058,9 +2193,9 @@ P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/17
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/global/pg_control to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/1/12000 to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/postgresql.conf to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, bogus, 0, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, 7, [undef], 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, strOp = backupFile, strQueue = pg_tblspc/2
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, d85de07d6421d90aa9191c11c889bfde43680f0f, 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/badchecksum.txt, pg_data/badchecksum.txt, 11, bogus, 0, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, [undef]), rParamSecure = [undef], strKey = pg_data/badchecksum.txt, strOp = backupFile, strQueue = pg_data
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, 7, [undef], 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt, strOp = backupFile, strQueue = pg_tblspc/2
|
||||
P00 DEBUG: Protocol::Local::Process->queueJob(): iHostConfigIdx = 1, rParam = ([TEST_PATH]/db-master/db/base/pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, 7, d85de07d6421d90aa9191c11c889bfde43680f0f, 1, [BACKUP-INCR-2], 0, 3, [MODIFICATION-TIME-1], 1, {iWalId => 65535, iWalOffset => 65535}), rParamSecure = [undef], strKey = pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt, strOp = backupFile, strQueue = pg_tblspc/1
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/pg_stat/global.stat to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/32768/PG_VERSION to [BACKUP-FULL-2]
|
||||
P00 DEBUG: Backup::Backup->processManifest: reference pg_data/base/16384/PG_VERSION to [BACKUP-FULL-2]
|
||||
@@ -2093,27 +2228,32 @@ P00 DEBUG: Protocol::Helper::protocolDestroy: found cached protocol: iRemot
|
||||
P00 DEBUG: Protocol::Command::Master->close=>: iExitStatus = 0
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = true, strPathExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]
|
||||
P00 INFO: new backup label = [BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]/backup.manifest
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = ({strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:BACKUP>/backup.history/[YEAR-1]/[BACKUP-INCR-2].manifest.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>/backup.history
|
||||
P00 DEBUG: Storage::Local->remove(): bIgnoreMissing = <true>, bRecurse = <false>, xstryPathFileExp = <REPO:BACKUP>/latest
|
||||
P00 DEBUG: Storage::Local->remove=>: bRemoved = true
|
||||
P00 DEBUG: Storage::Local->linkCreate(): bHard = <false>, bIgnoreExists = <false>, bPathCreate = <true>, bRelative = true, strDestinationLinkExp = <REPO:BACKUP>/latest, strSourcePathFileExp = <REPO:BACKUP>/[BACKUP-INCR-2]
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info.copy
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->pathSync(): bRecurse = <false>, strPathExp = <REPO:BACKUP>
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Backup::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, bValidate = <true>, oStorage = <[object]>, strBackupClusterPath = [TEST_PATH]/backup/repo/backup/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Backup::Info->reconstruct(): bRequired = <true>, bSave = <true>, iCatalogVersion = [undef], iControlVersion = [undef], strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet(): bAnchor = <true>, bDifferential = true, bFull = true, bIncremental = true
|
||||
P00 DEBUG: Backup::Common::backupRegExpGet=>: strRegExp = ^[0-9]{8}\-[0-9]{6}F(\_[0-9]{8}\-[0-9]{6}(D|I)){0,1}$
|
||||
@@ -4600,7 +4740,7 @@ stanza: db
|
||||
backup reference list: [BACKUP-FULL-3]
|
||||
|
||||
stanza: db_empty
|
||||
status: error (no valid backups)
|
||||
status: error (missing stanza data)
|
||||
|
||||
info all stanzas - normal output (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --output=json info
|
||||
@@ -4698,8 +4838,8 @@ info all stanzas - normal output (db-master host)
|
||||
"db" : [],
|
||||
"name" : "db_empty",
|
||||
"status" : {
|
||||
"code" : 2,
|
||||
"message" : "no valid backups"
|
||||
"code" : 3,
|
||||
"message" : "missing stanza data"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
+311
-203
@@ -1,5 +1,5 @@
|
||||
run 003 - rmt 1, s3 1
|
||||
=====================
|
||||
run 003 - rmt 1, s3 1, enc 1
|
||||
============================
|
||||
|
||||
info all stanzas - no stanzas exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn info
|
||||
@@ -14,7 +14,7 @@ info all stanzas - no stanzas exist (db-master host)
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
@@ -24,6 +24,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -41,6 +44,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
@@ -115,6 +121,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -163,19 +171,22 @@ pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"}
|
||||
pg_data/pg_stat={"path":"../pg_stat","type":"link"}
|
||||
pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -217,6 +228,9 @@ backrest-version="[VERSION-1]"
|
||||
[backup:current]
|
||||
[BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -281,6 +295,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -329,19 +345,22 @@ pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"}
|
||||
pg_data/pg_stat={"path":"../pg_stat","type":"link"}
|
||||
pg_data/postgresql.conf={"file":"postgresql.conf","path":"../pg_config","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -383,6 +402,9 @@ backrest-version="[VERSION-1]"
|
||||
[backup:current]
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -546,6 +568,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -594,21 +618,24 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"}
|
||||
pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -654,6 +681,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -720,6 +750,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -770,22 +802,25 @@ pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1
|
||||
pg_tblspc/11={"path":"[TEST_PATH]/db-master/db/tablespace/ts11","tablespace-id":"11","tablespace-name":"ts11","type":"link"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -838,6 +873,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -904,6 +942,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -953,22 +993,25 @@ pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"}
|
||||
pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1018,6 +1061,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -1084,6 +1130,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -1133,22 +1181,25 @@ pg_data={"path":"[TEST_PATH]/db-master/db/base","type":"path"}
|
||||
pg_tblspc/1={"path":"[TEST_PATH]/db-master/db/tablespace/ts1","tablespace-id":"1","tablespace-name":"ts1","type":"link"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/1/[TS_PATH-1]/16384/tablespace1.txt={"checksum":"d85de07d6421d90aa9191c11c889bfde43680f0f","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1198,6 +1249,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -1286,6 +1340,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -1334,23 +1390,26 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"e0101dd8ffb910c9c202ca35b5f828bcb9697bed","checksum-page":false,"checksum-page-error":[1],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1397,6 +1456,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-2]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -1410,30 +1472,9 @@ db-version="9.4"
|
||||
stanza-create db - create required data for stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2 --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup:current]
|
||||
[BACKUP-FULL-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-2]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-2]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2 --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 ERROR: [055]: backup information missing and repo is encrypted and info file(s) are missing, --force cannot be used
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: /archive/db/archive.info
|
||||
---------------------------------------------
|
||||
@@ -1442,6 +1483,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
@@ -1506,6 +1550,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -1554,23 +1600,26 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"reference":"[BACKUP-INCR-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-INCR-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"reference":"[BACKUP-INCR-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-INCR-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1618,6 +1667,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-INCR-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-2]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-2]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -1687,6 +1739,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -1735,23 +1789,26 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1800,6 +1857,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-INCR-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-INCR-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-2]","[BACKUP-INCR-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -1867,6 +1927,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -1915,23 +1977,26 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"reference":"[BACKUP-DIFF-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"reference":"[BACKUP-DIFF-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-DIFF-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-DIFF-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"9a53d532e27785e681766c98516a5e93f096a501","checksum-page":false,"reference":"[BACKUP-DIFF-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"09b5e31766be1dba1ec27de82f975c1b6eea2a92","checksum-page":false,"reference":"[BACKUP-DIFF-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"reference":"[BACKUP-DIFF-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2b.txt={"checksum":"e324463005236d83e6e54795dbddd20a74533bf3","checksum-page":false,"reference":"[BACKUP-DIFF-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -1981,6 +2046,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-DIFF-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-INCR-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -2050,6 +2118,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -2098,21 +2168,24 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-3]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","checksum-page":false,"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","checksum-page":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","checksum-page":false,"checksum-page-error":[0,[3,5],7],"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-2]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","checksum-page":false,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
@@ -2163,6 +2236,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-INCR-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-DIFF-3]","backup-reference":["[BACKUP-FULL-2]","[BACKUP-DIFF-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"incr","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -2227,6 +2303,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -2274,6 +2352,9 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-4]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
@@ -2341,6 +2422,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-DIFF-4]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-2]","backup-reference":["[BACKUP-FULL-2]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":true,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -2364,55 +2448,55 @@ stanza: db
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 160KB, backup size: 160KB
|
||||
repository size: 160KB, repository backup size: 160KB
|
||||
repository size: 160.3KB, repository backup size: 160.3KB
|
||||
|
||||
diff backup: [BACKUP-DIFF-2]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 160KB, backup size: 25B
|
||||
repository size: 160KB, repository backup size: 25B
|
||||
repository size: 160.4KB, repository backup size: 96B
|
||||
backup reference list: [BACKUP-FULL-2]
|
||||
|
||||
incr backup: [BACKUP-INCR-3]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 160KB, backup size: 13B
|
||||
repository size: 160KB, repository backup size: 13B
|
||||
repository size: 160.5KB, repository backup size: 64B
|
||||
backup reference list: [BACKUP-FULL-2], [BACKUP-DIFF-2]
|
||||
|
||||
incr backup: [BACKUP-INCR-4]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 8B
|
||||
repository size: 144KB, repository backup size: 8B
|
||||
repository size: 144.5KB, repository backup size: 32B
|
||||
backup reference list: [BACKUP-FULL-2], [BACKUP-DIFF-2], [BACKUP-INCR-3]
|
||||
|
||||
diff backup: [BACKUP-DIFF-3]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 39B
|
||||
repository size: 144KB, repository backup size: 39B
|
||||
repository size: 144.5KB, repository backup size: 160B
|
||||
backup reference list: [BACKUP-FULL-2]
|
||||
|
||||
incr backup: [BACKUP-INCR-5]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 0B
|
||||
repository size: 144KB, repository backup size: 0B
|
||||
repository size: 144.5KB, repository backup size: 0B
|
||||
backup reference list: [BACKUP-FULL-2], [BACKUP-DIFF-3]
|
||||
|
||||
diff backup: [BACKUP-DIFF-4]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 30B
|
||||
repository size: 144KB, repository backup size: 30B
|
||||
repository size: 144.4KB, repository backup size: 96B
|
||||
backup reference list: [BACKUP-FULL-2]
|
||||
|
||||
full backup: [BACKUP-FULL-3]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 144KB
|
||||
repository size: 1.9KB, repository backup size: 1.9KB
|
||||
repository size: 2.3KB, repository backup size: 2.3KB
|
||||
|
||||
info db stanza - normal output (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --log-level-console=warn --stanza=db --output=json info
|
||||
@@ -2697,7 +2781,7 @@ info db stanza - normal output (backup host)
|
||||
expire full=1 (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --log-level-console=detail --retention-full=1 --stanza=db expire
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --retention-full=1 --stanza=db
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --retention-full=1 --stanza=db
|
||||
P00 INFO: expire full backup set: [BACKUP-FULL-2], [BACKUP-DIFF-2], [BACKUP-INCR-3], [BACKUP-INCR-4], [BACKUP-DIFF-3], [BACKUP-INCR-5], [BACKUP-DIFF-4]
|
||||
P00 INFO: remove expired backup [BACKUP-DIFF-4]
|
||||
P00 INFO: remove expired backup [BACKUP-DIFF-3]
|
||||
@@ -2761,6 +2845,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -2809,6 +2895,9 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2","type":"path"}
|
||||
pg_tblspc/2={"path":"[TEST_PATH]/db-master/db/tablespace/ts2-2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-4]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
@@ -2871,6 +2960,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -2933,13 +3025,13 @@ stanza: db
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 144KB
|
||||
repository size: 1.9KB, repository backup size: 1.9KB
|
||||
repository size: 2.3KB, repository backup size: 2.3KB
|
||||
|
||||
diff backup: [BACKUP-DIFF-5]
|
||||
timestamp start/stop: [TIMESTAMP-STR]
|
||||
wal start/stop: n/a
|
||||
database size: 144KB, backup size: 9B
|
||||
repository size: 2KB, repository backup size: 29B
|
||||
repository size: 2.3KB, repository backup size: 48B
|
||||
backup reference list: [BACKUP-FULL-3]
|
||||
|
||||
info all stanzas - normal output (db-master host)
|
||||
@@ -3058,7 +3150,7 @@ info bogus stanza - bogus stanza (db-master host)
|
||||
diff backup - config file not validated on remote (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=info --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --process-max=2 --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --process-max=2 --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
@@ -3066,7 +3158,7 @@ P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base-2/base/base/base
|
||||
P00 INFO: diff backup size = 9B
|
||||
P00 INFO: new backup label = [BACKUP-DIFF-6]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: option 'retention-archive' is not set - archive logs will not be expired
|
||||
P00 INFO: expire command end: completed successfully
|
||||
|
||||
@@ -3117,6 +3209,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -3165,6 +3259,9 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"}
|
||||
pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-4]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
@@ -3228,6 +3325,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -3241,7 +3341,7 @@ db-version="9.4"
|
||||
diff backup - option backup-standby reset - backup performed from master (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=info --backup-standby --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --process-max=2 --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --compress --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base-2/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --process-max=2 --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but standby is not properly configured - backups will be performed from the master
|
||||
@@ -3250,7 +3350,7 @@ P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base-2/base/base/base
|
||||
P00 INFO: diff backup size = 9B
|
||||
P00 INFO: new backup label = [BACKUP-DIFF-7]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=info --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: option 'retention-archive' is not set - archive logs will not be expired
|
||||
P00 INFO: expire command end: completed successfully
|
||||
|
||||
@@ -3300,6 +3400,8 @@ log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
process-max=2
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=/
|
||||
repo-s3-bucket=pgbackrest-dev
|
||||
repo-s3-endpoint=s3.amazonaws.com
|
||||
@@ -3348,6 +3450,9 @@ option-online=false
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"}
|
||||
pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-4]
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","repo-size":[SIZE],"size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
@@ -3412,6 +3517,9 @@ backrest-version="[VERSION-1]"
|
||||
[BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
run 001 - rmt 0, s3 0
|
||||
=====================
|
||||
run 001 - rmt 0, s3 0, enc 1
|
||||
============================
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [055]: unable to open [TEST_PATH]/db-master/repo/archive/db/archive.info or [TEST_PATH]/db-master/repo/archive/db/archive.info.copy
|
||||
P00 ERROR: [055]: archive.info does not exist but is required to push/get WAL segments
|
||||
HINT: is archive_command configured in postgresql.conf?
|
||||
@@ -13,7 +13,7 @@ P00 INFO: archive-push command end: aborted with exception [055]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000001
|
||||
P00 ERROR: [055]: unable to open [TEST_PATH]/db-master/repo/archive/db/archive.info or [TEST_PATH]/db-master/repo/archive/db/archive.info.copy
|
||||
P00 ERROR: [055]: archive.info does not exist but is required to push/get WAL segments
|
||||
@@ -25,7 +25,7 @@ P00 INFO: archive-get command end: aborted with exception [055]
|
||||
stanza-create db - stanza create (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
@@ -35,6 +35,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -52,6 +55,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
@@ -62,16 +68,21 @@ db-version="9.4"
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --log-level-console=debug [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = false, iCompressLevel = 3, strWalFile = 000000010000000100000001, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = <redacted>, strCipherType = aes-256-cbc, strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Archive::Common::walInfo(): strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Common::walInfo=>: strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck(): strArchiveFile = 000000010000000100000001, strDbVersion = 9.4, strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = true
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = true
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = <redacted>, xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Archive::Info->check(): bRequired = <true>, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Archive::Info->archiveId(): strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Archive::Info->archiveId=>: strArchiveId = 9.4-1
|
||||
@@ -80,14 +91,14 @@ P00 DEBUG: Archive::Common::walSegmentFind(): iWaitSeconds = [undef], oStor
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^000000010000000100000001-[0-f]{40}(\.gz){0,1}$, strPathExp = <REPO:ARCHIVE>/9.4-1/0000000100000001, strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Archive::Common::walSegmentFind=>: strWalFileName = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.4-1, strChecksum = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.4-1, strChecksum = [undef], strCipherPass = <redacted>, strWarning = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->hashSize(): xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->hashSize=>: lSize = 16777216, strHash = 72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = <redacted>, strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile=>: strWarning = [undef]
|
||||
P00 INFO: pushed WAL segment 000000010000000100000001
|
||||
@@ -100,19 +111,24 @@ P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get --log-level-console=debug 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000001
|
||||
P00 DEBUG: Archive::Get::Get->get(): strDestinationFile = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG, strSourceArchive = 000000010000000100000001
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = <redacted>, strCipherType = aes-256-cbc, strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Archive::Base->getCheck(): strDbVersion = [undef], strWalFile = 000000010000000100000001, ullDbSysId = [undef]
|
||||
P00 DEBUG: Db::dbObjectGet(): bMasterOnly = true
|
||||
P00 DEBUG: Db->new(): iRemoteIdx = 1
|
||||
P00 DEBUG: Db::dbObjectGet=>: iDbMasterIdx = 1, iDbStandbyIdx = [undef], oDbMaster = [object], oDbStandby = [undef]
|
||||
P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = true, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = true, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = true
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = true
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = <redacted>, xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Archive::Info->check(): bRequired = <true>, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Archive::Info->archiveId(): strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Archive::Info->archiveId=>: strArchiveId = 9.4-1
|
||||
@@ -121,11 +137,11 @@ P00 DEBUG: Archive::Common::walSegmentFind(): iWaitSeconds = [undef], oStor
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^000000010000000100000001-[0-f]{40}(\.gz){0,1}$, strPathExp = <REPO:ARCHIVE>/9.4-1/0000000100000001, strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = (000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7)
|
||||
P00 DEBUG: Archive::Common::walSegmentFind=>: strWalFileName = 000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Archive::Base->getCheck=>: strArchiveFile = 000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7, strArchiveId = 9.4-1
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Archive::Base->getCheck=>: strArchiveFile = 000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7, strArchiveId = 9.4-1, strCipherPass = <redacted>
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = <redacted>, xFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Get::Get->get=>: iResult = 0
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 0, oException = [undef], strSignal = [undef]
|
||||
@@ -137,20 +153,20 @@ P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push --compress --archive-async --process-max=2 [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --archive-async --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --process-max=2 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --archive-async --compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --process-max=2 --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --spool-path=[TEST_PATH]/db-master/spool --stanza=db
|
||||
P00 INFO: pushed WAL segment 000000010000000100000002 asynchronously
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [044]: WAL segment version 9.4 does not match archive version 8.0
|
||||
HINT: are you archiving to the correct stanza?
|
||||
P00 INFO: archive-push command end: aborted with exception [044]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000001
|
||||
P00 ERROR: [044]: WAL segment version 9.4 does not match archive version 8.0
|
||||
HINT: are you archiving to the correct stanza?
|
||||
@@ -158,14 +174,14 @@ P00 INFO: archive-get command end: aborted with exception [044]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [044]: WAL segment system-id 6353949018581704918 does not match archive system-id 5000900090001855000
|
||||
HINT: are you archiving to the correct stanza?
|
||||
P00 INFO: archive-push command end: aborted with exception [044]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000001
|
||||
P00 ERROR: [044]: WAL segment system-id 6353949018581704918 does not match archive system-id 5000900090001855000
|
||||
HINT: are you archiving to the correct stanza?
|
||||
@@ -174,18 +190,18 @@ P00 INFO: archive-get command end: aborted with exception [044]
|
||||
stop db stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db stop
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stop command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stop command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
P00 INFO: archive-push command end: aborted with exception [062]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000001 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000001
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
P00 INFO: archive-get command end: aborted with exception [062]
|
||||
@@ -193,12 +209,12 @@ P00 INFO: archive-get command end: aborted with exception [062]
|
||||
start db stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db start
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: start command begin [BACKREST-VERSION]: --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: start command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: WAL segment 000000010000000100000002 already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL segment 000000010000000100000002
|
||||
@@ -206,25 +222,25 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [045]: WAL segment 000000010000000100000002 already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-get 000000010000000100000002 [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000002
|
||||
P00 INFO: archive-get command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: pushed WAL segment 000000010000000100000002.partial
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: WAL segment 000000010000000100000002.partial already exists in the archive with the same checksum
|
||||
HINT: this is valid in some recovery scenarios but may also indicate a problem.
|
||||
P00 INFO: pushed WAL segment 000000010000000100000002.partial
|
||||
@@ -232,6 +248,6 @@ P00 INFO: archive-push command end: completed successfully
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002.partial
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --no-compress --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [045]: WAL segment 000000010000000100000002.partial already exists in the archive
|
||||
P00 INFO: archive-push command end: aborted with exception [045]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 002 - rmt 1, s3 0
|
||||
=====================
|
||||
run 002 - rmt 1, s3 0, enc 0
|
||||
============================
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -73,13 +73,13 @@ P00 DEBUG: Archive::Common::walInfo=>: strDbVersion = 9.4, ullDbSysId = 635
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck(): strArchiveFile = 000000010000000100000001, strDbVersion = 9.4, strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-push>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.4-1, strChecksum = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.4-1, strChecksum = [undef], strCipherPass = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->hashSize(): xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->hashSize=>: lSize = 16777216, strHash = 72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Protocol::Storage::Remote->openWrite(): rhParam = [hash], strFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile=>: strWarning = [undef]
|
||||
@@ -111,11 +111,11 @@ P00 DEBUG: Db->info(): strDbPath = <[TEST_PATH]/db-master/db/base>
|
||||
P00 DEBUG: Db->info=>: iDbCatalogVersion = 201409291, iDbControlVersion = 942, strDbVersion = 9.4, ullDbSysId = 6353949018581704918
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-get>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
P00 DEBUG: Archive::Base->getCheck=>: strArchiveFile = 000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7, strArchiveId = 9.4-1
|
||||
P00 DEBUG: Archive::Base->getCheck=>: strArchiveFile = 000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7, strArchiveId = 9.4-1, strCipherPass = [undef]
|
||||
P00 DEBUG: Protocol::Storage::Remote->openRead(): rhParam = [hash], strFileExp = <REPO:ARCHIVE>/9.4-1/000000010000000100000001-72b9da071c13957fb4ca31f05dbd5c644297c2f7
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = <false>, bPathCreate = <false>, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Get::Get->get=>: iResult = 0
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 0, oException = [undef], strSignal = [undef]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 003 - rmt 1, s3 1
|
||||
=====================
|
||||
run 003 - rmt 1, s3 1, enc 0
|
||||
============================
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
+64
-135
@@ -1,5 +1,5 @@
|
||||
run 001 - remote 0, s3 0
|
||||
========================
|
||||
run 001 - remote 0, s3 0, enc 0
|
||||
===============================
|
||||
|
||||
stanza-create db - fail on missing control file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
@@ -16,6 +16,7 @@ P00 ERROR: [055]: archive.info does not exist but is required to push/get WAL s
|
||||
HINT: is archive_command configured in postgresql.conf?
|
||||
HINT: has a stanza-create been performed?
|
||||
HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.
|
||||
HINT: has a stanza-create been performed?
|
||||
P00 INFO: stanza-upgrade command end: aborted with exception [055]
|
||||
|
||||
stanza-create db - successfully create the stanza (db-master host)
|
||||
@@ -56,11 +57,53 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - successful rerun of stanza-create (db-master host)
|
||||
stanza-create db - fail on rerun of stanza-create - info files exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
P00 ERROR: [040]: backup directory and/or archive directory not empty
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [040]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
-----------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [028]: backup info file or archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
@@ -139,12 +182,17 @@ P00 INFO: archive-push command begin [BACKREST-VERSION]: --compress-level=3 --
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000001, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Archive::Common::walInfo(): strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Common::walInfo=>: strDbVersion = 9.3, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck(): strArchiveFile = 000000010000000100000001, strDbVersion = 9.3, strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = [TEST_PATH]/db-master/repo/archive/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Archive::Info->check(): bRequired = <true>, strDbVersion = 9.3, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Info->archiveId(): strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Archive::Info->archiveId=>: strArchiveId = 9.3-1
|
||||
@@ -153,14 +201,14 @@ P00 DEBUG: Archive::Common::walSegmentFind(): iWaitSeconds = [undef], oStor
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^000000010000000100000001-[0-f]{40}(\.gz){0,1}$, strPathExp = <REPO:ARCHIVE>/9.3-1/0000000100000001, strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Archive::Common::walSegmentFind=>: strWalFileName = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strCipherPass = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->hashSize(): xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->hashSize=>: lSize = 16777216, strHash = f5035e2c3b83a9c32660f959b23451e78f7438f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.3-1/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.3-1/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile=>: strWarning = [undef]
|
||||
P00 INFO: pushed WAL segment 000000010000000100000001
|
||||
@@ -200,7 +248,6 @@ stanza-create db - gunzip fail on forced stanza-create (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [041]: unable to open '[TEST_PATH]/db-master/repo/archive/db/9.3-1/0000000100000001/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz': Permission denied
|
||||
P00 INFO: stanza-create command end: aborted with exception [041]
|
||||
|
||||
@@ -259,131 +306,13 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - repeat create (db-master host)
|
||||
stanza-create db - repeat create - error that files exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
-----------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - hash check fails requiring force (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
-----------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="8.0"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - use force to overwrite the invalid file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/archive/db/archive.info
|
||||
-----------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
P00 ERROR: [040]: backup directory and/or archive directory not empty
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [040]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+148
-429
@@ -1,27 +1,28 @@
|
||||
run 002 - remote 1, s3 0
|
||||
========================
|
||||
run 002 - remote 1, s3 0, enc 1
|
||||
===============================
|
||||
|
||||
stanza-create db - fail on missing control file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [041]: raised from remote process on 'db-master': unable to open [TEST_PATH]/db-master/db/base/global/pg_control
|
||||
P00 INFO: stanza-create command end: aborted with exception [041]
|
||||
|
||||
stanza-upgrade db - fail on stanza not initialized since archive.info is missing (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-upgrade
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: archive.info does not exist but is required to push/get WAL segments
|
||||
HINT: is archive_command configured in postgresql.conf?
|
||||
HINT: has a stanza-create been performed?
|
||||
HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.
|
||||
HINT: has a stanza-create been performed?
|
||||
P00 INFO: stanza-upgrade command end: aborted with exception [055]
|
||||
|
||||
stanza-create db - successfully create the stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
@@ -31,6 +32,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -48,6 +52,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
@@ -56,11 +63,13 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - successful rerun of stanza-create (backup host)
|
||||
stanza-create db - fail on rerun of stanza-create - info files exist (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [040]: backup directory and/or archive directory not empty
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [040]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
@@ -69,6 +78,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -86,6 +98,55 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [028]: backup info file or archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
@@ -97,7 +158,7 @@ db-version="9.3"
|
||||
stanza-upgrade db - already up to date (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-upgrade
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: the stanza data is already up to date
|
||||
P00 INFO: stanza-upgrade command end: completed successfully
|
||||
|
||||
@@ -108,6 +169,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -125,6 +189,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
@@ -148,13 +215,13 @@ P00 DEBUG: Archive::Common::walInfo=>: strDbVersion = 9.3, ullDbSysId = 639
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck(): strArchiveFile = 000000010000000100000001, strDbVersion = 9.3, strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-push>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: found cached protocol
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strCipherPass = <redacted>, strWarning = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->hashSize(): xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->hashSize=>: lSize = 16777216, strHash = f5035e2c3b83a9c32660f959b23451e78f7438f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Protocol::Storage::Remote->openWrite(): rhParam = [hash], strFileExp = <REPO:ARCHIVE>/9.3-1/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile=>: strWarning = [undef]
|
||||
@@ -168,36 +235,10 @@ P00 DEBUG: Common::Lock::lockRelease(): bFailOnNoLock = false
|
||||
P00 INFO: archive-push command end: completed successfully
|
||||
P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
stanza-create db - fail on archive info file missing from non-empty dir (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: archive information missing
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - gunzip fail on forced stanza-create (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [041]: unable to open '[TEST_PATH]/backup/repo/archive/db/9.3-1/0000000100000001/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz': Permission denied
|
||||
P00 INFO: stanza-create command end: aborted with exception [041]
|
||||
|
||||
@@ -208,6 +249,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -221,8 +265,9 @@ db-version="9.3"
|
||||
stanza-create db - force create archive.info from gz file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: archive information missing and repo is encrypted and info file(s) are missing, --force cannot be used
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
@@ -231,6 +276,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -241,26 +289,12 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - repeat create (backup host)
|
||||
stanza-create db - repeat create - error that files exist (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: archive information missing and repo is encrypted and info file(s) are missing, --force cannot be used
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
@@ -269,6 +303,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
@@ -279,256 +316,6 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - hash check fails requiring force (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="8.0"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - use force to overwrite the invalid file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - force create archive.info from uncompressed file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - force with missing WAL archive file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - force with missing WAL archive directory (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: found empty directory [TEST_PATH]/backup/repo/archive/db/9.3-1
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 ERROR: [044]: raised from remote process on 'backup': WAL segment version 9.4 does not match archive version 9.3
|
||||
@@ -538,7 +325,7 @@ P00 ERROR: [044]: raised from remote process on 'backup': WAL segment version 9
|
||||
stanza-upgrade db - successful upgrade creates additional history (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-upgrade
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
@@ -548,6 +335,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
@@ -566,6 +356,9 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
@@ -578,96 +371,17 @@ db-version="9.4"
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --log-level-console=warn --archive-queue-max=33554432 --stanza=db archive-push [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - use force to recreate the stanza producing mismatched info history but same current db-id (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: found empty directory [TEST_PATH]/backup/repo/archive/db/9.3-1
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
2={"db-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
stanza-create db - use force to recreate the stanza producing mismatched db-id (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 WARN: found empty directory [TEST_PATH]/backup/repo/archive/db/9.3-1
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
2={"db-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
full backup - create first full backup (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --retention-full=2 --no-online --log-level-console=detail --type=full --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --retention-full=2 --stanza=db --start-fast --type=full
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --retention-full=2 --stanza=db --start-fast --type=full
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum 1e34fa1c833090d94b9bb14f2a8d3153dca6ea27
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum 89373d9f2973502940de06bc5212489df3f8a912
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_status/000000010000000100000001.ready (0B, 100%)
|
||||
P00 INFO: full backup size = 16MB
|
||||
P00 INFO: new backup label = [BACKUP-FULL-1]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --retention-archive=2 --retention-full=2 --stanza=db
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --retention-archive=2 --retention-full=2 --stanza=db
|
||||
P00 INFO: remove archive path: [TEST_PATH]/backup/repo/archive/db/9.3-1
|
||||
P00 INFO: full backup total < 2 - using oldest full backup for 9.4-2 archive retention
|
||||
P00 INFO: expire command end: completed successfully
|
||||
@@ -712,6 +426,8 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
@@ -721,9 +437,8 @@ start-fast=y
|
||||
stanza-create db - fail no force to recreate the stanza from backups (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: backup information missing
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: backup information missing and repo is encrypted and info file(s) are missing, --force cannot be used
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
@@ -733,39 +448,24 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
2={"db-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
stanza-create db - use force to recreate the stanza from backups (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup:current]
|
||||
[BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --force --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: backup information missing and repo is encrypted and info file(s) are missing, --force cannot be used
|
||||
P00 INFO: stanza-create command end: aborted with exception [055]
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
@@ -774,18 +474,22 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=2
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
2={"db-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
stanza-upgrade db - successfully upgrade with XX.Y-Z (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-upgrade
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-upgrade command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
@@ -796,18 +500,22 @@ backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup:current]
|
||||
[BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-FULL-1]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":2,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":true,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-1]
|
||||
|
||||
[db]
|
||||
db-catalog-version=201510051
|
||||
db-control-version=942
|
||||
db-id=2
|
||||
db-id=3
|
||||
db-system-id=6392579261579036436
|
||||
db-version="9.5"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
2={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":6392579261579036436,"db-version":"9.5"}
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
2={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
3={"db-catalog-version":201510051,"db-control-version":942,"db-system-id":6392579261579036436,"db-version":"9.5"}
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/archive/db/archive.info
|
||||
--------------------------------------------------------------------
|
||||
@@ -816,12 +524,16 @@ backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[cipher]
|
||||
cipher-pass=[CIPHER-PASS-2]
|
||||
|
||||
[db]
|
||||
db-id=4
|
||||
db-system-id=6392579261579036436
|
||||
db-version="9.5"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
2={"db-id":6353949018581704918,"db-version":"9.4"}
|
||||
3={"db-id":35184388866048,"db-version":"10.0"}
|
||||
4={"db-id":6392579261579036436,"db-version":"9.5"}
|
||||
@@ -832,7 +544,7 @@ db-version="9.5"
|
||||
diff backup - diff changed to full backup (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --retention-full=2 --no-online --log-level-console=detail --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-path=[TEST_PATH]/backup/repo --retention-full=2 --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --compress-level=3 --compress-level-network=1 --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --db1-user=[USER-1] --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --no-online --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --retention-full=2 --stanza=db --start-fast --type=diff
|
||||
P00 WARN: no prior backup exists, diff backup has been changed to full
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001 (16MB, 99%) checksum 15b1a1a35c26b17570aca7920980f0ad11c6d858
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/global/pg_control (8KB, 100%) checksum e28bf39d0a56bf9fabd4049b329fcae8878bfec6
|
||||
@@ -840,7 +552,7 @@ P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base/pg_xlog/archive_
|
||||
P00 INFO: full backup size = 16MB
|
||||
P00 INFO: new backup label = [BACKUP-FULL-2]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-path=[TEST_PATH]/backup/repo --retention-archive=2 --retention-full=2 --stanza=db
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --config=[TEST_PATH]/backup/pgbackrest.conf --db1-cmd=[BACKREST-BIN] --db1-config=[TEST_PATH]/db-master/pgbackrest.conf --db1-host=db-master --lock-path=[TEST_PATH]/backup/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/log --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --retention-archive=2 --retention-full=2 --stanza=db
|
||||
P00 INFO: remove archive path: [TEST_PATH]/backup/repo/archive/db/10.0-3
|
||||
P00 INFO: expire command end: completed successfully
|
||||
|
||||
@@ -884,6 +596,8 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
@@ -898,7 +612,7 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
"archive" : [
|
||||
{
|
||||
"database" : {
|
||||
"id" : 1
|
||||
"id" : 2
|
||||
},
|
||||
"id" : "9.4-2",
|
||||
"max" : "000000010000000100000001",
|
||||
@@ -906,7 +620,7 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
},
|
||||
{
|
||||
"database" : {
|
||||
"id" : 2
|
||||
"id" : 3
|
||||
},
|
||||
"id" : "9.5-4",
|
||||
"max" : "000000010000000100000001",
|
||||
@@ -924,7 +638,7 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
"version" : "[VERSION-1]"
|
||||
},
|
||||
"database" : {
|
||||
"id" : 1
|
||||
"id" : 2
|
||||
},
|
||||
"info" : {
|
||||
"delta" : [DELTA],
|
||||
@@ -953,7 +667,7 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
"version" : "[VERSION-1]"
|
||||
},
|
||||
"database" : {
|
||||
"id" : 2
|
||||
"id" : 3
|
||||
},
|
||||
"info" : {
|
||||
"delta" : [DELTA],
|
||||
@@ -976,11 +690,16 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
"db" : [
|
||||
{
|
||||
"id" : 1,
|
||||
"system-id" : 6395542721432104958,
|
||||
"version" : "9.3"
|
||||
},
|
||||
{
|
||||
"id" : 2,
|
||||
"system-id" : 6353949018581704918,
|
||||
"version" : "9.4"
|
||||
},
|
||||
{
|
||||
"id" : 2,
|
||||
"id" : 3,
|
||||
"system-id" : 6392579261579036436,
|
||||
"version" : "9.5"
|
||||
}
|
||||
|
||||
+64
-134
@@ -1,5 +1,5 @@
|
||||
run 003 - remote 0, s3 1
|
||||
========================
|
||||
run 003 - remote 0, s3 1, enc 0
|
||||
===============================
|
||||
|
||||
stanza-create db - fail on missing control file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
@@ -16,6 +16,7 @@ P00 ERROR: [055]: archive.info does not exist but is required to push/get WAL s
|
||||
HINT: is archive_command configured in postgresql.conf?
|
||||
HINT: has a stanza-create been performed?
|
||||
HINT: use --no-archive-check to disable archive checks during backup if you have an alternate archiving scheme.
|
||||
HINT: has a stanza-create been performed?
|
||||
P00 INFO: stanza-upgrade command end: aborted with exception [055]
|
||||
|
||||
stanza-create db - successfully create the stanza (db-master host)
|
||||
@@ -56,11 +57,53 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - successful rerun of stanza-create (db-master host)
|
||||
stanza-create db - fail on rerun of stanza-create - info files exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
P00 ERROR: [040]: backup directory and/or archive directory not empty
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [040]
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: /archive/db/archive.info
|
||||
---------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 ERROR: [028]: backup info file or archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
@@ -139,12 +182,17 @@ P00 INFO: archive-push command begin [BACKREST-VERSION]: --compress-level=3 --
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000001, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Storage::S3::Request->new(): bVerifySsl = false, iPort = [undef], lBufferMax = 4194304, strAccessKeyId = <redacted>, strBucket = pgbackrest-dev, strCaFile = [undef], strCaPath = [undef], strEndPoint = s3.amazonaws.com, strHost = [undef], strRegion = us-east-1, strSecretAccessKey = <redacted>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = /, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = /, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Archive::Common::walInfo(): strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Archive::Common::walInfo=>: strDbVersion = 9.3, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck(): strArchiveFile = 000000010000000100000001, strDbVersion = 9.3, strWalFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = /archive/db
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], xFileExp = /archive/db/archive.info
|
||||
P00 DEBUG: Archive::Info->new(): bIgnoreMissing = <false>, bLoad = <true>, bRequired = <true>, strArchiveClusterPath = /archive/db, strCipherPassSub = [undef]
|
||||
P00 DEBUG: Storage::Local->encrypted(): bIgnoreMissing = true, strFileName = /archive/db/archive.info
|
||||
P00 DEBUG: Storage::Local->encrypted=>: bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid(): bEncrypted = false
|
||||
P00 DEBUG: Storage::Local->encryptionValid=>: bValid = true
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = true, rhyFilter = [undef], strCipherPass = [undef], xFileExp = /archive/db/archive.info
|
||||
P00 DEBUG: Storage::Base->get(): strCipherPass = [undef], xFile = [object]
|
||||
P00 DEBUG: Archive::Info->check(): bRequired = <true>, strDbVersion = 9.3, ullDbSysId = 6395542721432104958
|
||||
P00 DEBUG: Archive::Info->archiveId(): strDbVersion = [undef], ullDbSysId = [undef]
|
||||
P00 DEBUG: Archive::Info->archiveId=>: strArchiveId = 9.3-1
|
||||
@@ -153,14 +201,14 @@ P00 DEBUG: Archive::Common::walSegmentFind(): iWaitSeconds = [undef], oStor
|
||||
P00 DEBUG: Storage::Local->list(): bIgnoreMissing = true, strExpression = ^000000010000000100000001-[0-f]{40}(\.gz){0,1}$, strPathExp = <REPO:ARCHIVE>/9.3-1/0000000100000001, strSortOrder = <forward>
|
||||
P00 DEBUG: Storage::Local->list=>: stryFileList = ()
|
||||
P00 DEBUG: Archive::Common::walSegmentFind=>: strWalFileName = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Archive::Push::File::archivePushCheck=>: strArchiveId = 9.3-1, strChecksum = [undef], strCipherPass = [undef], strWarning = [undef]
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [undef], lBufferMax = 4194304, oDriver = [object], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/db/base, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Storage::Local->hashSize(): xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = [undef], strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->hashSize=>: lSize = 16777216, strHash = f5035e2c3b83a9c32660f959b23451e78f7438f7
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.3-1/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz
|
||||
P00 DEBUG: Storage::Local->openRead(): bIgnoreMissing = <false>, rhyFilter = ({rxyParam => ({iLevel => 3}), strClass => pgBackRest::Storage::Filter::Gzip}), strCipherPass = [undef], xFileExp = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Storage::Local->openWrite(): bAtomic = true, bPathCreate = true, lTimestamp = [undef], rhyFilter = [undef], strCipherPass = [undef], strGroup = [undef], strMode = <0640>, strUser = [undef], xFileExp = <REPO:ARCHIVE>/9.3-1/000000010000000100000001-f5035e2c3b83a9c32660f959b23451e78f7438f7.gz
|
||||
P00 DEBUG: Storage::Base->copy(): xDestinationFile = [object], xSourceFile = [object]
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile=>: strWarning = [undef]
|
||||
P00 INFO: pushed WAL segment 000000010000000100000001
|
||||
@@ -234,131 +282,13 @@ db-version="9.3"
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - repeat create (db-master host)
|
||||
stanza-create db - repeat create - error that files exist (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: /archive/db/archive.info
|
||||
---------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - hash check fails requiring force (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: /archive/db/archive.info
|
||||
---------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="8.0"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - use force to overwrite the invalid file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --force --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 INFO: stanza-create command end: completed successfully
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-catalog-version=201306121
|
||||
db-control-version=937
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201306121,"db-control-version":937,"db-system-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
+ supplemental file: /archive/db/archive.info
|
||||
---------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[db]
|
||||
db-id=1
|
||||
db-system-id=6395542721432104958
|
||||
db-version="9.3"
|
||||
|
||||
[db:history]
|
||||
1={"db-id":6395542721432104958,"db-version":"9.3"}
|
||||
|
||||
stanza-create db - fail on database mismatch without force option (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail --no-online stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-create command begin [BACKREST-VERSION]: --compress-level=3 --config=[TEST_PATH]/db-master/pgbackrest.conf --db1-path=[TEST_PATH]/db-master/db/base --db-timeout=45 --lock-path=[TEST_PATH]/db-master/lock --log-level-console=detail --log-level-file=trace --log-path=[TEST_PATH]/db-master/log --no-online --protocol-timeout=60 --repo-path=/ --repo-s3-bucket=pgbackrest-dev --repo-s3-endpoint=s3.amazonaws.com --repo-s3-key=<redacted> --repo-s3-key-secret=<redacted> --repo-s3-region=us-east-1 --no-repo-s3-verify-ssl --repo-type=s3 --stanza=db
|
||||
P00 WARN: unable to create stanza 'db'
|
||||
P00 ERROR: [028]: archive info file invalid
|
||||
HINT: use stanza-upgrade if the database has been upgraded or use --force
|
||||
P00 INFO: stanza-create command end: aborted with exception [028]
|
||||
P00 ERROR: [040]: backup directory and/or archive directory not empty
|
||||
HINT: use stanza-create --force to force the stanza data to be created.
|
||||
P00 INFO: stanza-create command end: aborted with exception [040]
|
||||
|
||||
+ supplemental file: /backup/db/backup.info
|
||||
-------------------------------------------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 001 - bkp 0, sby 0, dst db-master, cmp 0, s3 0
|
||||
==================================================
|
||||
run 001 - bkp 0, sby 0, dst db-master, cmp 0, s3 0, enc 0
|
||||
=========================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 002 - bkp 0, sby 1, dst db-master, cmp 0, s3 0
|
||||
==================================================
|
||||
run 002 - bkp 0, sby 1, dst db-master, cmp 0, s3 0, enc 0
|
||||
=========================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 003 - bkp 0, sby 1, dst db-standby, cmp 0, s3 0
|
||||
===================================================
|
||||
run 003 - bkp 0, sby 1, dst db-standby, cmp 0, s3 0, enc 0
|
||||
==========================================================
|
||||
|
||||
stanza-create db - main create stanza info files (db-standby host)
|
||||
> [CONTAINER-EXEC] db-standby [BACKREST-BIN] --config=[TEST_PATH]/db-standby/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 004 - bkp 1, sby 0, dst backup, cmp 1, s3 0
|
||||
===============================================
|
||||
run 004 - bkp 1, sby 0, dst backup, cmp 1, s3 0, enc 1
|
||||
======================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
@@ -85,14 +85,6 @@ stanza-create db - fail on backup info file missing from non-empty dir (backup h
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - verify success with force (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - fail on database mismatch with directory (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --db-path=[TEST_PATH]/db-master/db/testbase/ stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
stanza-create db - successfully create stanza files to be upgraded (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail --db-path=[TEST_PATH]/db-master/db/testbase/ --no-online --force stanza-create
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -148,6 +140,8 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
@@ -214,6 +208,8 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
@@ -289,6 +285,8 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/log
|
||||
protocol-timeout=60
|
||||
repo-cipher-pass=x
|
||||
repo-cipher-type=aes-256-cbc
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 005 - bkp 1, sby 1, dst backup, cmp , s3 0
|
||||
==============================================
|
||||
run 005 - bkp 1, sby 1, dst backup, cmp , s3 0, enc 0
|
||||
=====================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
run 006 - bkp 1, sby 0, dst backup, cmp 1, s3 1
|
||||
===============================================
|
||||
run 006 - bkp 1, sby 0, dst backup, cmp 1, s3 1, enc 0
|
||||
======================================================
|
||||
|
||||
stanza-create db - main create stanza info files (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-create
|
||||
|
||||
@@ -156,6 +156,7 @@ my $oTestDef =
|
||||
{
|
||||
&TESTDEF_NAME => 'ini',
|
||||
&TESTDEF_TOTAL => 10,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
@@ -387,7 +388,7 @@ my $oTestDef =
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'local',
|
||||
&TESTDEF_TOTAL => 9,
|
||||
&TESTDEF_TOTAL => 10,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
@@ -397,7 +398,8 @@ my $oTestDef =
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'helper',
|
||||
&TESTDEF_TOTAL => 4,
|
||||
&TESTDEF_TOTAL => 5,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
@@ -442,7 +444,8 @@ my $oTestDef =
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'unit',
|
||||
&TESTDEF_TOTAL => 1,
|
||||
&TESTDEF_TOTAL => 2,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
@@ -454,13 +457,13 @@ my $oTestDef =
|
||||
# Archive tests
|
||||
{
|
||||
&TESTDEF_NAME => 'archive',
|
||||
&TESTDEF_CONTAINER => true,
|
||||
|
||||
&TESTDEF_TEST =>
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'common',
|
||||
&TESTDEF_TOTAL => 4,
|
||||
&TESTDEF_CONTAINER => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
@@ -469,8 +472,8 @@ my $oTestDef =
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'push',
|
||||
&TESTDEF_TOTAL => 7,
|
||||
&TESTDEF_CONTAINER => true,
|
||||
&TESTDEF_TOTAL => 8,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
@@ -486,6 +489,17 @@ my $oTestDef =
|
||||
&TESTDEF_TOTAL => 7,
|
||||
&TESTDEF_INDIVIDUAL => true,
|
||||
&TESTDEF_EXPECT => true,
|
||||
&TESTDEF_CONTAINER => false,
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'info-unit',
|
||||
&TESTDEF_TOTAL => 2,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
'Archive/Info' => TESTDEF_COVERAGE_PARTIAL,
|
||||
},
|
||||
},
|
||||
]
|
||||
},
|
||||
@@ -507,7 +521,9 @@ my $oTestDef =
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'info-unit',
|
||||
&TESTDEF_TOTAL => 2,
|
||||
&TESTDEF_TOTAL => 3,
|
||||
&TESTDEF_CLIB => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
{
|
||||
'Backup/Info' => TESTDEF_COVERAGE_PARTIAL,
|
||||
@@ -530,7 +546,7 @@ my $oTestDef =
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'expire',
|
||||
&TESTDEF_TOTAL => 2,
|
||||
&TESTDEF_TOTAL => 4,
|
||||
},
|
||||
]
|
||||
},
|
||||
@@ -542,7 +558,8 @@ my $oTestDef =
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'all',
|
||||
&TESTDEF_TOTAL => 7,
|
||||
&TESTDEF_TOTAL => 8,
|
||||
&TESTDEF_CLIB => true,
|
||||
&TESTDEF_CONTAINER => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
|
||||
@@ -188,6 +188,7 @@ sub forceStorageMove
|
||||
$oStorage,
|
||||
$strSourcePathExp,
|
||||
$strDestinationPathExp,
|
||||
$bRecurse,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -195,13 +196,14 @@ sub forceStorageMove
|
||||
{name => 'oStorage'},
|
||||
{name => 'strSourcePathExp'},
|
||||
{name => 'strDestinationPathExp'},
|
||||
{name => 'bRecurse', optional => true, default => true},
|
||||
);
|
||||
|
||||
# If S3 then use storage commands to remove
|
||||
if ($oStorage->driver()->className() eq STORAGE_S3_DRIVER)
|
||||
{
|
||||
hostGroupGet()->hostGet(HOST_S3)->executeS3(
|
||||
'mv --recursive s3://' . HOST_S3_BUCKET . $oStorage->pathGet($strSourcePathExp) .
|
||||
'mv' . ($bRecurse ? ' --recursive' : '') . ' s3://' . HOST_S3_BUCKET . $oStorage->pathGet($strSourcePathExp) .
|
||||
' s3://' . HOST_S3_BUCKET . $oStorage->pathGet($strDestinationPathExp));
|
||||
}
|
||||
# Else remove using filesystem commands
|
||||
|
||||
@@ -321,6 +321,8 @@ sub regExpReplace
|
||||
$strReplacement = $strTypeReplacement;
|
||||
}
|
||||
|
||||
$strReplace =~ s/\//\\\//g;
|
||||
$strReplace =~ s/\+/\\\+/g;
|
||||
$strLine =~ s/$strReplace/$strReplacement/g;
|
||||
}
|
||||
|
||||
@@ -397,6 +399,8 @@ sub regExpReplaceAll
|
||||
$strLine = $self->regExpReplace($strLine, 'USER', '[^ ]+\@db\-master', '^[^\@]+');
|
||||
$strLine = $self->regExpReplace($strLine, 'USER', '[\( ]{1}' . TEST_USER . '[\,\)]{1}', TEST_USER);
|
||||
|
||||
$strLine = $self->regExpReplace($strLine, 'CIPHER-PASS', '^cipher\-pass\=.+$', '[^\=]+$');
|
||||
|
||||
$strLine = $self->regExpReplace($strLine, 'PORT', 'db[1-9]{0,1}-port=[0-9]+', '[0-9]+$');
|
||||
|
||||
# Replace year when it falls on a single line when executing ls -1R
|
||||
|
||||
@@ -110,8 +110,14 @@ sub stanzaSet
|
||||
$$oStanza{iCatalogVersion} = $oStanzaCreate->{oDb}{iCatalogVersion};
|
||||
$$oStanza{iControlVersion} = $oStanzaCreate->{oDb}{iControlVersion};
|
||||
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE));
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP));
|
||||
my $bEncrypted = defined($self->{oStorageRepo}->cipherType());
|
||||
|
||||
my $oArchiveInfo =
|
||||
new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE),
|
||||
{strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_ARCHIVE : undef});
|
||||
my $oBackupInfo =
|
||||
new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP),
|
||||
{strCipherPassSub => $bEncrypted ? ENCRYPTION_KEY_MANIFEST : undef});
|
||||
|
||||
if ($bStanzaUpgrade)
|
||||
{
|
||||
@@ -264,8 +270,22 @@ sub backupCreate
|
||||
|
||||
&log(INFO, "create backup ${strBackupLabel}");
|
||||
|
||||
# Get passphrase (returns undefined if repo not encrypted) to access the manifest
|
||||
my $strCipherPassManifest =
|
||||
(new pgBackRest::Backup::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_BACKUP)))->cipherPassSub();
|
||||
my $strCipherPassBackupSet;
|
||||
|
||||
# If repo is encrypted then get passphrase for accessing the backup files from the last manifest if it exists provide one
|
||||
if (defined($strCipherPassManifest))
|
||||
{
|
||||
$strCipherPassBackupSet = (defined($oLastManifest)) ? $oLastManifest->cipherPassSub() :
|
||||
ENCRYPTION_KEY_BACKUPSET;
|
||||
}
|
||||
|
||||
my $strManifestFile = "$$oStanza{strBackupClusterPath}/${strBackupLabel}/" . FILE_MANIFEST;
|
||||
my $oManifest = new pgBackRest::Manifest($strManifestFile, {bLoad => false, strDbVersion => PG_VERSION_93});
|
||||
|
||||
my $oManifest = new pgBackRest::Manifest($strManifestFile, {bLoad => false, strDbVersion => PG_VERSION_93,
|
||||
strCipherPass => $strCipherPassManifest, strCipherPassSub => $strCipherPassBackupSet});
|
||||
|
||||
# Store information about the backup into the backup section
|
||||
$oManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL, undef, $strBackupLabel);
|
||||
@@ -396,6 +416,10 @@ sub archiveCreate
|
||||
my $strArchive = defined($$oStanza{strArchiveLast}) ? $self->archiveNext($$oStanza{strArchiveLast}, $bSkipFF) :
|
||||
'000000010000000000000000';
|
||||
|
||||
# Get passphrase (returns undefined if repo not encrypted) to access the archive files
|
||||
my $strCipherPass =
|
||||
(new pgBackRest::Archive::Info($self->{oStorageRepo}->pathGet(STORAGE_REPO_ARCHIVE)))->cipherPassSub();
|
||||
|
||||
push(my @stryArchive, $strArchive);
|
||||
|
||||
do
|
||||
@@ -404,7 +428,8 @@ sub archiveCreate
|
||||
storageRepo()->pathCreate($strPath, {bIgnoreExists => true});
|
||||
|
||||
my $strFile = "${strPath}/${strArchive}-0000000000000000000000000000000000000000" . ($iArchiveIdx % 2 == 0 ? '.gz' : '');
|
||||
storageRepo()->put($strFile, 'ARCHIVE');
|
||||
|
||||
storageRepo()->put($strFile, 'ARCHIVE', {strCipherPass => $strCipherPass});
|
||||
|
||||
$iArchiveIdx++;
|
||||
|
||||
|
||||
@@ -128,6 +128,9 @@ sub new
|
||||
# Create a placeholder hash for file munging
|
||||
$self->{hInfoFile} = {};
|
||||
|
||||
# Set whether repo should be encrypted or not
|
||||
$self->{bRepoEncrypt} = defined($$oParam{bRepoEncrypt}) ? $$oParam{bRepoEncrypt} : false;
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
@@ -246,7 +249,10 @@ sub backupEnd
|
||||
if (!$self->synthetic())
|
||||
{
|
||||
$oExpectedManifest = iniParse(
|
||||
${storageRepo()->get(storageRepo()->pathGet('backup/' . $self->stanza() . "/${strBackup}/" . FILE_MANIFEST))});
|
||||
${storageRepo()->get(
|
||||
storageRepo()->openRead(
|
||||
'backup/' . $self->stanza() . "/${strBackup}/" . FILE_MANIFEST,
|
||||
{strCipherPass => $self->cipherPassManifest()}))});
|
||||
}
|
||||
|
||||
# Make sure tablespace links are correct
|
||||
@@ -365,7 +371,10 @@ sub backupEnd
|
||||
{
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), undef,
|
||||
${storageRepo->get(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST)});
|
||||
${storageRepo()->get(
|
||||
storageRepo()->openRead(
|
||||
STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST,
|
||||
{strCipherPass => $self->cipherPassManifest()}))});
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO), undef,
|
||||
${storageRepo->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)});
|
||||
@@ -440,7 +449,8 @@ sub backupCompare
|
||||
${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_LABEL} = $strBackup;
|
||||
|
||||
my $oActualManifest = new pgBackRest::Manifest(
|
||||
storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST));
|
||||
storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST),
|
||||
{strCipherPass => $self->cipherPassManifest()});
|
||||
|
||||
${$oExpectedManifest}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_TIMESTAMP_START} =
|
||||
$oActualManifest->get(MANIFEST_SECTION_BACKUP, &MANIFEST_KEY_TIMESTAMP_START);
|
||||
@@ -452,17 +462,30 @@ sub backupCompare
|
||||
$oActualManifest->get(INI_SECTION_BACKREST, INI_KEY_CHECKSUM);
|
||||
${$oExpectedManifest}{&INI_SECTION_BACKREST}{&INI_KEY_FORMAT} = BACKREST_FORMAT + 0;
|
||||
|
||||
if (defined($oExpectedManifest->{&INI_SECTION_CIPHER}) &&
|
||||
defined($oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS}) &&
|
||||
$oActualManifest->test(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS))
|
||||
{
|
||||
$oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS} =
|
||||
$oActualManifest->get(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS);
|
||||
}
|
||||
|
||||
my $strSectionPath = $oActualManifest->get(MANIFEST_SECTION_BACKUP_TARGET, MANIFEST_TARGET_PGDATA, MANIFEST_SUBKEY_PATH);
|
||||
|
||||
foreach my $strFileKey ($oActualManifest->keys(MANIFEST_SECTION_TARGET_FILE))
|
||||
{
|
||||
# Determine repo size if compression is enabled
|
||||
if ($oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS})
|
||||
# Determine repo size if compression or encryption is enabled
|
||||
my $bCompressed = $oExpectedManifest->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_COMPRESS};
|
||||
|
||||
if ($bCompressed ||
|
||||
(defined($oExpectedManifest->{&INI_SECTION_CIPHER}) &&
|
||||
defined($oExpectedManifest->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS})))
|
||||
{
|
||||
|
||||
my $lRepoSize =
|
||||
$oActualManifest->test(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REFERENCE) ?
|
||||
$oActualManifest->numericGet(MANIFEST_SECTION_TARGET_FILE, $strFileKey, MANIFEST_SUBKEY_REPO_SIZE, false) :
|
||||
(storageRepo()->info(STORAGE_REPO_BACKUP . "/${strBackup}/${strFileKey}.gz"))->size;
|
||||
(storageRepo()->info(STORAGE_REPO_BACKUP . "/${strBackup}/${strFileKey}" . ($bCompressed ? '.gz' : '')))->size;
|
||||
|
||||
if (defined($lRepoSize) &&
|
||||
$lRepoSize != $oExpectedManifest->{&MANIFEST_SECTION_TARGET_FILE}{$strFileKey}{&MANIFEST_SUBKEY_SIZE})
|
||||
@@ -751,21 +774,34 @@ sub stanzaCreate
|
||||
{strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest},
|
||||
bLogOutput => $self->synthetic()});
|
||||
|
||||
# If the info file was created, then add it to the expect log
|
||||
if (defined($self->{oLogTest}) && $self->synthetic() &&
|
||||
storageRepo()->exists('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO))
|
||||
if (storageRepo()->exists('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO))
|
||||
{
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO), undef,
|
||||
${storageRepo()->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)});
|
||||
# If the info file was created, then add it to the expect log
|
||||
if (defined($self->{oLogTest}) && $self->synthetic())
|
||||
{
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet('backup/' . $self->stanza() . qw{/} . FILE_BACKUP_INFO), undef,
|
||||
${storageRepo()->get(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO)});
|
||||
}
|
||||
|
||||
# Get the passphrase for accessing the manifest file
|
||||
$self->{strCipherPassManifest} =
|
||||
(new pgBackRest::Backup::Info(storageRepo()->pathGet('backup/' . $self->stanza())))->cipherPassSub();
|
||||
}
|
||||
|
||||
if (defined($self->{oLogTest}) && $self->synthetic() &&
|
||||
storageRepo()->exists('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE))
|
||||
if (storageRepo()->exists('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE))
|
||||
{
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE), undef,
|
||||
${storageRepo()->get(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)});
|
||||
# If the info file was created, then add it to the expect log
|
||||
if (defined($self->{oLogTest}) && $self->synthetic())
|
||||
{
|
||||
$self->{oLogTest}->supplementalAdd(
|
||||
storageRepo()->pathGet('archive/' . $self->stanza() . qw{/} . ARCHIVE_INFO_FILE), undef,
|
||||
${storageRepo()->get(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE)});
|
||||
}
|
||||
|
||||
# Get the passphrase for accessing the archived files
|
||||
$self->{strCipherPassArchive} =
|
||||
(new pgBackRest::Archive::Info(storageRepo()->pathGet('archive/' . $self->stanza())))->cipherPassSub();
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
@@ -983,6 +1019,13 @@ sub configCreate
|
||||
|
||||
if ($self->isHostBackup())
|
||||
{
|
||||
if ($self->repoEncrypt())
|
||||
{
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_CIPHER_TYPE)} =
|
||||
CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC;
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_CIPHER_PASS)} = 'x';
|
||||
}
|
||||
|
||||
$oParamHash{&CFGDEF_SECTION_GLOBAL}{cfgOptionName(CFGOPT_REPO_PATH)} = $self->repoPath();
|
||||
|
||||
# S3 settings
|
||||
@@ -1181,7 +1224,7 @@ sub manifestMunge
|
||||
{name => 'bCache', default => true},
|
||||
);
|
||||
|
||||
$self->infoMunge(storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), $hParam, $bCache);
|
||||
$self->infoMunge(storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST), $hParam, $bCache, true);
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn($strOperation);
|
||||
@@ -1232,6 +1275,7 @@ sub infoMunge
|
||||
$strFileName,
|
||||
$hParam,
|
||||
$bCache,
|
||||
$bManifest,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
@@ -1239,18 +1283,21 @@ sub infoMunge
|
||||
{name => 'strFileName'},
|
||||
{name => 'hParam'},
|
||||
{name => 'bCache', default => true},
|
||||
{name => 'bManifest', default => false},
|
||||
);
|
||||
|
||||
# If the original file content does not exist then load it
|
||||
if (!defined($self->{hInfoFile}{$strFileName}))
|
||||
{
|
||||
$self->{hInfoFile}{$strFileName} = new pgBackRest::Common::Ini($strFileName, {oStorage => storageRepo()});
|
||||
$self->{hInfoFile}{$strFileName} = new pgBackRest::Common::Ini($strFileName, {oStorage => storageRepo(),
|
||||
strCipherPass => !$bManifest ? storageRepo()->cipherPassUser() : $self->cipherPassManifest()});
|
||||
}
|
||||
|
||||
# Make a copy of the original file contents
|
||||
my $oMungeIni = new pgBackRest::Common::Ini(
|
||||
$strFileName,
|
||||
{bLoad => false, strContent => iniRender($self->{hInfoFile}{$strFileName}->{oContent}), oStorage => storageRepo()});
|
||||
{bLoad => false, strContent => iniRender($self->{hInfoFile}{$strFileName}->{oContent}), oStorage => storageRepo(),
|
||||
strCipherPass => !$bManifest ? storageRepo()->cipherPassUser() : $self->cipherPassManifest()});
|
||||
|
||||
# Load params
|
||||
foreach my $strSection (keys(%{$hParam}))
|
||||
@@ -1376,7 +1423,10 @@ sub isHostDb {my $self = shift; return $self->isHostDbMaster() || $self->isHostD
|
||||
sub lockPath {return shift->{strLockPath}}
|
||||
sub logPath {return shift->{strLogPath}}
|
||||
sub repoPath {return shift->{strRepoPath}}
|
||||
sub repoEncrypt {return shift->{bRepoEncrypt}}
|
||||
sub stanza {return testRunGet()->stanza()}
|
||||
sub synthetic {return shift->{bSynthetic}}
|
||||
sub cipherPassManifest {return shift->{strCipherPassManifest}}
|
||||
sub cipherPassArchive {return shift->{strCipherPassArchive}}
|
||||
|
||||
1;
|
||||
|
||||
@@ -75,6 +75,7 @@ sub new
|
||||
oLogTest => $$oParam{oLogTest},
|
||||
bSynthetic => $$oParam{bSynthetic},
|
||||
bRepoLocal => $oParam->{bRepoLocal},
|
||||
bRepoEncrypt => $oParam->{bRepoEncrypt},
|
||||
});
|
||||
bless $self, $class;
|
||||
|
||||
@@ -357,7 +358,8 @@ sub restore
|
||||
my $oExpectedManifest = new pgBackRest::Manifest(
|
||||
storageRepo()->pathGet(
|
||||
STORAGE_REPO_BACKUP . qw{/} . ($strBackup eq 'latest' ? $oHostBackup->backupLast() : $strBackup) . qw{/} .
|
||||
FILE_MANIFEST));
|
||||
FILE_MANIFEST),
|
||||
{strCipherPass => $oHostBackup->cipherPassManifest()});
|
||||
|
||||
$oExpectedManifestRef = $oExpectedManifest->{oContent};
|
||||
|
||||
@@ -410,7 +412,7 @@ sub restore
|
||||
$self->configRecovery($oHostBackup, $oRecoveryHashRef);
|
||||
}
|
||||
|
||||
# Create the restorecommand
|
||||
# Create the restore command
|
||||
$self->executeSimple(
|
||||
$self->backrestExe() .
|
||||
' --config=' . $self->backrestConfig() .
|
||||
@@ -469,13 +471,15 @@ sub restoreCompare
|
||||
new pgBackRest::Manifest(
|
||||
storageRepo()->pathGet(
|
||||
STORAGE_REPO_BACKUP . qw{/} . ($strBackup eq 'latest' ? $oHostBackup->backupLast() : $strBackup) .
|
||||
'/'. FILE_MANIFEST));
|
||||
'/'. FILE_MANIFEST),
|
||||
{strCipherPass => $oHostBackup->cipherPassManifest()});
|
||||
|
||||
$oLastManifest =
|
||||
new pgBackRest::Manifest(
|
||||
storageRepo()->pathGet(
|
||||
STORAGE_REPO_BACKUP . qw{/} .
|
||||
${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR} . qw{/} . FILE_MANIFEST));
|
||||
${$oExpectedManifestRef}{&MANIFEST_SECTION_BACKUP}{&MANIFEST_KEY_PRIOR} . qw{/} . FILE_MANIFEST),
|
||||
{strCipherPass => $oHostBackup->cipherPassManifest()});
|
||||
}
|
||||
|
||||
# Generate the tablespace map for real backups
|
||||
@@ -529,7 +533,8 @@ sub restoreCompare
|
||||
|
||||
my $oActualManifest = new pgBackRest::Manifest(
|
||||
"${strTestPath}/" . FILE_MANIFEST,
|
||||
{bLoad => false, strDbVersion => $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION}});
|
||||
{bLoad => false, strDbVersion => $oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_DB_VERSION},
|
||||
oStorage => storageTest()});
|
||||
|
||||
$oActualManifest->set(
|
||||
MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION, undef,
|
||||
@@ -650,6 +655,14 @@ sub restoreCompare
|
||||
$oActualManifest->set(INI_SECTION_BACKREST, INI_KEY_VERSION, undef,
|
||||
${$oExpectedManifestRef}{&INI_SECTION_BACKREST}{&INI_KEY_VERSION});
|
||||
|
||||
# Copy passphrase if one exists
|
||||
if (defined($oExpectedManifestRef->{&INI_SECTION_CIPHER}) &&
|
||||
defined($oExpectedManifestRef->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS}))
|
||||
{
|
||||
$oActualManifest->set(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef,
|
||||
$oExpectedManifestRef->{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS});
|
||||
}
|
||||
|
||||
# This option won't be set in the actual manifest
|
||||
delete($oExpectedManifestRef->{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_CHECKSUM_PAGE});
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ sub new
|
||||
bSynthetic => true,
|
||||
bStandby => $$oParam{bStandby},
|
||||
bRepoLocal => $oParam->{bRepoLocal},
|
||||
bRepoEncrypt => $oParam->{bRepoEncrypt},
|
||||
});
|
||||
bless $self, $class;
|
||||
|
||||
|
||||
@@ -75,6 +75,7 @@ sub new
|
||||
oLogTest => $$oParam{oLogTest},
|
||||
bStandby => $$oParam{bStandby},
|
||||
bRepoLocal => $oParam->{bRepoLocal},
|
||||
bRepoEncrypt => $oParam->{bRepoEncrypt},
|
||||
});
|
||||
bless $self, $class;
|
||||
|
||||
|
||||
@@ -50,6 +50,13 @@ use constant WAL_VERSION_95 => '95';
|
||||
use constant WAL_VERSION_95_SYS_ID => 6392579261579036436;
|
||||
push @EXPORT, qw(WAL_VERSION_95_SYS_ID);
|
||||
|
||||
use constant ENCRYPTION_KEY_ARCHIVE => 'archive';
|
||||
push @EXPORT, qw(ENCRYPTION_KEY_ARCHIVE);
|
||||
use constant ENCRYPTION_KEY_MANIFEST => 'manifest';
|
||||
push @EXPORT, qw(ENCRYPTION_KEY_MANIFEST);
|
||||
use constant ENCRYPTION_KEY_BACKUPSET => 'backupset';
|
||||
push @EXPORT, qw(ENCRYPTION_KEY_BACKUPSET);
|
||||
|
||||
####################################################################################################################################
|
||||
# setup
|
||||
####################################################################################################################################
|
||||
@@ -77,13 +84,15 @@ sub setup
|
||||
my $bHostBackup = defined($$oConfigParam{bHostBackup}) ? $$oConfigParam{bHostBackup} : false;
|
||||
my $oHostBackup = undef;
|
||||
|
||||
my $bRepoEncrypt = defined($$oConfigParam{bRepoEncrypt}) ? $$oConfigParam{bRepoEncrypt} : false;
|
||||
|
||||
if ($bHostBackup)
|
||||
{
|
||||
$strBackupDestination = defined($$oConfigParam{strBackupDestination}) ? $$oConfigParam{strBackupDestination} : HOST_BACKUP;
|
||||
|
||||
$oHostBackup = new pgBackRestTest::Env::Host::HostBackupTest(
|
||||
{strBackupDestination => $strBackupDestination, bSynthetic => $bSynthetic, oLogTest => $oLogTest,
|
||||
bRepoLocal => !$oConfigParam->{bS3}});
|
||||
bRepoLocal => !$oConfigParam->{bS3}, bRepoEncrypt => $bRepoEncrypt});
|
||||
$oHostGroup->hostAdd($oHostBackup);
|
||||
}
|
||||
else
|
||||
@@ -98,12 +107,14 @@ sub setup
|
||||
if ($bSynthetic)
|
||||
{
|
||||
$oHostDbMaster = new pgBackRestTest::Env::Host::HostDbSyntheticTest(
|
||||
{strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}});
|
||||
{strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3},
|
||||
bRepoEncrypt => $bRepoEncrypt});
|
||||
}
|
||||
else
|
||||
{
|
||||
$oHostDbMaster = new pgBackRestTest::Env::Host::HostDbTest(
|
||||
{strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3}});
|
||||
{strBackupDestination => $strBackupDestination, oLogTest => $oLogTest, bRepoLocal => !$oConfigParam->{bS3},
|
||||
bRepoEncrypt => $bRepoEncrypt});
|
||||
}
|
||||
|
||||
$oHostGroup->hostAdd($oHostDbMaster);
|
||||
@@ -131,6 +142,7 @@ sub setup
|
||||
|
||||
$oHostS3->executeS3('mb s3://' . HOST_S3_BUCKET);
|
||||
}
|
||||
|
||||
# Create db master config
|
||||
$oHostDbMaster->configCreate({
|
||||
strBackupSource => $$oConfigParam{strBackupSource},
|
||||
@@ -168,6 +180,13 @@ sub setup
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $oHostBackup->repoPath());
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
|
||||
# Configure the repo to be encrypted if required
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
}
|
||||
|
||||
# Set S3 options
|
||||
if (defined($oHostS3))
|
||||
{
|
||||
|
||||
@@ -0,0 +1,193 @@
|
||||
####################################################################################################################################
|
||||
# BackupInfoUnitTest.pm - Unit tests for BackupInfo
|
||||
####################################################################################################################################
|
||||
package pgBackRestTest::Module::Archive::ArchiveInfoUnitTest;
|
||||
use parent 'pgBackRestTest::Env::ConfigEnvTest';
|
||||
|
||||
####################################################################################################################################
|
||||
# Perl includes
|
||||
####################################################################################################################################
|
||||
use strict;
|
||||
use warnings FATAL => qw(all);
|
||||
use Carp qw(confess);
|
||||
use English '-no_match_vars';
|
||||
|
||||
use File::Basename qw(dirname);
|
||||
use Storable qw(dclone);
|
||||
|
||||
use pgBackRest::Archive::Info;
|
||||
use pgBackRest::Backup::Info;
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Ini;
|
||||
use pgBackRest::Common::Lock;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Config::Config;
|
||||
use pgBackRest::DbVersion;
|
||||
use pgBackRest::InfoCommon;
|
||||
use pgBackRest::Manifest;
|
||||
use pgBackRest::Protocol::Storage::Helper;
|
||||
use pgBackRest::Storage::Base;
|
||||
|
||||
use pgBackRestTest::Env::HostEnvTest;
|
||||
use pgBackRestTest::Common::ExecuteTest;
|
||||
use pgBackRestTest::Common::RunTest;
|
||||
|
||||
####################################################################################################################################
|
||||
# initModule
|
||||
####################################################################################################################################
|
||||
sub initModule
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
$self->{strRepoPath} = $self->testPath() . '/repo';
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# initTest
|
||||
####################################################################################################################################
|
||||
sub initTest
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Clear cache from the previous test
|
||||
storageRepoCacheClear($self->stanza());
|
||||
|
||||
# Load options
|
||||
$self->configTestClear();
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->testPath() . '/repo');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Create backup info path
|
||||
storageRepo()->pathCreate(STORAGE_REPO_BACKUP, {bCreateParent => true});
|
||||
|
||||
# Create archive info path
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE, {bCreateParent => true});
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# run
|
||||
####################################################################################################################################
|
||||
sub run
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
my $strArchiveTestFile = $self->dataPath() . '/backup.wal1_';
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Archive::Info::reconstruct()"))
|
||||
{
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true});
|
||||
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1/0000000100000001", {bCreateParent => true});
|
||||
my $strArchiveFile = storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1/0000000100000001/") .
|
||||
"000000010000000100000001-1e34fa1c833090d94b9bb14f2a8d3153dca6ea27";
|
||||
executeTest('cp ' . $strArchiveTestFile . WAL_VERSION_94 . '.bin ' . $strArchiveFile);
|
||||
|
||||
$self->testResult(sub {$oArchiveInfo->reconstruct(PG_VERSION_94, WAL_VERSION_94_SYS_ID)}, "[undef]", 'reconstruct');
|
||||
$self->testResult(sub {$oArchiveInfo->check(PG_VERSION_94, WAL_VERSION_94_SYS_ID, false)}, PG_VERSION_94 . "-1",
|
||||
' check reconstruct');
|
||||
|
||||
# Attempt to reconstruct from an encypted archived WAL for an unencrypted repo
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Prepend encryption Magic signature to simulate encryption
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strArchiveFile . ')" > ' . $strArchiveFile);
|
||||
|
||||
$self->testException(sub {$oArchiveInfo->reconstruct(PG_VERSION_94, WAL_VERSION_94_SYS_ID)}, ERROR_CIPHER,
|
||||
"encryption incompatible for '$strArchiveFile'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
executeTest('sudo rm ' . $strArchiveFile);
|
||||
|
||||
# Attempt to reconstruct from an encypted archived WAL with an encrypted repo
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Get the unencrypted contents
|
||||
my $tContent = ${storageTest()->get($strArchiveTestFile . WAL_VERSION_94 . '.bin')};
|
||||
|
||||
# Instantiate an archive.info object with a sub passphrase for the archived WAL
|
||||
my $strCipherPassSub = 'y';
|
||||
$oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true, strCipherPassSub => $strCipherPassSub});
|
||||
|
||||
# Create an encrypted archived WAL
|
||||
storageRepo()->put($strArchiveFile, $tContent, {strCipherPass => $strCipherPassSub});
|
||||
|
||||
$self->testResult(sub {$oArchiveInfo->reconstruct(PG_VERSION_94, WAL_VERSION_94_SYS_ID)}, "[undef]", 'reconstruct');
|
||||
$self->testResult(sub {$oArchiveInfo->check(PG_VERSION_94, WAL_VERSION_94_SYS_ID, false)}, PG_VERSION_94 . "-1",
|
||||
' check reconstruction from encrypted archive');
|
||||
|
||||
$oArchiveInfo->save();
|
||||
|
||||
# Confirm encrypted
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE) && ($oArchiveInfo->cipherPassSub() eq $strCipherPassSub)}, true,
|
||||
' new archive info encrypted');
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("encryption"))
|
||||
{
|
||||
# Create an unencrypted archive.info file
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true});
|
||||
$oArchiveInfo->create(PG_VERSION_94, WAL_VERSION_94_SYS_ID, true);
|
||||
|
||||
# Confirm unencrypted
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, false, ' new archive info unencrypted');
|
||||
|
||||
my $strFile = $oArchiveInfo->{strFileName};
|
||||
|
||||
# Prepend encryption Magic signature to simulate encryption
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strFile . ')" > ' . $strFile);
|
||||
|
||||
$self->testException(sub {new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE))}, ERROR_CIPHER,
|
||||
"unable to parse '$strFile'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
# Remove the archive info files
|
||||
executeTest('sudo rm ' . $oArchiveInfo->{strFileName} . '*');
|
||||
|
||||
# Create an encrypted storage and archive.info file
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $strCipherPass = 'x';
|
||||
$self->configTestClear();
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, $strCipherPass);
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->testPath() . '/repo');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Clear the storage repo settings
|
||||
storageRepoCacheClear($self->stanza());
|
||||
|
||||
# Create an encrypted storage and generate an encyption sub passphrase to store in the file
|
||||
my $strCipherPassSub = storageRepo()->cipherPassGen();
|
||||
|
||||
# Error on encrypted repo but no passphrase passed to store in the file
|
||||
$self->testException(sub {new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true})}, ERROR_ASSERT,
|
||||
'a user passphrase and sub passphrase are both required when encrypting');
|
||||
|
||||
# Create an encrypted archiveInfo file
|
||||
$oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true, strCipherPassSub => $strCipherPassSub});
|
||||
$oArchiveInfo->create(PG_VERSION_94, WAL_VERSION_94_SYS_ID, true);
|
||||
|
||||
# Confirm encrypted
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, true, ' new archive info encrypted');
|
||||
|
||||
$self->testResult(sub {$oArchiveInfo->test(INI_SECTION_CIPHER, INI_KEY_CIPHER_PASS, undef, $strCipherPassSub)},
|
||||
true, ' generated passphrase stored');
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -106,7 +106,7 @@ sub run
|
||||
|
||||
$self->testResult(sub {archivePushCheck(
|
||||
$strWalSegment, PG_VERSION_94, WAL_VERSION_94_SYS_ID, "$self->{strWalPath}/${strWalSegment}")},
|
||||
'(9.4-1, [undef], [undef])', "${strWalSegment} WAL not found");
|
||||
'(9.4-1, [undef], [undef], [undef])', "${strWalSegment} WAL not found");
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $strWalMajorPath = "$self->{strArchivePath}/9.4-1/" . substr($strWalSegment, 0, 16);
|
||||
@@ -119,7 +119,7 @@ sub run
|
||||
|
||||
$self->testResult(sub {archivePushCheck(
|
||||
$strWalSegment, PG_VERSION_94, WAL_VERSION_94_SYS_ID, "$self->{strWalPath}/${strWalSegment}")},
|
||||
'(9.4-1, 1e34fa1c833090d94b9bb14f2a8d3153dca6ea27,' .
|
||||
'(9.4-1, 1e34fa1c833090d94b9bb14f2a8d3153dca6ea27, [undef],' .
|
||||
" WAL segment ${strWalSegment} already exists in the archive with the same checksum\n" .
|
||||
'HINT: this is valid in some recovery scenarios but may also indicate a problem.)',
|
||||
"${strWalSegment} WAL found");
|
||||
@@ -145,7 +145,7 @@ sub run
|
||||
|
||||
$self->testResult(sub {archivePushCheck(
|
||||
$strWalSegment, PG_VERSION_94, WAL_VERSION_94_SYS_ID, "$self->{strWalPath}/${strWalSegment}")},
|
||||
'(9.4-1, 1e34fa1c833090d94b9bb14f2a8d3153dca6ea27,' .
|
||||
'(9.4-1, 1e34fa1c833090d94b9bb14f2a8d3153dca6ea27, [undef],' .
|
||||
" WAL segment ${strWalSegment} already exists in the archive with the same checksum\n" .
|
||||
'HINT: this is valid in some recovery scenarios but may also indicate a problem.)',
|
||||
"${strWalSegment} WAL found");
|
||||
@@ -173,7 +173,7 @@ sub run
|
||||
|
||||
$self->testResult(sub {archivePushCheck(
|
||||
$strHistoryFile, PG_VERSION_94, WAL_VERSION_94_SYS_ID, "$self->{strWalPath}/${strHistoryFile}")},
|
||||
'(9.4-1, [undef], [undef])', "history file ${strHistoryFile} found");
|
||||
'(9.4-1, [undef], [undef], [undef])', "history file ${strHistoryFile} found");
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
@@ -724,7 +724,6 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++);
|
||||
$self->walGenerate($self->{strWalPath}, WAL_VERSION_94, 1, $strSegment);
|
||||
|
||||
$self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}")}, 0, "${strSegment} WAL pushed async");
|
||||
exit if ($iProcessId != $PID);
|
||||
|
||||
@@ -760,10 +759,45 @@ sub run
|
||||
exit if ($iProcessId != $PID);
|
||||
|
||||
# Disable async archiving
|
||||
$self->optionTestClear(CFGOPT_BACKUP_HOST);
|
||||
$self->optionTestClear(CFGOPT_PROTOCOL_TIMEOUT);
|
||||
$self->optionTestClear(CFGOPT_ARCHIVE_TIMEOUT);
|
||||
$self->optionTestClear(CFGOPT_ARCHIVE_ASYNC);
|
||||
$self->optionTestClear(CFGOPT_SPOOL_PATH);
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
}
|
||||
################################################################################################################################
|
||||
if ($self->begin("ArchivePushFile::archivePushFile - encryption"))
|
||||
{
|
||||
my $iWalTimeline = 1;
|
||||
my $iWalMajor = 1;
|
||||
my $iWalMinor = 1;
|
||||
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Remove any archive info files
|
||||
executeTest('sudo rm ' . $self->{strArchivePath} . '/archive.info*');
|
||||
|
||||
# Clear the repo settings
|
||||
storageRepoCacheClear($self->stanza());
|
||||
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true, strCipherPassSub => 'y'});
|
||||
$oArchiveInfo->create(PG_VERSION_94, WAL_VERSION_94_SYS_ID, true);
|
||||
|
||||
# Generate a normal segment
|
||||
my $strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++);
|
||||
$self->walGenerate($self->{strWalPath}, WAL_VERSION_94, 1, $strSegment);
|
||||
|
||||
$self->testResult(
|
||||
sub {archivePushFile($self->{strWalPath}, $strSegment, false, false)}, '[undef]',
|
||||
"${strSegment} WAL segment to pushed");
|
||||
|
||||
$self->testResult(storageRepo()->encrypted($self->{strArchivePath} . "/" . $self->{strArchiveId} . "/" .
|
||||
substr($strSegment, 0, 16) . "/$strSegment-" . $self->{strWalHash}), true, ' pushed segment is encrypted');
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -46,12 +46,16 @@ sub run
|
||||
{
|
||||
foreach my $iError ($bS3 ? (1) : ($bRemote ? (0, 1) : (0)))
|
||||
{
|
||||
my $bRepoEncrypt = ($bCompress && !$bS3) ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("rmt ${bRemote}, cmp ${bCompress}, error " . ($iError ? 'connect' : 'version') . ", s3 ${bS3}")) {next}
|
||||
if (!$self->begin("rmt ${bRemote}, cmp ${bCompress}, error " . ($iError ? 'connect' : 'version') . ", s3 ${bS3}, " .
|
||||
"enc ${bRepoEncrypt}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => $bCompress, bArchiveAsync => true, bS3 => $bS3});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => $bCompress, bArchiveAsync => true, bS3 => $bS3,
|
||||
bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
my $oStorage = storageRepo();
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ use pgBackRest::DbVersion;
|
||||
use pgBackRest::InfoCommon;
|
||||
use pgBackRest::Manifest;
|
||||
use pgBackRest::Protocol::Storage::Helper;
|
||||
use pgBackRest::Storage::Base;
|
||||
|
||||
use pgBackRestTest::Env::HostEnvTest;
|
||||
use pgBackRestTest::Common::ExecuteTest;
|
||||
@@ -53,14 +54,11 @@ sub initTest
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->testPath() . '/repo');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Create the local file object
|
||||
$self->{oStorage} = storageRepo();
|
||||
|
||||
# Create backup info path
|
||||
$self->{oStorage}->pathCreate(STORAGE_REPO_BACKUP, {bCreateParent => true});
|
||||
storageRepo()->pathCreate(STORAGE_REPO_BACKUP, {bCreateParent => true});
|
||||
|
||||
# Create archive info path
|
||||
$self->{oStorage}->pathCreate(STORAGE_REPO_ARCHIVE, {bCreateParent => true});
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE, {bCreateParent => true});
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -78,7 +76,7 @@ sub run
|
||||
################################################################################################################################
|
||||
if ($self->begin("BackupInfo::check() && BackupInfo::confirmDb()"))
|
||||
{
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{oStorage}->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
{bIgnoreMissing => true});
|
||||
$oBackupInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, $i93ControlVersion, $i93CatalogVersion, true);
|
||||
|
||||
@@ -90,7 +88,7 @@ sub run
|
||||
# DB section version mismatch
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_94, $i93ControlVersion, $i93CatalogVersion,
|
||||
WAL_VERSION_93_SYS_ID,)}, ERROR_BACKUP_MISMATCH,
|
||||
WAL_VERSION_93_SYS_ID)}, ERROR_BACKUP_MISMATCH,
|
||||
"database version = " . &PG_VERSION_94 . ", system-id " . &WAL_VERSION_93_SYS_ID .
|
||||
" does not match backup version = " . &PG_VERSION_93 . ", " . "system-id = " . &WAL_VERSION_93_SYS_ID .
|
||||
"\nHINT: is this the correct stanza?");
|
||||
@@ -98,21 +96,21 @@ sub run
|
||||
# DB section system-id mismatch
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_93, $i93ControlVersion, $i93CatalogVersion,
|
||||
WAL_VERSION_94_SYS_ID,)}, ERROR_BACKUP_MISMATCH,
|
||||
WAL_VERSION_94_SYS_ID)}, ERROR_BACKUP_MISMATCH,
|
||||
"database version = " . &PG_VERSION_93 . ", system-id " . &WAL_VERSION_94_SYS_ID .
|
||||
" does not match backup version = " . &PG_VERSION_93 . ", " . "system-id = " . &WAL_VERSION_93_SYS_ID .
|
||||
"\nHINT: is this the correct stanza?");
|
||||
|
||||
# DB section control version mismatch
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_93, 123, $i93CatalogVersion, WAL_VERSION_93_SYS_ID,)},
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_93, 123, $i93CatalogVersion, WAL_VERSION_93_SYS_ID)},
|
||||
ERROR_BACKUP_MISMATCH, "database control-version = 123, catalog-version $i93CatalogVersion " .
|
||||
"does not match backup control-version = $i93ControlVersion, catalog-version = $i93CatalogVersion" .
|
||||
"\nHINT: this may be a symptom of database or repository corruption!");
|
||||
|
||||
# DB section catalog version mismatch
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_93, $i93ControlVersion, 123456789, WAL_VERSION_93_SYS_ID,)},
|
||||
$self->testException(sub {$oBackupInfo->check(PG_VERSION_93, $i93ControlVersion, 123456789, WAL_VERSION_93_SYS_ID)},
|
||||
ERROR_BACKUP_MISMATCH, "database control-version = $i93ControlVersion, catalog-version 123456789 " .
|
||||
"does not match backup control-version = $i93ControlVersion, catalog-version = $i93CatalogVersion" .
|
||||
"\nHINT: this may be a symptom of database or repository corruption!");
|
||||
@@ -123,26 +121,26 @@ sub run
|
||||
$oBackupInfo->get(INFO_BACKUP_SECTION_DB, INFO_BACKUP_KEY_HISTORY_ID));
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_93, WAL_VERSION_93_SYS_ID,)}, true,
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_93, WAL_VERSION_93_SYS_ID)}, true,
|
||||
'backup db matches');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_94, WAL_VERSION_93_SYS_ID,)}, false,
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_94, WAL_VERSION_93_SYS_ID)}, false,
|
||||
'backup db wrong version');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_93, WAL_VERSION_94_SYS_ID,)}, false,
|
||||
$self->testResult(sub {$oBackupInfo->confirmDb($strBackupLabel, PG_VERSION_93, WAL_VERSION_94_SYS_ID)}, false,
|
||||
'backup db wrong system-id');
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("BackupInfo::backupArchiveDbHistoryId()"))
|
||||
{
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{oStorage}->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
{bIgnoreMissing => true});
|
||||
$oBackupInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, $i93ControlVersion, $i93CatalogVersion, true);
|
||||
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info($self->{oStorage}->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE), false,
|
||||
{bLoad => false, bIgnoreMissing => true});
|
||||
$oArchiveInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, true);
|
||||
|
||||
@@ -150,13 +148,13 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $strArchiveId = $oArchiveInfo->archiveId({strDbVersion => PG_VERSION_93, ullDbSysId => WAL_VERSION_93_SYS_ID});
|
||||
$self->testResult(sub {$oBackupInfo->backupArchiveDbHistoryId($strArchiveId,
|
||||
$self->{oStorage}->pathGet(STORAGE_REPO_ARCHIVE))}, 1, 'backupArchiveDbHistoryId found');
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE))}, 1, 'backupArchiveDbHistoryId found');
|
||||
|
||||
# Unable to map archiveId to Backup history id
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$strArchiveId = &PG_VERSION_94 . "-2";
|
||||
$self->testResult(sub {$oBackupInfo->backupArchiveDbHistoryId($strArchiveId,
|
||||
$self->{oStorage}->pathGet(STORAGE_REPO_ARCHIVE))}, "[undef]", 'backupArchiveDbHistoryId not found');
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE))}, "[undef]", 'backupArchiveDbHistoryId not found');
|
||||
|
||||
# Same version but different ullsystemid so continue looking until find match
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -170,7 +168,7 @@ sub run
|
||||
|
||||
$strArchiveId = &PG_VERSION_94 . "-" . $iHistoryId;
|
||||
$self->testResult(sub {$oBackupInfo->backupArchiveDbHistoryId($strArchiveId,
|
||||
$self->{oStorage}->pathGet(STORAGE_REPO_ARCHIVE))}, $iHistoryId, 'same db version but different system-id');
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE))}, $iHistoryId, 'same db version but different system-id');
|
||||
|
||||
# Different version but same ullsystemid
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -183,7 +181,65 @@ sub run
|
||||
|
||||
$strArchiveId = &PG_VERSION_93 . "-" . $iHistoryId;
|
||||
$self->testResult(sub {$oBackupInfo->backupArchiveDbHistoryId($strArchiveId,
|
||||
$self->{oStorage}->pathGet(STORAGE_REPO_ARCHIVE))}, "[undef]", 'same db system-id but different version');
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE))}, "[undef]", 'same db system-id but different version');
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("encryption"))
|
||||
{
|
||||
# Create a backupInfo file
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
{bIgnoreMissing => true});
|
||||
$oBackupInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, $i93ControlVersion, $i93CatalogVersion, true);
|
||||
|
||||
my $strFile = $oBackupInfo->{strFileName};
|
||||
|
||||
# Prepend encryption Magic signature to simulate encryption
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strFile . ')" > ' . $strFile);
|
||||
|
||||
$self->testException(sub {new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP))}, ERROR_CIPHER,
|
||||
"unable to parse '$strFile'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
# Create encrypted files, change the passphrase and attempt to load - ensure flush error returned as parse error
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Remove the backup info files
|
||||
executeTest('sudo rm ' . $oBackupInfo->{strFileName} . '*');
|
||||
|
||||
# Clear the storage repo settings and change the passphrase
|
||||
storageRepoCacheClear($self->stanza());
|
||||
|
||||
my $strCipherPass = 'x';
|
||||
$self->configTestClear();
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, $strCipherPass);
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->testPath() . '/repo');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Confirm exception when not passing a sub passphrase
|
||||
$self->testException(sub {new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
{bIgnoreMissing => true})}, ERROR_ASSERT,
|
||||
'a user passphrase and sub passphrase are both required when encrypting');
|
||||
|
||||
my $strCipherPassSub = storageRepo()->cipherPassGen();
|
||||
|
||||
# Create encrypted files
|
||||
$oBackupInfo = new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP), false, false,
|
||||
{bIgnoreMissing => true, strCipherPassSub => $strCipherPassSub});
|
||||
$oBackupInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, $i93ControlVersion, $i93CatalogVersion, true);
|
||||
|
||||
# Clear the storage repo settings and change the passphrase
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, BOGUS);
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->testPath() . '/repo');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
$self->testException(sub {new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP))}, ERROR_CIPHER,
|
||||
"unable to parse '" . $oBackupInfo->{strFileName} . "'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@ use English '-no_match_vars';
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Ini;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Config::Config;
|
||||
use pgBackRest::Storage::Base;
|
||||
use pgBackRest::Version;
|
||||
|
||||
use pgBackRestTest::Common::ExecuteTest;
|
||||
@@ -280,6 +282,57 @@ sub run
|
||||
storageTest()->put($strTestFile, iniRender($hIni));
|
||||
|
||||
$self->testResult(sub {new pgBackRest::Common::Ini($strTestFile)}, '[object]', 'invalid main header - load copy');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Prepend encryption Magic signature to copy (main invalid) to simulate encryption
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strTestFileCopy . ')" > ' . $strTestFileCopy);
|
||||
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile)}, ERROR_CIPHER,
|
||||
"unable to parse '$strTestFileCopy'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
# Prepend encryption Magic signature to main to simulate encryption
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strTestFile . ')" > ' . $strTestFile);
|
||||
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile)}, ERROR_CIPHER,
|
||||
"unable to parse '$strTestFile'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
# Encryption
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
executeTest("rm -rf ${strTestFile}*");
|
||||
|
||||
my $strCipherPass = 'x';
|
||||
my $strCipherPassSub = 'y';
|
||||
|
||||
# Unencrypted storage but a passphrase passed
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile, {bLoad => false,
|
||||
strCipherPass => $strCipherPass})}, ERROR_ASSERT,
|
||||
"a user passphrase and sub passphrase are both required when encrypting");
|
||||
|
||||
# Unencrypted storage but a sub passphrase passed
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile, {bLoad => false,
|
||||
strCipherPassSub => $strCipherPassSub})}, ERROR_ASSERT,
|
||||
"a user passphrase and sub passphrase are both required when encrypting");
|
||||
|
||||
# Create Encrypted storage
|
||||
my $oStorage = new pgBackRest::Storage::Local($self->testPath(), new pgBackRest::Storage::Posix::Driver(),
|
||||
{strCipherType => CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC, strCipherPassUser => $strCipherPass});
|
||||
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile, {oStorage => $oStorage})}, ERROR_CIPHER,
|
||||
"passphrase is required when storage is encrypted");
|
||||
|
||||
$self->testException(sub {new pgBackRest::Common::Ini($strTestFile, {bLoad => false, oStorage => $oStorage,
|
||||
strCipherPass => $strCipherPass})}, ERROR_ASSERT,
|
||||
"a user passphrase and sub passphrase are both required when encrypting");
|
||||
|
||||
$oIni = $self->testResult(sub {
|
||||
new pgBackRest::Common::Ini(
|
||||
$strTestFile,
|
||||
{bLoad => false, oStorage => $oStorage, strCipherPass => $strCipherPass, strCipherPassSub => $strCipherPassSub})},
|
||||
'[object]', 'create new ini with encryption passphrases');
|
||||
$self->testResult(sub {($oIni->cipherPassSub() eq $strCipherPassSub) &&
|
||||
($oIni->cipherPass() eq $strCipherPass)}, true, ' new ini has encryption passphrases');
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
|
||||
@@ -78,199 +78,208 @@ sub run
|
||||
|
||||
my $bS3 = false;
|
||||
|
||||
if ($self->begin("local"))
|
||||
foreach my $bRepoEncrypt (false, true)
|
||||
{
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(true, $self->expect(), {bS3 => $bS3});
|
||||
############################################################################################################################
|
||||
# Pass !$bRepoEncrypt so expect logs are not generated for encryption tests
|
||||
if ($self->begin("local, enc ${bRepoEncrypt}", !$bRepoEncrypt))
|
||||
{
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
$self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
$self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
# Create the test object
|
||||
my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest(
|
||||
$oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self);
|
||||
# Create the test object
|
||||
my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest(
|
||||
$oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self);
|
||||
|
||||
$oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92);
|
||||
$oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Nothing to expire';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Nothing to expire';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246);
|
||||
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest full backup, archive expire falls on segment major boundary';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest full backup, archive expire falls on segment major boundary';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest full backup';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest full backup';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, 256);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, 256);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest diff backup, archive expire does not fall on major segment boundary';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest diff backup, archive expire does not fall on major segment boundary';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, undef, 0);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, undef, 0);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY, undef, 0);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, undef, 0);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest diff backup (cascade to incr)';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire oldest diff backup (cascade to incr)';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire archive based on newest incr backup';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire archive based on newest incr backup';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire diff treating full as diff';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire diff treating full as diff';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 2, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 2, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire diff with retention-archive with warning retention-diff not set';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire diff with retention-archive with warning retention-diff not set';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire full with retention-archive with warning retention-full not set';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire full with retention-archive with warning retention-full not set';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_FULL, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire no archive with warning since retention-archive not set for INCR';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire no archive with warning since retention-archive not set for INCR';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, undef, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 1, 1, CFGOPTVAL_BACKUP_TYPE_INCR, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire no archive with warning since neither retention-archive nor retention-diff is set';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire no archive with warning since neither retention-archive nor retention-diff is set';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Use oldest full backup for archive retention';
|
||||
$oExpireTest->process($self->stanza(), 10, 10, CFGOPTVAL_BACKUP_TYPE_FULL, 10, $strDescription);
|
||||
}
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Use oldest full backup for archive retention';
|
||||
$oExpireTest->process($self->stanza(), 10, 10, CFGOPTVAL_BACKUP_TYPE_FULL, 10, $strDescription);
|
||||
}
|
||||
|
||||
if ($self->begin("Expire::stanzaUpgrade"))
|
||||
{
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(true, $self->expect(), {bS3 => $bS3});
|
||||
############################################################################################################################
|
||||
# Pass !$bRepoEncrypt so expect logs are not generated for encryption tests
|
||||
if ($self->begin("Expire::stanzaUpgrade, enc ${bRepoEncrypt}", !$bRepoEncrypt))
|
||||
{
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
$self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
$self->initStanzaOption($oHostDbMaster->dbBasePath(), $oHostBackup->{strRepoPath}, $oHostS3);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
# Create the test object
|
||||
my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest(
|
||||
$oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self);
|
||||
# Create the test object
|
||||
my $oExpireTest = new pgBackRestTest::Env::ExpireEnvTest(
|
||||
$oHostBackup, $self->backrestExe(), storageRepo(), $self->expect(), $self);
|
||||
|
||||
$oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92);
|
||||
$oExpireTest->stanzaCreate($self->stanza(), PG_VERSION_92);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Create backups in current db version';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Create backups in current db version';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), undef, undef, CFGOPTVAL_BACKUP_TYPE_DIFF, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Upgrade stanza and expire only earliest db backup and archive';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Upgrade stanza and expire only earliest db backup and archive';
|
||||
|
||||
$oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_93);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 3, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
$oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_93);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_INCR, $lBaseTime += SECONDS_PER_DAY, 246);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_DIFF, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 3, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Upgrade the stanza, create full back - earliest db orphaned archive removed and earliest full backup ' .
|
||||
'and archive in previous db version removed';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Upgrade the stanza, create full back - earliest db orphaned archive removed and earliest full backup ' .
|
||||
'and archive in previous db version removed';
|
||||
|
||||
$oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_95);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
$oExpireTest->stanzaUpgrade($self->stanza(), PG_VERSION_95);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire all archive last full backup through pitr';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire all archive last full backup through pitr';
|
||||
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 3, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
$oExpireTest->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY);
|
||||
$oExpireTest->process($self->stanza(), 3, 1, CFGOPTVAL_BACKUP_TYPE_DIFF, 1, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire all archive except for the current database';
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$strDescription = 'Expire all archive except for the current database';
|
||||
|
||||
$oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
$oExpireTest->process($self->stanza(), 2, undef, CFGOPTVAL_BACKUP_TYPE_FULL, undef, $strDescription);
|
||||
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestClear(CFGOPT_DB_TIMEOUT);
|
||||
$self->optionTestClear(CFGOPT_DB_PATH);
|
||||
$self->optionTestClear(CFGOPT_ONLINE);
|
||||
$self->optionTestClear(CFGOPT_PROTOCOL_TIMEOUT);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_FULL, 1);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_DIFF, 1);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_ARCHIVE_TYPE, CFGOPTVAL_BACKUP_TYPE_FULL);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_ARCHIVE, 1);
|
||||
$self->configTestLoad(CFGCMD_EXPIRE);
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestClear(CFGOPT_DB_TIMEOUT);
|
||||
$self->optionTestClear(CFGOPT_DB_PATH);
|
||||
$self->optionTestClear(CFGOPT_ONLINE);
|
||||
$self->optionTestClear(CFGOPT_PROTOCOL_TIMEOUT);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_FULL, 1);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_DIFF, 1);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_ARCHIVE_TYPE, CFGOPTVAL_BACKUP_TYPE_FULL);
|
||||
$self->optionTestSet(CFGOPT_RETENTION_ARCHIVE, 1);
|
||||
$self->configTestLoad(CFGCMD_EXPIRE);
|
||||
|
||||
$strDescription = 'Expiration cannot occur due to info file db mismatch';
|
||||
my $oExpire = new pgBackRest::Expire();
|
||||
$strDescription = 'Expiration cannot occur due to info file db mismatch';
|
||||
my $oExpire = new pgBackRest::Expire();
|
||||
|
||||
# Mismatched version
|
||||
$oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE),
|
||||
{&INFO_ARCHIVE_SECTION_DB =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_SYSTEM_ID => WAL_VERSION_95_SYS_ID},
|
||||
&INFO_ARCHIVE_SECTION_DB_HISTORY =>
|
||||
{'3' =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_ID => WAL_VERSION_95_SYS_ID}}});
|
||||
# Mismatched version
|
||||
$oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE),
|
||||
{&INFO_ARCHIVE_SECTION_DB =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_SYSTEM_ID => WAL_VERSION_95_SYS_ID},
|
||||
&INFO_ARCHIVE_SECTION_DB_HISTORY =>
|
||||
{'3' =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_93, &INFO_ARCHIVE_KEY_DB_ID => WAL_VERSION_95_SYS_ID}}});
|
||||
|
||||
$self->testException(sub {$oExpire->process()},
|
||||
ERROR_FILE_INVALID,
|
||||
"archive and backup database versions do not match\n" .
|
||||
"HINT: has a stanza-upgrade been performed?");
|
||||
$self->testException(sub {$oExpire->process()},
|
||||
ERROR_FILE_INVALID,
|
||||
"archive and backup database versions do not match\n" .
|
||||
"HINT: has a stanza-upgrade been performed?");
|
||||
|
||||
# Restore the info file
|
||||
$oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE));
|
||||
# Restore the info file
|
||||
$oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE));
|
||||
|
||||
# Mismatched system ID
|
||||
$oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE),
|
||||
{&INFO_ARCHIVE_SECTION_DB =>
|
||||
{&INFO_ARCHIVE_KEY_DB_SYSTEM_ID => 6999999999999999999},
|
||||
&INFO_ARCHIVE_SECTION_DB_HISTORY =>
|
||||
{'3' =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_95, &INFO_ARCHIVE_KEY_DB_ID => 6999999999999999999}}});
|
||||
# Mismatched system ID
|
||||
$oHostBackup->infoMunge(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE),
|
||||
{&INFO_ARCHIVE_SECTION_DB =>
|
||||
{&INFO_ARCHIVE_KEY_DB_SYSTEM_ID => 6999999999999999999},
|
||||
&INFO_ARCHIVE_SECTION_DB_HISTORY =>
|
||||
{'3' =>
|
||||
{&INFO_ARCHIVE_KEY_DB_VERSION => PG_VERSION_95, &INFO_ARCHIVE_KEY_DB_ID => 6999999999999999999}}});
|
||||
|
||||
$self->testException(sub {$oExpire->process()},
|
||||
ERROR_FILE_INVALID,
|
||||
"archive and backup database versions do not match\n" .
|
||||
"HINT: has a stanza-upgrade been performed?");
|
||||
$self->testException(sub {$oExpire->process()},
|
||||
ERROR_FILE_INVALID,
|
||||
"archive and backup database versions do not match\n" .
|
||||
"HINT: has a stanza-upgrade been performed?");
|
||||
|
||||
# Restore the info file
|
||||
$oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE));
|
||||
# Restore the info file
|
||||
$oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ use pgBackRest::InfoCommon;
|
||||
use pgBackRest::Manifest;
|
||||
use pgBackRest::Protocol::Helper;
|
||||
use pgBackRest::Protocol::Storage::Helper;
|
||||
use pgBackRest::Storage::Local;
|
||||
|
||||
use pgBackRestTest::Common::ExecuteTest;
|
||||
use pgBackRestTest::Common::RunTest;
|
||||
@@ -34,6 +35,11 @@ use pgBackRestTest::Common::FileTest;
|
||||
use pgBackRestTest::Env::Host::HostBackupTest;
|
||||
use pgBackRestTest::Env::HostEnvTest;
|
||||
|
||||
####################################################################################################################################
|
||||
# initModule
|
||||
####################################################################################################################################
|
||||
use constant STANZA_ENCRYPT => 'encrypt';
|
||||
|
||||
####################################################################################################################################
|
||||
# initModule
|
||||
####################################################################################################################################
|
||||
@@ -45,6 +51,8 @@ sub initModule
|
||||
$self->{strArchivePath} = "$self->{strRepoPath}/archive/" . $self->stanza();
|
||||
$self->{strBackupPath} = "$self->{strRepoPath}/backup/" . $self->stanza();
|
||||
$self->{strDbPath} = $self->testPath() . '/db';
|
||||
$self->{strArchivePathEncrypt} = "$self->{strRepoPath}/archive/" . STANZA_ENCRYPT;
|
||||
$self->{strBackupPathEncrypt} = "$self->{strRepoPath}/backup/" . STANZA_ENCRYPT;
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -70,11 +78,30 @@ sub initTest
|
||||
sub initStanzaCreate
|
||||
{
|
||||
my $self = shift;
|
||||
my $strStanza = shift;
|
||||
my $bEncrypted = shift;
|
||||
my $strDbVersion = shift;
|
||||
|
||||
# Set options for stanzaCreate
|
||||
my $rhConfig = $self->configTestClear();
|
||||
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
if (!defined($strStanza))
|
||||
{
|
||||
$strStanza = $self->stanza();
|
||||
}
|
||||
|
||||
if (defined($bEncrypted) && $bEncrypted == true)
|
||||
{
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
}
|
||||
|
||||
if (!defined($strDbVersion))
|
||||
{
|
||||
$strDbVersion = PG_VERSION_94;
|
||||
}
|
||||
|
||||
$self->optionTestSet(CFGOPT_STANZA, $strStanza);
|
||||
$self->optionTestSet(CFGOPT_DB_PATH, $self->{strDbPath});
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->{strRepoPath});
|
||||
$self->optionTestSet(CFGOPT_LOG_PATH, $self->testPath());
|
||||
@@ -85,9 +112,16 @@ sub initStanzaCreate
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
$self->configTestSet($rhConfig);
|
||||
|
||||
my $oTestObject = "oExpireTest";
|
||||
|
||||
# Create the test object
|
||||
$self->{oExpireTest} = new pgBackRestTest::Env::ExpireEnvTest(undef, $self->backrestExe(), storageRepo(), undef, $self);
|
||||
$self->{oExpireTest}->stanzaCreate($self->stanza(), PG_VERSION_94);
|
||||
if (defined($bEncrypted) && $bEncrypted == true)
|
||||
{
|
||||
$oTestObject = "oExpireTestEncrypt";
|
||||
}
|
||||
|
||||
$self->{$oTestObject} = new pgBackRestTest::Env::ExpireEnvTest(undef, $self->backrestExe(), storageRepo(), undef, $self);
|
||||
$self->{$oTestObject}->stanzaCreate($strStanza, $strDbVersion);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -128,6 +162,9 @@ sub run
|
||||
use constant SECONDS_PER_DAY => 86400;
|
||||
my $lBaseTime = 1486137448 - (60 * SECONDS_PER_DAY);
|
||||
|
||||
# Create the initial backup "day" number - backup day is incremented for each backup
|
||||
my $iLastBackup = 5;
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Info"))
|
||||
{
|
||||
@@ -229,21 +266,17 @@ sub run
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->{strRepoPath});
|
||||
$self->configTestLoad(CFGCMD_INFO);
|
||||
|
||||
# Create archive info paths but no archive info
|
||||
storageTest()->pathCreate($self->{strArchivePath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
# Create archive and backup paths but no info files
|
||||
storageTest()->pathCreate("$self->{strRepoPath}/archive/" . BOGUS, {bIgnoreExists => true, bCreateParent => true});
|
||||
|
||||
# Create backup info paths but no backup info
|
||||
storageTest()->pathCreate($self->{strBackupPath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
storageTest()->pathCreate("$self->{strRepoPath}/backup/" . BOGUS, {bIgnoreExists => true, bCreateParent => true});
|
||||
|
||||
# Get a list of all stanzas in the repo
|
||||
$hyStanza = $oInfo->stanzaList();
|
||||
|
||||
$self->testResult(sub {$oInfo->formatText($hyStanza)},
|
||||
"stanza: bogus\n status: error (no valid backups)\n\n" .
|
||||
"stanza: db\n status: error (no valid backups)\n",
|
||||
'fomatText() multiple stanzas');
|
||||
"stanza: bogus\n status: error (missing stanza data)\n\n" .
|
||||
"stanza: db\n status: error (missing stanza data)\n",
|
||||
'fomatText() multiple stanzas missing data');
|
||||
|
||||
# Define the stanza option
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -258,6 +291,12 @@ sub run
|
||||
$self->initStanzaCreate();
|
||||
$self->configTestLoad(CFGCMD_INFO);
|
||||
|
||||
$self->testResult(sub {$oInfo->formatText($oInfo->stanzaList())},
|
||||
"stanza: bogus\n status: error (missing stanza data)\n\n" .
|
||||
"stanza: db\n status: error (no valid backups)\n\n" .
|
||||
" db (current)\n wal archive min/max (9.4-1): none present\n",
|
||||
"formatText() multiple stanzas, one missing data");
|
||||
|
||||
$hyStanza = $oInfo->stanzaList($self->stanza());
|
||||
$self->testResult(sub {$oInfo->formatText($hyStanza)},
|
||||
"stanza: db\n status: error (no valid backups)\n\n" .
|
||||
@@ -352,6 +391,79 @@ sub run
|
||||
PG_VERSION_94, WAL_VERSION_94_SYS_ID)},
|
||||
"{database => {id => 2}, id => 9.5-2, max => 000000010000000000000003, min => 000000010000000000000000}",
|
||||
'archive, db-ver mismatch, db-sys-id mismatch');
|
||||
|
||||
# Set last backup run in this test set
|
||||
$iLastBackup = 8;
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Info - encryption"))
|
||||
{
|
||||
# create an unencrypted and an encrypted repo and run a backup in each
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$self->initStanzaCreate();
|
||||
$self->{oExpireTest}->backupCreate($self->stanza(), CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY, -1, -1);
|
||||
$iLastBackup++;
|
||||
my $strUnencryptBackup = ($iLastBackup < 10) ? "0$iLastBackup" : $iLastBackup;
|
||||
|
||||
$self->initStanzaCreate(STANZA_ENCRYPT, true);
|
||||
$self->{oExpireTestEncrypt}->backupCreate(STANZA_ENCRYPT, CFGOPTVAL_BACKUP_TYPE_FULL, $lBaseTime += SECONDS_PER_DAY, -1, -1);
|
||||
$iLastBackup++;
|
||||
my $strEncryptBackup = ($iLastBackup < 10) ? "0$iLastBackup" : $iLastBackup;;
|
||||
|
||||
# Clear the main storage repo settings
|
||||
storageRepoCacheClear(STORAGE_REPO);
|
||||
|
||||
# Clear the stanza setting and set the main storage repo basePath to the testing repo path
|
||||
$self->optionTestClear(CFGOPT_STANZA);
|
||||
$self->optionTestSet(CFGOPT_REPO_PATH, $self->{strRepoPath});
|
||||
|
||||
# Recreate the main storage repo with default unencrypted repo setting and test basePath
|
||||
storageRepo();
|
||||
|
||||
# Test the info command without option --stanza being configured
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$self->configTestLoad(CFGCMD_INFO);
|
||||
my $oInfo = new pgBackRest::Info();
|
||||
|
||||
$self->testException(sub {$oInfo->stanzaList()}, ERROR_CIPHER,
|
||||
"unable to parse '" . $self->{strBackupPathEncrypt} . "/backup.info'" .
|
||||
"\nHINT: Is or was the repo encrypted?" .
|
||||
"\nHINT: use option --stanza if encryption settings are different for the stanza than the global settings");
|
||||
|
||||
# Test the info command with option --stanza configured
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestSet(CFGOPT_STANZA, $self->stanza());
|
||||
$self->configTestLoad(CFGCMD_INFO);
|
||||
|
||||
$self->testResult(sub {$oInfo->formatText($oInfo->stanzaList($self->stanza()))},
|
||||
"stanza: db\n status: ok\n\n db (current)\n wal archive min/max (9.4-1): none present\n\n" .
|
||||
" full backup: 201612" . $strUnencryptBackup . "-155728F\n" .
|
||||
" timestamp start/stop: 2016-12-" . $strUnencryptBackup . " 15:57:28 / 2016-12-" . $strUnencryptBackup .
|
||||
" 15:57:28\n" .
|
||||
" wal start/stop: n/a\n database size: 0B, backup size: 0B\n" .
|
||||
" repository size: 0B, repository backup size: 0B\n",
|
||||
"formatText() unencrypted stanza");
|
||||
|
||||
$self->optionTestSet(CFGOPT_STANZA, STANZA_ENCRYPT);
|
||||
$self->configTestLoad(CFGCMD_INFO);
|
||||
|
||||
$self->testResult(sub {$oInfo->formatText($oInfo->stanzaList(STANZA_ENCRYPT))},
|
||||
"stanza: " . STANZA_ENCRYPT ."\n status: ok\n\n db (current)" .
|
||||
"\n wal archive min/max (9.4-1): none present\n\n" .
|
||||
" full backup: 201612" . $strEncryptBackup . "-155728F\n" .
|
||||
" timestamp start/stop: 2016-12-" . $strEncryptBackup . " 15:57:28 / 2016-12-" . $strEncryptBackup .
|
||||
" 15:57:28\n" .
|
||||
" wal start/stop: n/a\n database size: 0B, backup size: 0B\n" .
|
||||
" repository size: 0B, repository backup size: 0B\n",
|
||||
"formatText() encrypted stanza");
|
||||
|
||||
# Change the permissions of the backup file so it cannot be read and confirm correct error reported
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageMode(
|
||||
storageRepo({strStanza => STANZA_ENCRYPT}), $self->{strBackupPathEncrypt} . "/backup.inf*", '220');
|
||||
$self->testException(sub {$oInfo->backupList(STANZA_ENCRYPT)}, ERROR_FILE_OPEN,
|
||||
"unable to open '" . $self->{strBackupPathEncrypt} . "/backup.info': Permission denied");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,12 +63,14 @@ sub run
|
||||
{
|
||||
foreach my $bRemote ($bS3 ? (true) : (false, true))
|
||||
{
|
||||
my $bRepoEncrypt = $bS3 ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}")) {next}
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bRepoEncrypt}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
# Reduce log level for many tests
|
||||
my $strLogReduced = '--' . cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) . '=' . lc(DETAIL);
|
||||
@@ -102,6 +104,11 @@ sub run
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_HARDLINK} = JSON::PP::false;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_OPTION}{&MANIFEST_KEY_ONLINE} = JSON::PP::false;
|
||||
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
$oManifest{&INI_SECTION_CIPHER}{&INI_KEY_CIPHER_PASS} = 'REPLACEME';
|
||||
}
|
||||
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CATALOG} = 201409291;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_CONTROL} = 942;
|
||||
$oManifest{&MANIFEST_SECTION_BACKUP_DB}{&MANIFEST_KEY_SYSTEM_ID} = 6353949018581704918;
|
||||
@@ -916,9 +923,23 @@ sub run
|
||||
$strType = CFGOPTVAL_BACKUP_TYPE_INCR;
|
||||
$oHostDbMaster->manifestReference(\%oManifest, $strBackup);
|
||||
|
||||
# Delete the backup.info and make sure the backup fails - the user must then run a stanza-create --force
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
# Delete the backup.info and make sure the backup fails - the user must then run a stanza-create --force. If backup.info is
|
||||
# encrypted is cannot be deleted, so copy it to old instead.
|
||||
my $strBackupInfoFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO;
|
||||
my $strBackupInfoCopyFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT;
|
||||
my $strBackupInfoOldFile = "${strBackupInfoFile}.old";
|
||||
my $strBackupInfoCopyOldFile = "${strBackupInfoCopyFile}.old";
|
||||
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
forceStorageMove(storageRepo(), $strBackupInfoFile, $strBackupInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoCopyFile, $strBackupInfoCopyOldFile, {bRecurse => false});
|
||||
}
|
||||
else
|
||||
{
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoCopyFile);
|
||||
}
|
||||
|
||||
$oHostDbMaster->manifestFileCreate(
|
||||
\%oManifest, MANIFEST_TARGET_PGDATA, 'base/16384/17000', 'BASEUPDT', '9a53d532e27785e681766c98516a5e93f096a501',
|
||||
@@ -934,15 +955,18 @@ sub run
|
||||
# Fail on attempt to create the stanza data since force was not used
|
||||
$oHostBackup->stanzaCreate('fail on backup directory missing backup.info',
|
||||
{iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Use force to create the stanza
|
||||
$oHostBackup->stanzaCreate('create required data for stanza',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
else
|
||||
|
||||
# Use force to create the stanza (this is expected to fail for encrypted repos)
|
||||
$oHostBackup->stanzaCreate('create required data for stanza',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE),
|
||||
iExpectedExitStatus => $bRepoEncrypt ? ERROR_FILE_MISSING : undef});
|
||||
|
||||
# Copy encrypted backup info files back so testing can proceed
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
$oHostBackup->stanzaCreate('create required data for stanza',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoOldFile, $strBackupInfoFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoCopyOldFile, $strBackupInfoCopyFile, {bRecurse => false});
|
||||
}
|
||||
|
||||
# Perform the backup
|
||||
@@ -1153,7 +1177,7 @@ sub run
|
||||
# because for some reason sort order is different when this command is executed via ssh (even though the content of the
|
||||
# directory is identical).
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
if (!$bRemote)
|
||||
if (!$bRemote && !$bS3)
|
||||
{
|
||||
executeTest('ls -1R ' . storageRepo()->pathGet('backup/' . $self->stanza() . '/' . PATH_BACKUP_HISTORY),
|
||||
{oLogTest => $self->expect(), bRemote => $bRemote});
|
||||
|
||||
@@ -83,12 +83,14 @@ sub run
|
||||
{
|
||||
foreach my $bRemote ($bS3 ? (true) : (false, true))
|
||||
{
|
||||
my $bRepoEncrypt = !$bRemote && !$bS3 ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}")) {next}
|
||||
if (!$self->begin("rmt ${bRemote}, s3 ${bS3}, enc ${bRepoEncrypt}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bCompress => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
# Reduce console logging to detail
|
||||
$oHostDbMaster->configUpdate({&CFGDEF_SECTION_GLOBAL => {cfgOptionName(CFGOPT_LOG_LEVEL_CONSOLE) => lc(DETAIL)}});
|
||||
|
||||
@@ -40,16 +40,29 @@ sub run
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Archive and backup info file names
|
||||
my $strArchiveInfoFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE;
|
||||
my $strArchiveInfoCopyFile = STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT;
|
||||
my $strArchiveInfoOldFile = "${strArchiveInfoFile}.old";
|
||||
my $strArchiveInfoCopyOldFile = "${strArchiveInfoCopyFile}.old";
|
||||
|
||||
my $strBackupInfoFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO;
|
||||
my $strBackupInfoCopyFile = STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT;
|
||||
my $strBackupInfoOldFile = "${strBackupInfoFile}.old";
|
||||
my $strBackupInfoCopyOldFile = "${strBackupInfoCopyFile}.old";
|
||||
|
||||
foreach my $bS3 (false, true)
|
||||
{
|
||||
foreach my $bRemote ($bS3 ? (false) : (false, true))
|
||||
{
|
||||
my $bRepoEncrypt = $bRemote && !$bS3 ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
if (!$self->begin("remote $bRemote, s3 $bS3")) {next}
|
||||
if (!$self->begin("remote $bRemote, s3 $bS3, enc ${bRepoEncrypt}")) {next}
|
||||
|
||||
# Create hosts, file object, and config
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3});
|
||||
true, $self->expect(), {bHostBackup => $bRemote, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
# Create the stanza
|
||||
$oHostBackup->stanzaCreate('fail on missing control file', {iExpectedExitStatus => ERROR_FILE_OPEN,
|
||||
@@ -72,9 +85,28 @@ sub run
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->stanzaCreate('successfully create the stanza', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Rerun stanza-create and confirm success without the need to use force on empty directories
|
||||
# Rerun stanza-create and confirm failure - need use force since archive.info and backup.info exist
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->stanzaCreate(
|
||||
'successful rerun of stanza-create', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
'fail on rerun of stanza-create - info files exist',
|
||||
{iExpectedExitStatus => ERROR_PATH_NOT_EMPTY, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Stanza Create fails when not using force - database mismatch with pg_control file
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Change the database version by copying a new pg_control file
|
||||
storageDb()->remove($oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
storageDb()->copy(
|
||||
$self->dataPath() . '/backup.pg_control_' . WAL_VERSION_94 . '.bin',
|
||||
$oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
|
||||
$oHostBackup->stanzaCreate('fail on database mismatch without force option',
|
||||
{iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Restore pg_control
|
||||
storageDb()->remove($oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
storageDb()->copy(
|
||||
$self->dataPath() . '/backup.pg_control_' . WAL_VERSION_93 . '.bin',
|
||||
$oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
|
||||
# Perform a stanza upgrade which will indicate already up to date
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -93,11 +125,23 @@ sub run
|
||||
$oHostDbMaster->executeSimple($strCommand . " ${strSourceFile}", {oLogTest => $self->expect()});
|
||||
|
||||
# With data existing in the archive dir, remove the info files and confirm failure
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT);
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoFile, $strArchiveInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoCopyFile, $strArchiveInfoCopyOldFile, {bRecurse => false});
|
||||
}
|
||||
else
|
||||
{
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoCopyFile);
|
||||
}
|
||||
|
||||
$oHostBackup->stanzaCreate('fail on archive info file missing from non-empty dir',
|
||||
{iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
|
||||
$oHostBackup->stanzaCreate('fail on archive info file missing from non-empty dir',
|
||||
{iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
}
|
||||
|
||||
# Stanza Create fails using force - failure to unzip compressed file
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -126,87 +170,72 @@ sub run
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Force creation of archive info from the gz file
|
||||
$oHostBackup->stanzaCreate('force create archive.info from gz file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE),
|
||||
iExpectedExitStatus => $bRepoEncrypt ? ERROR_FILE_MISSING : undef});
|
||||
|
||||
# Rerun without the force to ensure the format is still valid - this will hash check the info files and indicate the
|
||||
# stanza already exists
|
||||
$oHostBackup->stanzaCreate('repeat create', {strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Stanza Create fails when not using force - hash check failure
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Munge and save the archive info file
|
||||
$oHostBackup->infoMunge(
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE),
|
||||
{&INFO_BACKUP_SECTION_DB => {&INFO_BACKUP_KEY_DB_VERSION => '8.0'}});
|
||||
|
||||
$oHostBackup->stanzaCreate('hash check fails requiring force',
|
||||
{iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
$oHostBackup->stanzaCreate('use force to overwrite the invalid file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
|
||||
# Cleanup the global hash but don't save the file (permission issues may prevent it anyway)
|
||||
$oHostBackup->infoRestore(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE), false);
|
||||
|
||||
# Stanza Create fails when not using force - database mismatch with pg_control file
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Change the database version by copying a new pg_control file
|
||||
storageDb()->remove($oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
storageDb()->copy(
|
||||
$self->dataPath() . '/backup.pg_control_' . WAL_VERSION_94 . '.bin',
|
||||
$oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
|
||||
$oHostBackup->stanzaCreate('fail on database mismatch without force option',
|
||||
{iExpectedExitStatus => ERROR_FILE_INVALID, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Restore pg_control
|
||||
storageDb()->remove($oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
storageDb()->copy(
|
||||
$self->dataPath() . '/backup.pg_control_' . WAL_VERSION_93 . '.bin',
|
||||
$oHostDbMaster->dbBasePath() . '/' . DB_FILE_PGCONTROL);
|
||||
# Rerun without the force to ensure the files exist
|
||||
$oHostBackup->stanzaCreate('repeat create - error that files exist',
|
||||
{iExpectedExitStatus => $bRepoEncrypt ? ERROR_FILE_MISSING : ERROR_PATH_NOT_EMPTY,
|
||||
strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
|
||||
# Stanza Create succeeds when using force - recreates archive.info from uncompressed archive file
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Unzip the archive file and recreate the archive.info file from it
|
||||
my $strArchiveTest = PG_VERSION_93 . "-1/${strArchiveFile}-f5035e2c3b83a9c32660f959b23451e78f7438f7";
|
||||
|
||||
forceStorageMode(
|
||||
storageRepo(), dirname(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/${strArchiveTest}.gz")), 'g+w',
|
||||
{bRecursive => true});
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
forceStorageMode(
|
||||
storageRepo(), dirname(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/${strArchiveTest}.gz")), 'g+w',
|
||||
{bRecursive => true});
|
||||
|
||||
storageRepo()->copy(
|
||||
storageRepo()->openRead(
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveTest}.gz",
|
||||
{rhyFilter => [{strClass => STORAGE_FILTER_GZIP, rxyParam => [{strCompressType => STORAGE_DECOMPRESS}]}]}),
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveTest}");
|
||||
storageRepo()->copy(
|
||||
storageRepo()->openRead(
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveTest}.gz",
|
||||
{rhyFilter => [{strClass => STORAGE_FILTER_GZIP, rxyParam => [{strCompressType => STORAGE_DECOMPRESS}]}]}),
|
||||
STORAGE_REPO_ARCHIVE . "/${strArchiveTest}");
|
||||
|
||||
$oHostBackup->stanzaCreate('force create archive.info from uncompressed file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
$oHostBackup->stanzaCreate('force create archive.info from uncompressed file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
|
||||
# Stanza Create succeeds when using force - missing archive file
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Remove the uncompressed WAL archive file and archive.info
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . "/${strArchiveTest}");
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT);
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . "/${strArchiveTest}");
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoCopyFile);
|
||||
|
||||
$oHostBackup->stanzaCreate('force with missing WAL archive file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
$oHostBackup->stanzaCreate('force with missing WAL archive file',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
|
||||
# Stanza Create succeeds when using force - missing archive directory
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Remove the WAL archive directory
|
||||
forceStorageRemove(
|
||||
storageRepo(),
|
||||
STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_93 . '-1/' . substr($strArchiveFile, 0, 16), {bRecurse => true});
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT);
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
forceStorageRemove(
|
||||
storageRepo(),
|
||||
STORAGE_REPO_ARCHIVE . qw{/} . PG_VERSION_93 . '-1/' . substr($strArchiveFile, 0, 16), {bRecurse => true});
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoCopyFile);
|
||||
|
||||
$oHostBackup->stanzaCreate('force with missing WAL archive directory',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
$oHostBackup->stanzaCreate('force with missing WAL archive directory',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
|
||||
# Fail on archive push due to mismatch of DB since stanza not upgraded
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Encrypted info files could not be reconstructed above so just copy them back
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoOldFile, $strArchiveInfoFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strArchiveInfoCopyOldFile, $strArchiveInfoCopyFile, {bRecurse => false});
|
||||
}
|
||||
|
||||
my $strArchiveTestFile = $self->dataPath() . '/backup.wal1_';
|
||||
|
||||
# Upgrade the DB by copying new pg_control
|
||||
@@ -235,19 +264,25 @@ sub run
|
||||
# Create a DB history mismatch between the info files
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
# Remove the archive info file and force reconstruction
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE . INI_COPY_EXT);
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoCopyFile);
|
||||
|
||||
$oHostBackup->stanzaCreate('use force to recreate the stanza producing mismatched info history but same current db-id',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
$oHostBackup->stanzaCreate('use force to recreate the stanza producing mismatched info history but same current db-id',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
|
||||
# Create a DB-ID mismatch between the info files
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoCopyFile);
|
||||
|
||||
$oHostBackup->stanzaCreate('use force to recreate the stanza producing mismatched db-id',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
$oHostBackup->stanzaCreate('use force to recreate the stanza producing mismatched db-id',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
}
|
||||
|
||||
# Confirm successful backup at db-1 although archive at db-2
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -259,8 +294,16 @@ sub run
|
||||
|
||||
# Stanza Create fails when not using force - no backup.info but backup exists
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
forceStorageMove(storageRepo(), $strBackupInfoFile, $strBackupInfoOldFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoCopyFile, $strBackupInfoCopyOldFile, {bRecurse => false});
|
||||
}
|
||||
else
|
||||
{
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile);
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoCopyFile);
|
||||
}
|
||||
|
||||
$oHostBackup->stanzaCreate('fail no force to recreate the stanza from backups',
|
||||
{iExpectedExitStatus => ERROR_FILE_MISSING, strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE)});
|
||||
@@ -268,7 +311,15 @@ sub run
|
||||
# Stanza Create succeeds using force - reconstruct backup.info from backup
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->stanzaCreate('use force to recreate the stanza from backups',
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
{strOptionalParam => '--no-' . cfgOptionName(CFGOPT_ONLINE) . ' --' . cfgOptionName(CFGOPT_FORCE),
|
||||
iExpectedExitStatus => $bRepoEncrypt ? ERROR_FILE_MISSING : undef});
|
||||
|
||||
# Encrypted info files could not be reconstructed above so just copy them back
|
||||
if ($bRepoEncrypt)
|
||||
{
|
||||
forceStorageMove(storageRepo(), $strBackupInfoOldFile, $strBackupInfoFile, {bRecurse => false});
|
||||
forceStorageMove(storageRepo(), $strBackupInfoCopyOldFile, $strBackupInfoCopyFile, {bRecurse => false});
|
||||
}
|
||||
|
||||
# Test archive dir version XX.Y-Z ensuring sort order of db ids is reconstructed correctly from the directory db-id value
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -276,8 +327,10 @@ sub run
|
||||
forceStorageMode(storageRepo(), STORAGE_REPO_ARCHIVE, '770');
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . '/10.0-3/0000000100000001', {bCreateParent => true});
|
||||
storageRepo()->copy(
|
||||
storageDb()->openRead($self->dataPath() . '/backup.wal1_' . WAL_VERSION_92 . '.bin'),
|
||||
STORAGE_REPO_ARCHIVE . '/10.0-3/0000000100000001/000000010000000100000001');
|
||||
storageDb()->openRead($strArchiveTestFile . WAL_VERSION_92 . '.bin'),
|
||||
storageRepo()->openWrite(
|
||||
STORAGE_REPO_ARCHIVE . '/10.0-3/0000000100000001/000000010000000100000001',
|
||||
{strCipherPass => $oHostBackup->cipherPassArchive()}));
|
||||
forceStorageOwner(storageRepo(), STORAGE_REPO_ARCHIVE . '/10.0-3', $oHostBackup->userGet(), {bRecurse => true});
|
||||
|
||||
# Copy pg_control for 9.5
|
||||
|
||||
@@ -56,10 +56,12 @@ sub run
|
||||
$bS3 || $bHostBackup ? (HOST_BACKUP) : $bHostStandby ? (HOST_DB_MASTER, HOST_DB_STANDBY) : (HOST_DB_MASTER))
|
||||
{
|
||||
my $bCompress = $bHostBackup && !$bHostStandby;
|
||||
my $bRepoEncrypt = ($bCompress && !$bS3) ? true : false;
|
||||
|
||||
# Increment the run, log, and decide whether this unit test should be run
|
||||
next if (!$self->begin(
|
||||
"bkp ${bHostBackup}, sby ${bHostStandby}, dst ${strBackupDestination}, cmp ${bCompress}, s3 ${bS3}",
|
||||
"bkp ${bHostBackup}, sby ${bHostStandby}, dst ${strBackupDestination}, cmp ${bCompress}, s3 ${bS3}, " .
|
||||
"enc ${bRepoEncrypt}",
|
||||
$self->pgVersion() eq PG_VERSION_96));
|
||||
|
||||
# Skip when s3 and host backup tests when there is more than one version of pg being tested and this is not the last one
|
||||
@@ -91,10 +93,7 @@ sub run
|
||||
my ($oHostDbMaster, $oHostDbStandby, $oHostBackup, $oHostS3) = $self->setup(
|
||||
false, $self->expect(),
|
||||
{bHostBackup => $bHostBackup, bStandby => $bHostStandby, strBackupDestination => $strBackupDestination,
|
||||
bCompress => $bCompress, bArchiveAsync => false, bS3 => $bS3});
|
||||
|
||||
# Create a manifest with the pg version to get version-specific paths
|
||||
my $oManifest = new pgBackRest::Manifest(BOGUS, {bLoad => false, strDbVersion => $self->pgVersion()});
|
||||
bCompress => $bCompress, bArchiveAsync => false, bS3 => $bS3, bRepoEncrypt => $bRepoEncrypt});
|
||||
|
||||
# Only perform extra tests on certain runs to save time
|
||||
my $bTestLocal = $self->runCurrent() == 1;
|
||||
@@ -114,6 +113,14 @@ sub run
|
||||
# Create the stanza
|
||||
$oHostBackup->stanzaCreate('main create stanza info files');
|
||||
|
||||
# Get passphrase to access the Manifest file from backup.info - returns undefined if repo not encrypted
|
||||
my $strCipherPass =
|
||||
(new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP)))->cipherPassSub();
|
||||
|
||||
# Create a manifest with the pg version to get version-specific paths
|
||||
my $oManifest = new pgBackRest::Manifest(BOGUS, {bLoad => false, strDbVersion => $self->pgVersion(),
|
||||
strCipherPass => $strCipherPass, strCipherPassSub => $bRepoEncrypt ? ENCRYPTION_KEY_BACKUPSET : undef});
|
||||
|
||||
# Static backup parameters
|
||||
my $fTestDelay = 1;
|
||||
|
||||
@@ -295,12 +302,15 @@ sub run
|
||||
{iExpectedExitStatus => ERROR_PATH_NOT_EMPTY});
|
||||
}
|
||||
|
||||
# Force the backup.info file to be recreated
|
||||
$oHostBackup->stanzaCreate('verify success with force', {strOptionalParam => ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
# Force the backup.info file to be recreated
|
||||
$oHostBackup->stanzaCreate('verify success with force', {strOptionalParam => ' --' . cfgOptionName(CFGOPT_FORCE)});
|
||||
|
||||
# Remove the backup info file
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
# Remove the backup info file
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO);
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT);
|
||||
}
|
||||
|
||||
# Change the database version by copying a new pg_control file to a new db-path to use for db mismatch test
|
||||
storageDb()->pathCreate(
|
||||
@@ -319,10 +329,19 @@ sub run
|
||||
$oHostDbMaster->dbPath() . '/testbase/' . DB_FILE_PGCONTROL);
|
||||
}
|
||||
|
||||
# Run stanza-create online to confirm proper handling of configValidation error against new db-path
|
||||
$oHostBackup->stanzaCreate('fail on database mismatch with directory',
|
||||
{strOptionalParam => ' --' . $oHostBackup->optionIndexName(CFGOPT_DB_PATH, 1) . '=' . $oHostDbMaster->dbPath() .
|
||||
'/testbase/', iExpectedExitStatus => ERROR_DB_MISMATCH});
|
||||
if (!$bRepoEncrypt)
|
||||
{
|
||||
# Run stanza-create online to confirm proper handling of configValidation error against new db-path
|
||||
$oHostBackup->stanzaCreate('fail on database mismatch with directory',
|
||||
{strOptionalParam => ' --' . $oHostBackup->optionIndexName(CFGOPT_DB_PATH, 1) . '=' . $oHostDbMaster->dbPath() .
|
||||
'/testbase/', iExpectedExitStatus => ERROR_DB_MISMATCH});
|
||||
}
|
||||
# If encrypted, need to clean out repo and recreate
|
||||
else
|
||||
{
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP, {bRecurse => true});
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_ARCHIVE, {bRecurse => true});
|
||||
}
|
||||
|
||||
# Stanza Upgrade - tests configValidate code - all other tests in synthetic integration tests
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,8 +22,10 @@ use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Ini;
|
||||
use pgBackRest::Common::Lock;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Common::String;
|
||||
use pgBackRest::Config::Config;
|
||||
use pgBackRest::DbVersion;
|
||||
use pgBackRest::InfoCommon;
|
||||
use pgBackRest::Manifest;
|
||||
use pgBackRest::Protocol::Helper;
|
||||
use pgBackRest::Stanza;
|
||||
@@ -88,6 +90,9 @@ sub run
|
||||
$self->optionTestSet(CFGOPT_DB_TIMEOUT, 5);
|
||||
$self->optionTestSet(CFGOPT_PROTOCOL_TIMEOUT, 6);
|
||||
|
||||
my $iDbControl = 942;
|
||||
my $iDbCatalog = 201409291;
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Stanza::new"))
|
||||
{
|
||||
@@ -154,7 +159,7 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), STORAGE_REPO_BACKUP . "/12345", {bRecurse => true});
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true}))->create(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID, '942', '201409291', true);
|
||||
WAL_VERSION_94_SYS_ID, $iDbControl, $iDbCatalog, true);
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_FILE_MISSING,
|
||||
"archive information missing" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
@@ -169,53 +174,233 @@ sub run
|
||||
"backup information missing" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
|
||||
# No force. Valid archive.info exists. Invalid backup.info exists.
|
||||
# No force. archive.info DB mismatch. backup.info correct DB.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false))->create(PG_VERSION_94, WAL_VERSION_93_SYS_ID, '942',
|
||||
'201409291', true);
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile . "*");
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile . "*");
|
||||
(new pgBackRest::Archive::Info($self->{strArchivePath}, false, {bIgnoreMissing => true}))->create(PG_VERSION_93,
|
||||
WAL_VERSION_93_SYS_ID, true);
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true}))->create(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID, $iDbControl, $iDbCatalog, true);
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_FILE_INVALID,
|
||||
"backup info file invalid" .
|
||||
"\nHINT: use stanza-upgrade if the database has been upgraded or use --force");
|
||||
"backup info file or archive info file invalid\n" .
|
||||
"HINT: use stanza-upgrade if the database has been upgraded or use --force");
|
||||
|
||||
# No force. Invalid archive.info exists. Invalid backup.info exists.
|
||||
# No force. archive.info DB mismatch. backup.info DB mismatch.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
(new pgBackRest::Archive::Info($self->{strArchivePath}, false))->create(PG_VERSION_94, WAL_VERSION_93_SYS_ID, true);
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile . "*");
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true}))->create(PG_VERSION_93,
|
||||
WAL_VERSION_93_SYS_ID, $iDbControl, $iDbCatalog, true);
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_FILE_INVALID,
|
||||
"archive info file invalid" .
|
||||
"\nHINT: use stanza-upgrade if the database has been upgraded or use --force");
|
||||
"backup info file or archive info file invalid\n" .
|
||||
"HINT: use stanza-upgrade if the database has been upgraded or use --force");
|
||||
|
||||
# Create stanza without force
|
||||
# No force. Create stanza.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile . "*");
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile . "*");
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza without force');
|
||||
|
||||
# Create stanza successfully with .info and .info.copy files already existing
|
||||
# No force with .info and .info.copy files already existing
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza without force with existing info files');
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"backup directory and/or archive directory not empty" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
|
||||
# Remove only backup.info.copy file - confirm stanza create does not throw an error
|
||||
# No force. Remove only backup.info.copy file - confirm stanza create still throws an error since force was not used
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFileCopy);
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'no error on missing copy file');
|
||||
$self->testResult(sub {storageRepo()->exists($strBackupInfoFile) &&
|
||||
!storageRepo()->exists($strBackupInfoFileCopy)},
|
||||
true, ' and only backup.info exists');
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"backup directory and/or archive directory not empty" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
|
||||
# Force on, Repo-Sync off. Archive dir empty. No archive.info file. Backup directory not empty. No backup.info file.
|
||||
# Force on. Valid archive.info exists. Invalid backup.info exists.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestSetBool(CFGOPT_FORCE, true);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile . "*");
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true}))->create(PG_VERSION_94,
|
||||
WAL_VERSION_93_SYS_ID, $iDbControl, $iDbCatalog, true);
|
||||
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza with force and existing info files');
|
||||
$self->testResult(sub {(new pgBackRest::Backup::Info($self->{strBackupPath}))->check(PG_VERSION_94,
|
||||
$iDbControl, $iDbCatalog, WAL_VERSION_94_SYS_ID)}, 2, ' backup.info reconstructed');
|
||||
|
||||
# Force on, Repo-Sync off. Archive dir empty. No archive.info file. Backup directory not empty. No backup.info file.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), $strBackupInfoFile . "*");
|
||||
forceStorageRemove(storageRepo(), $strArchiveInfoFile . "*");
|
||||
storageRepo()->pathCreate(STORAGE_REPO_BACKUP . "/12345");
|
||||
$oStanza = new pgBackRest::Stanza();
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza with force');
|
||||
$self->testResult(sub {(new pgBackRest::Archive::Info($self->{strArchivePath}))->check(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID) && (new pgBackRest::Backup::Info($self->{strBackupPath}))->check(PG_VERSION_94, '942',
|
||||
'201409291', WAL_VERSION_94_SYS_ID)}, 1, ' new info files correct');
|
||||
WAL_VERSION_94_SYS_ID) && (new pgBackRest::Backup::Info($self->{strBackupPath}))->check(PG_VERSION_94, $iDbControl,
|
||||
$iDbCatalog, WAL_VERSION_94_SYS_ID)}, 1, ' new info files correct');
|
||||
forceStorageRemove(storageRepo(), storageRepo()->pathGet(STORAGE_REPO_BACKUP . "/12345"), {bRecurse => true});
|
||||
|
||||
# Force on. Attempt to change encryption on the repo
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Create unencrypted archive file
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1");
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1/0000000100000001");
|
||||
my $strArchiveIdPath = storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1");
|
||||
my $strArchivedFile = storageRepo()->pathGet($strArchiveIdPath .
|
||||
"/0000000100000001/000000010000000100000001-1e34fa1c833090d94b9bb14f2a8d3153dca6ea27");
|
||||
executeTest('cp ' . $self->dataPath() . "/filecopy.archive2.bin ${strArchivedFile}");
|
||||
|
||||
# Create unencrypted backup manifest file
|
||||
my $strBackupLabel = timestampFileFormat(undef, 1482000000) . 'F';
|
||||
my $strBackupPath = storageRepo->pathGet(STORAGE_REPO_BACKUP . "/${strBackupLabel}");
|
||||
|
||||
my $strBackupManifestFile = "$strBackupPath/" . FILE_MANIFEST;
|
||||
my $oBackupManifest = new pgBackRest::Manifest($strBackupManifestFile, {bLoad => false, strDbVersion => PG_VERSION_94});
|
||||
storageRepo()->pathCreate($strBackupPath);
|
||||
$oBackupManifest->save();
|
||||
|
||||
# Get the unencrypted content for later encryption
|
||||
my $tUnencryptedArchiveContent = ${storageRepo()->get($strArchivedFile)};
|
||||
my $tUnencryptedBackupContent = ${storageRepo()->get($strBackupManifestFile)};
|
||||
|
||||
# Change the permissions on the archived file so reconstruction fails
|
||||
executeTest('sudo chmod 220 ' . $strArchivedFile);
|
||||
$self->testException(sub {(new pgBackRest::Stanza())->stanzaCreate()}, ERROR_FILE_OPEN,
|
||||
"unable to open '" . $strArchivedFile . "': Permission denied");
|
||||
executeTest('sudo chmod 644 ' . $strArchivedFile);
|
||||
|
||||
# Clear the cached repo settings and change repo settings to encrypted
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
$self->testException(sub {(new pgBackRest::Stanza())->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"files exist - the encryption type or passphrase cannot be changed");
|
||||
|
||||
# Remove the backup sub directories and files so that the archive file is attempted to be read
|
||||
forceStorageRemove(storageRepo(), $strBackupPath, {bRecurse => true});
|
||||
$self->testException(sub {(new pgBackRest::Stanza())->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"files exist - the encryption type or passphrase cannot be changed");
|
||||
|
||||
# Remove the archive sub directories and files so that only the info files exist - stanza create is allowed with force
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), $strArchiveIdPath, {bRecurse => true});
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza with force and new encrypted settings');
|
||||
|
||||
# Confirm encrypted
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, true, ' new archive info encrypted');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/'
|
||||
. FILE_BACKUP_INFO)}, true, ' new backup info encrypted');
|
||||
|
||||
# Store the unencrypted archived file as encrypted and check stanza-create
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1");
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1/0000000100000001");
|
||||
storageRepo()->put($strArchivedFile, $tUnencryptedArchiveContent);
|
||||
storageRepo()->pathCreate($strBackupPath); # Empty backup path - no backup in progress
|
||||
|
||||
# Confirm encrypted and create the stanza with force
|
||||
$self->testResult(sub {storageRepo()->encrypted($strArchivedFile)}, true, 'new archive WAL encrypted');
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, ' successfully recreate stanza with force from encrypted WAL');
|
||||
|
||||
# Confirm the backup and archive info are encrypted and check the contents
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, true, ' new archive info encrypted');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/'
|
||||
. FILE_BACKUP_INFO)}, true, ' new backup info encrypted');
|
||||
$self->testResult(sub {(new pgBackRest::Archive::Info($self->{strArchivePath}))->check(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID) && (new pgBackRest::Backup::Info($self->{strBackupPath}))->check(PG_VERSION_94, $iDbControl,
|
||||
$iDbCatalog, WAL_VERSION_94_SYS_ID)}, 1, ' new archive.info and backup.info files correct');
|
||||
|
||||
# Store the unencrypted backup.manifest file as encrypted and check stanza-create
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Try to create a manifest without a passphrase in an encrypted storage
|
||||
$self->testException(sub {new pgBackRest::Manifest($strBackupManifestFile,
|
||||
{bLoad => false, strDbVersion => PG_VERSION_94})}, ERROR_CIPHER,
|
||||
'passphrase is required when storage is encrypted');
|
||||
|
||||
# Get the encryption passphrase and create the new manifest
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath});
|
||||
$oBackupManifest = new pgBackRest::Manifest($strBackupManifestFile, {bLoad => false, strDbVersion => PG_VERSION_94,
|
||||
strCipherPass => $oBackupInfo->cipherPassSub(), strCipherPassSub => storageRepo()->cipherPassGen()});
|
||||
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_LABEL, undef, $strBackupLabel);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_CHECK, undef, true);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ARCHIVE_COPY, undef, false);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_BACKUP_STANDBY, undef, false);
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_START, undef, 1);
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_ARCHIVE_STOP, undef, 1);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_CHECKSUM_PAGE, undef, true);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_COMPRESS, undef, true);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_HARDLINK, undef, false);
|
||||
$oBackupManifest->boolSet(MANIFEST_SECTION_BACKUP_OPTION, MANIFEST_KEY_ONLINE, undef, true);
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_START, undef, time());
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TIMESTAMP_STOP, undef, time());
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP, MANIFEST_KEY_TYPE, undef, CFGOPTVAL_BACKUP_TYPE_FULL);
|
||||
|
||||
$oBackupManifest->set(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_VERSION, undef, PG_VERSION_94);
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CONTROL, undef, $iDbControl);
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_CATALOG, undef, $iDbCatalog);
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_SYSTEM_ID, undef, WAL_VERSION_94_SYS_ID);
|
||||
$oBackupManifest->numericSet(MANIFEST_SECTION_BACKUP_DB, MANIFEST_KEY_DB_ID, undef, 1);
|
||||
$oBackupManifest->save();
|
||||
|
||||
# Confirm encrypted and create the stanza with force
|
||||
$self->testResult(sub {storageRepo()->encrypted($strBackupManifestFile)}, true, 'new backup manifest encrypted');
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0,
|
||||
' successfully recreate stanza with force from encrypted manifest and WAL');
|
||||
|
||||
# Confirm the backup and archive info are encrypted and check the contents
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, true, ' recreated archive info encrypted');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/'
|
||||
. FILE_BACKUP_INFO)}, true, ' recreated backup info encrypted');
|
||||
$self->testResult(sub {(new pgBackRest::Archive::Info($self->{strArchivePath}))->check(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID) && (new pgBackRest::Backup::Info($self->{strBackupPath}))->check(PG_VERSION_94, $iDbControl,
|
||||
$iDbCatalog, WAL_VERSION_94_SYS_ID)}, 1, ' recreated archive.info and backup.info files correct');
|
||||
|
||||
# Move the encrypted info files out of the repo so they are missing but backup exists. --force cannot be used
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
executeTest('sudo mv ' . storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/' . ARCHIVE_INFO_FILE . '* ' .
|
||||
$self->testPath() . '/');
|
||||
executeTest('sudo mv ' . storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/' . FILE_BACKUP_INFO . '* ' .
|
||||
$self->testPath() . '/');
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"backup directory and/or archive directory not empty and repo is encrypted and info file(s) are missing," .
|
||||
" --force cannot be used");
|
||||
|
||||
# Move the files back for the next test
|
||||
executeTest('sudo mv ' . $self->testPath() . '/' . ARCHIVE_INFO_FILE . '* ' .
|
||||
storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/');
|
||||
executeTest('sudo mv ' . $self->testPath() . '/' . FILE_BACKUP_INFO . '* ' .
|
||||
storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/');
|
||||
|
||||
# Change repo encryption settings to unencrypted - stanza create is not allowed even with force
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Clear the cached repo settings and change repo settings to unencrypted
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_TYPE);
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_PASS);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaCreate()}, ERROR_PATH_NOT_EMPTY,
|
||||
"files exist - the encryption type or passphrase cannot be changed");
|
||||
|
||||
# With only info files - stanza create is allowed with force
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
forceStorageRemove(storageRepo(), $strArchiveIdPath, {bRecurse => true});
|
||||
forceStorageRemove(storageRepo(), $strBackupPath, {bRecurse => true});
|
||||
$self->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created stanza with force and new unencrypted settings');
|
||||
|
||||
# Confirm unencrypted
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, false, ' new archive info unencrypted');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/'
|
||||
. FILE_BACKUP_INFO)}, false, ' new backup info unencrypted');
|
||||
|
||||
# Clear --force
|
||||
$self->optionTestClear(CFGOPT_FORCE);
|
||||
}
|
||||
|
||||
@@ -224,58 +409,14 @@ sub run
|
||||
{
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
my $oStanza = new pgBackRest::Stanza();
|
||||
|
||||
my @stryFileList = ('anything');
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info($self->{strArchivePath}, false, {bIgnoreMissing => true});
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true});
|
||||
|
||||
# If infoFileCreate is ever called directly, confirm it errors if something other than the info file exists in archive dir
|
||||
# when --force is not used
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oStanza->infoFileCreate($oArchiveInfo, STORAGE_REPO_ARCHIVE, $self->{strArchivePath},
|
||||
\@stryFileList)}, ERROR_PATH_NOT_EMPTY,
|
||||
"archive directory not empty" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
|
||||
# If infoFileCreate is ever called directly, confirm it errors if something other than the info file exists in backup dir
|
||||
# when --force is not used
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testException(sub {$oStanza->infoFileCreate($oBackupInfo, STORAGE_REPO_BACKUP, $self->{strBackupPath},
|
||||
\@stryFileList)}, ERROR_PATH_NOT_EMPTY,
|
||||
"backup directory not empty" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.");
|
||||
|
||||
# Set force option --------
|
||||
$self->optionTestSetBool(CFGOPT_FORCE, true);
|
||||
|
||||
# Force. Invalid archive.info exists.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestSetBool(CFGOPT_FORCE, true);
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
$oArchiveInfo->create(PG_VERSION_94, 12345, true);
|
||||
$oStanza = new pgBackRest::Stanza();
|
||||
$self->testResult(sub {$oStanza->infoFileCreate($oArchiveInfo, STORAGE_REPO_ARCHIVE, $self->{strArchivePath},
|
||||
\@stryFileList)}, "(0, [undef])", 'force successful for invalid info file');
|
||||
|
||||
# Cause an error to be thrown by changing the permissions of the archive file so it cannot be read for the hash comparison
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
executeTest('sudo chmod 220 ' . $self->{strArchivePath} . "/archive.info");
|
||||
$self->testResult(sub {$oStanza->infoFileCreate($oArchiveInfo, STORAGE_REPO_ARCHIVE, $self->{strArchivePath},
|
||||
\@stryFileList)},
|
||||
"(" . &ERROR_FILE_OPEN . ", unable to open '" . $self->{strArchivePath} . "/archive.info': Permission denied)",
|
||||
'exception code path');
|
||||
executeTest('sudo chmod 640 ' . $self->{strArchivePath} . "/archive.info");
|
||||
|
||||
# Force. Archive dir not empty. Warning returned.
|
||||
# Archive dir not empty. Warning returned.
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
storageTest()->pathCreate($self->{strArchivePath} . "/9.3-0", {bIgnoreExists => true, bCreateParent => true});
|
||||
$self->testResult(sub {$oStanza->infoFileCreate($oArchiveInfo, STORAGE_REPO_ARCHIVE, $self->{strArchivePath},
|
||||
\@stryFileList)}, "(0, [undef])", 'force successful with archive.info file warning',
|
||||
$self->testResult(sub {$oStanza->infoFileCreate($oArchiveInfo)}, "(0, [undef])",
|
||||
'successful with archive.info file warning',
|
||||
{strLogExpect => "WARN: found empty directory " . $self->{strArchivePath} . "/9.3-0"});
|
||||
|
||||
# Reset force option --------
|
||||
$self->optionTestClear(CFGOPT_FORCE);
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
@@ -310,15 +451,22 @@ sub run
|
||||
$self->testResult(sub {$oStanza->infoObject(STORAGE_REPO_BACKUP, $self->{strBackupPath})}, "[object]",
|
||||
'backup force successful');
|
||||
|
||||
# Cause an error to be thrown by changing the permissions of the archive directory so it cannot be read
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
executeTest('sudo chmod 220 ' . $self->{strArchivePath});
|
||||
$self->testException(sub {$oStanza->infoObject(STORAGE_REPO_ARCHIVE, $self->{strArchivePath})}, ERROR_FILE_OPEN,
|
||||
"unable to open '" . $self->{strArchivePath} . "/archive.info': Permission denied");
|
||||
executeTest('sudo chmod 640 ' . $self->{strArchivePath});
|
||||
|
||||
# Reset force option --------
|
||||
$self->optionTestClear(CFGOPT_FORCE);
|
||||
|
||||
# Cause an error to be thrown by changing the permissions of the archive file so it cannot be read
|
||||
# Cause an error to be thrown by changing the permissions of the backup file so it cannot be read
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
|
||||
(new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true}))->create(PG_VERSION_94,
|
||||
WAL_VERSION_94_SYS_ID, '942', '201409291', true);
|
||||
WAL_VERSION_94_SYS_ID, $iDbControl, $iDbCatalog, true);
|
||||
forceStorageRemove(storageRepo(), storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO . INI_COPY_EXT));
|
||||
executeTest('sudo chmod 220 ' . storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO));
|
||||
$self->testException(sub {$oStanza->infoObject(STORAGE_REPO_BACKUP, $self->{strBackupPath})}, ERROR_FILE_OPEN,
|
||||
@@ -346,6 +494,85 @@ sub run
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oStanza->stanzaUpgrade()}, 0, 'upgrade not required');
|
||||
|
||||
# Attempt to change the encryption settings
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
# Clear the cached repo settings and change repo settings to encrypted
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_STANZA_UPGRADE);
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaUpgrade()}, ERROR_CIPHER,
|
||||
"unable to parse '" . $self->{strArchivePath} . "/archive.info'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
forceStorageRemove(storageRepo(), storageRepo()->pathGet(STORAGE_REPO_BACKUP . qw{/} . FILE_BACKUP_INFO) . "*");
|
||||
forceStorageRemove(storageRepo(), storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . qw{/} . ARCHIVE_INFO_FILE) . "*");
|
||||
|
||||
# Create encrypted info files with prior passphrase then attempt to change
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oArchiveInfo = new pgBackRest::Archive::Info($self->{strArchivePath}, false, {bIgnoreMissing => true,
|
||||
strCipherPassSub => storageRepo()->cipherPassGen()});
|
||||
$oArchiveInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, true);
|
||||
|
||||
$oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath}, false, false, {bIgnoreMissing => true,
|
||||
strCipherPassSub => storageRepo()->cipherPassGen()});
|
||||
$oBackupInfo->create(PG_VERSION_93, WAL_VERSION_93_SYS_ID, '937', '201306121', true);
|
||||
|
||||
# Attempt to upgrade with a different passphrase
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'y');
|
||||
$self->configTestLoad(CFGCMD_STANZA_UPGRADE);
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaUpgrade()}, ERROR_CIPHER,
|
||||
"unable to parse '" . $self->{strArchivePath} . "/archive.info'" .
|
||||
"\nHINT: Is or was the repo encrypted?");
|
||||
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_STANZA_UPGRADE);
|
||||
|
||||
# Create encrypted archived file
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_93 . "-1");
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_93 . "-1/0000000100000001");
|
||||
my $strArchiveIdPath = storageRepo()->pathGet(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_93 . "-1");
|
||||
my $strArchivedFile = storageRepo()->pathGet($strArchiveIdPath .
|
||||
"/0000000100000001/000000010000000100000001-1e34fa1c833090d94b9bb14f2a8d3153dca6ea27");
|
||||
my $tContent = ${storageTest()->get($self->dataPath() . "/backup.wal1_93.bin")};
|
||||
storageRepo()->put($strArchivedFile, $tContent, {strCipherPass => $oArchiveInfo->cipherPassSub()});
|
||||
$self->testResult(sub {storageRepo()->encrypted($strArchivedFile)}, true, 'created encrypted archive WAL');
|
||||
|
||||
# Upgrade
|
||||
$self->testResult(sub {$oStanza->stanzaUpgrade()}, 0, ' successfully upgraded');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_ARCHIVE) . '/'
|
||||
. ARCHIVE_INFO_FILE)}, true, ' upgraded archive info encrypted');
|
||||
$self->testResult(sub {storageRepo()->encrypted(storageRepo()->pathGet(STORAGE_REPO_BACKUP) . '/'
|
||||
. FILE_BACKUP_INFO)}, true, ' upgraded backup info encrypted');
|
||||
|
||||
$oArchiveInfo = new pgBackRest::Archive::Info($self->{strArchivePath});
|
||||
$oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath});
|
||||
my $hHistoryArchive = $oArchiveInfo->dbHistoryList();
|
||||
my $hHistoryBackup = $oBackupInfo->dbHistoryList();
|
||||
|
||||
$self->testResult(sub {($hHistoryArchive->{1}{&INFO_DB_VERSION} eq PG_VERSION_93) &&
|
||||
($hHistoryArchive->{1}{&INFO_SYSTEM_ID} eq WAL_VERSION_93_SYS_ID) &&
|
||||
($hHistoryArchive->{2}{&INFO_DB_VERSION} eq PG_VERSION_94) &&
|
||||
($hHistoryArchive->{2}{&INFO_SYSTEM_ID} eq WAL_VERSION_94_SYS_ID) &&
|
||||
($hHistoryBackup->{1}{&INFO_DB_VERSION} eq PG_VERSION_93) &&
|
||||
($hHistoryBackup->{1}{&INFO_SYSTEM_ID} eq WAL_VERSION_93_SYS_ID) &&
|
||||
($hHistoryBackup->{2}{&INFO_DB_VERSION} eq PG_VERSION_94) &&
|
||||
($hHistoryBackup->{2}{&INFO_SYSTEM_ID} eq WAL_VERSION_94_SYS_ID) &&
|
||||
($oArchiveInfo->check(PG_VERSION_94, WAL_VERSION_94_SYS_ID) eq PG_VERSION_94 . "-2") &&
|
||||
($oBackupInfo->check(PG_VERSION_94, $iDbControl, $iDbCatalog, WAL_VERSION_94_SYS_ID) == 2) }, true,
|
||||
' encrypted archive and backup info files upgraded');
|
||||
|
||||
# Clear configuration
|
||||
storageRepoCacheClear($self->stanza());
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_TYPE);
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_PASS);
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
@@ -378,7 +605,7 @@ sub run
|
||||
'backup upgrade needed');
|
||||
|
||||
# Change the backup file to contain current data
|
||||
$oBackupInfo->create('9.4', 6353949018581704918, '942', '201409291', true);
|
||||
$oBackupInfo->create('9.4', 6353949018581704918, $iDbControl, $iDbCatalog, true);
|
||||
|
||||
# Confirm upgrade is needed for archive
|
||||
$self->testResult(sub {$oStanza->upgradeCheck($oBackupInfo, STORAGE_REPO_BACKUP, ERROR_BACKUP_MISMATCH)}, false,
|
||||
@@ -413,6 +640,27 @@ sub run
|
||||
"database version = 9.3, system-id 6999999999999999999 does not match backup version = 9.4, " .
|
||||
"system-id = 6353949018581704918\nHINT: is this the correct stanza?");
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Stanza::errorForce()"))
|
||||
{
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
my $oStanza = new pgBackRest::Stanza();
|
||||
|
||||
my $strMessage = "archive information missing" .
|
||||
"\nHINT: use stanza-create --force to force the stanza data to be created.";
|
||||
|
||||
$self->testException(sub {$oStanza->errorForce($strMessage, ERROR_FILE_MISSING, undef, true,
|
||||
$self->{strArchivePath}, $self->{strBackupPath})}, ERROR_FILE_MISSING, $strMessage);
|
||||
|
||||
my $strFile = $self->{strArchivePath} . qw{/} . 'file.txt';
|
||||
my $strFileContent = 'TESTDATA';
|
||||
|
||||
executeTest("echo -n '${strFileContent}' | tee ${strFile}");
|
||||
|
||||
$self->testException(sub {$oStanza->errorForce($strMessage, ERROR_FILE_MISSING, $strFile, true,
|
||||
$self->{strArchivePath}, $self->{strBackupPath})}, ERROR_FILE_MISSING, $strMessage);
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -134,6 +134,37 @@ sub run
|
||||
sub {storageSpool()->pathGet(STORAGE_SPOOL_ARCHIVE_OUT)}, $self->testPath() . '/spool/archive/db/out',
|
||||
'check archive out path');
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------------------------------------------------------
|
||||
if ($self->begin("storageRepo() encryption"))
|
||||
{
|
||||
my $strStanzaEncrypt = 'test-encrypt';
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_TYPE, CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC);
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
# Encryption passphrase required when encryption type not 'none' (default)
|
||||
$self->testException(sub {storageRepo({strStanza => $strStanzaEncrypt})}, ERROR_ASSERT, 'option ' .
|
||||
cfgOptionName(CFGOPT_REPO_CIPHER_PASS) . ' is required');
|
||||
|
||||
# Set the encryption passphrase and confirm passphrase and type have been set in the storage object
|
||||
$self->optionTestSet(CFGOPT_REPO_CIPHER_PASS, 'x');
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
$self->testResult(sub {storageRepo({strStanza => $strStanzaEncrypt})->cipherType() eq
|
||||
CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC}, true, 'encryption type set');
|
||||
$self->testResult(sub {storageRepo({strStanza => $strStanzaEncrypt})->cipherPassUser() eq 'x'}, true,
|
||||
'encryption passphrase set');
|
||||
|
||||
# Cannot change encryption after it has been set (cached values not reset)
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_TYPE);
|
||||
$self->optionTestClear(CFGOPT_REPO_CIPHER_PASS);
|
||||
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
|
||||
|
||||
$self->testResult(sub {storageRepo({strStanza => $strStanzaEncrypt})->cipherType() eq
|
||||
CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC}, true, 'encryption type not reset');
|
||||
$self->testResult(sub {storageRepo({strStanza => $strStanzaEncrypt})->cipherPassUser() eq 'x'}, true,
|
||||
'encryption passphrase not reset');
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -18,6 +18,7 @@ use pgBackRest::Config::Config;
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Storage::Filter::Sha;
|
||||
use pgBackRest::Storage::Base;
|
||||
use pgBackRest::Storage::Local;
|
||||
|
||||
use pgBackRestTest::Common::ExecuteTest;
|
||||
@@ -70,6 +71,11 @@ sub initModule
|
||||
$self->{oStorageLocal} = new pgBackRest::Storage::Local(
|
||||
$self->pathLocal(), new pgBackRest::Storage::Posix::Driver(), {hRule => $hRule, bAllowTemp => false});
|
||||
|
||||
# Create encrypted storage
|
||||
$self->{oStorageEncrypt} = new pgBackRest::Storage::Local(
|
||||
$self->testPath(), new pgBackRest::Storage::Posix::Driver(),
|
||||
{hRule => $hRule, bAllowTemp => false, strCipherType => CFGOPTVAL_REPO_CIPHER_TYPE_AES_256_CBC});
|
||||
|
||||
# Remote path
|
||||
$self->{strPathRemote} = $self->testPath() . '/remote';
|
||||
|
||||
@@ -109,11 +115,11 @@ sub run
|
||||
# Define test file
|
||||
my $strFile = 'file.txt';
|
||||
my $strFileCopy = 'file.txt.copy';
|
||||
# my $strFileHash = 'bbbcf2c59433f68f22376cd2439d6cd309378df6';
|
||||
my $strFileHash = 'bbbcf2c59433f68f22376cd2439d6cd309378df6';
|
||||
my $strFileContent = 'TESTDATA';
|
||||
my $iFileSize = length($strFileContent);
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
################################################################################################################################
|
||||
if ($self->begin("pathGet()"))
|
||||
{
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
@@ -172,8 +178,11 @@ sub run
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $oFileIo = $self->testResult(sub {$self->storageLocal()->openWrite($strFile)}, '[object]', 'open write');
|
||||
|
||||
$self->testResult(sub {$oFileIo->write(\$strFileContent, length($strFileContent))}, $iFileSize, "write $iFileSize bytes");
|
||||
$self->testResult(sub {$oFileIo->write(\$strFileContent)}, $iFileSize, "write $iFileSize bytes");
|
||||
$self->testResult(sub {$oFileIo->close()}, true, 'close');
|
||||
|
||||
# Check that it is not encrypted
|
||||
$self->testResult(sub {$self->storageLocal()->encrypted($strFile)}, false, 'test storage not encrypted');
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
@@ -347,6 +356,106 @@ sub run
|
||||
$self->testResult(sub {$self->storageLocal()->pathCreate($strTestPath, {bIgnoreExists => true})}, "[undef]",
|
||||
"ignore path exists");
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin('encryption'))
|
||||
{
|
||||
my $strCipherPass = 'x';
|
||||
$self->testResult(sub {sha1_hex($strFileContent)}, $strFileHash, 'hash check contents to be written');
|
||||
|
||||
# Error when passphrase not passed
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $oFileIo = $self->testException(sub {$self->storageEncrypt()->openWrite($strFile)},
|
||||
ERROR_ASSERT, 'tCipherPass is required in Storage::Filter::CipherBlock->new');
|
||||
|
||||
# Write an encrypted file
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oFileIo = $self->testResult(sub {$self->storageEncrypt()->openWrite($strFile, {strCipherPass => $strCipherPass})},
|
||||
'[object]', 'open write');
|
||||
|
||||
my $iWritten = $oFileIo->write(\$strFileContent);
|
||||
$self->testResult(sub {$oFileIo->close()}, true, ' close');
|
||||
|
||||
# Check that it is encrypted and valid for the repo encryption type
|
||||
$self->testResult(sub {$self->storageEncrypt()->encryptionValid($self->storageEncrypt()->encrypted($strFile))}, true,
|
||||
' test storage encrypted and valid');
|
||||
|
||||
$self->testResult(
|
||||
sub {sha1_hex(${storageTest()->get($strFile)}) ne $strFileHash}, true, ' check written sha1 different');
|
||||
|
||||
# Error when passphrase not passed
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oFileIo = $self->testException(sub {$self->storageEncrypt()->openRead($strFile)},
|
||||
ERROR_ASSERT, 'tCipherPass is required in Storage::Filter::CipherBlock->new');
|
||||
|
||||
# Read it and confirm it decrypts and is same as original content
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oFileIo = $self->testResult(sub {$self->storageEncrypt()->openRead($strFile, {strCipherPass => $strCipherPass})},
|
||||
'[object]', 'open read and decrypt');
|
||||
my $strContent;
|
||||
$oFileIo->read(\$strContent, $iWritten);
|
||||
$self->testResult(sub {$oFileIo->close()}, true, ' close');
|
||||
$self->testResult($strContent, $strFileContent, ' decrypt read equal orginal contents');
|
||||
|
||||
# Copy
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(
|
||||
sub {$self->storageEncrypt()->copy(
|
||||
$self->storageEncrypt()->openRead($strFile, {strCipherPass => $strCipherPass}),
|
||||
$self->storageEncrypt()->openWrite($strFileCopy, {strCipherPass => $strCipherPass}))},
|
||||
true, 'copy - decrypt/encrypt');
|
||||
|
||||
$self->testResult(
|
||||
sub {sha1_hex(${$self->storageEncrypt()->get($strFileCopy, {strCipherPass => $strCipherPass})})}, $strFileHash,
|
||||
' check decrypted copy file sha1 same as original plaintext file');
|
||||
|
||||
# Write an empty encrypted file
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $strFileZero = 'file-0.txt';
|
||||
my $strZeroContent = '';
|
||||
$oFileIo = $self->testResult(
|
||||
sub {$self->storageEncrypt()->openWrite($strFileZero, {strCipherPass => $strCipherPass})}, '[object]',
|
||||
'open write for zero');
|
||||
|
||||
$self->testResult(sub {$oFileIo->write(\$strZeroContent)}, 0, ' zero written');
|
||||
$self->testResult(sub {$oFileIo->close()}, true, ' close');
|
||||
|
||||
$self->testResult(sub {$self->storageEncrypt()->encrypted($strFile)}, true, ' test empty file encrypted');
|
||||
|
||||
# Write an unencrypted file to the encrypted storage and check if the file is valid for that storage
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
my $strFileTest = $self->testPath() . qw{/} . 'test.file.txt';
|
||||
|
||||
# Create empty file
|
||||
executeTest("touch ${strFileTest}");
|
||||
$self->testResult(sub {$self->storageEncrypt()->encrypted($strFileTest)}, false, 'empty file so not encrypted');
|
||||
|
||||
# Add unencrypted content to the file
|
||||
executeTest("echo -n '${strFileContent}' | tee ${strFileTest}");
|
||||
$self->testResult(sub {$self->storageEncrypt()->encryptionValid($self->storageEncrypt()->encrypted($strFileTest))}, false,
|
||||
'storage encryption and unencrypted file format do not match');
|
||||
|
||||
# Unencrypted file valid in unencrypted storage
|
||||
$self->testResult(sub {$self->storageLocal()->encryptionValid($self->storageLocal()->encrypted($strFileTest))}, true,
|
||||
'unencrypted file valid in unencrypted storage');
|
||||
|
||||
# Prepend encryption Magic Signature and test encrypted file in unencrypted storage not valid
|
||||
executeTest('echo "' . CIPHER_MAGIC . '$(cat ' . $strFileTest . ')" > ' . $strFileTest);
|
||||
$self->testResult(sub {$self->storageLocal()->encryptionValid($self->storageLocal()->encrypted($strFileTest))}, false,
|
||||
'storage unencrypted and encrypted file format do not match');
|
||||
|
||||
# Test a file that does not exist
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$strFileTest = $self->testPath() . qw{/} . 'testfile';
|
||||
$self->testException(sub {$self->storageEncrypt()->encrypted($strFileTest)}, ERROR_FILE_MISSING,
|
||||
"unable to open '" . $strFileTest . "': No such file or directory");
|
||||
|
||||
$self->testResult(sub {$self->storageEncrypt()->encrypted($strFileTest, {bIgnoreMissing => true})}, true,
|
||||
'encryption for ignore missing file returns encrypted for encrypted storage');
|
||||
|
||||
$self->testResult(sub {$self->storageLocal()->encrypted($strFileTest, {bIgnoreMissing => true})}, false,
|
||||
'encryption for ignore missing file returns unencrypted for unencrypted storage');
|
||||
}
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
@@ -358,6 +467,7 @@ sub pathRemote {return shift->{strPathRemote}};
|
||||
sub protocolLocal {return shift->{oProtocolLocal}};
|
||||
sub protocolRemote {return shift->{oProtocolRemote}};
|
||||
sub storageLocal {return shift->{oStorageLocal}};
|
||||
sub storageEncrypt {return shift->{oStorageEncrypt}};
|
||||
sub storageRemote {return shift->{oStorageRemote}};
|
||||
|
||||
1;
|
||||
|
||||
@@ -264,6 +264,10 @@ sub run
|
||||
my $oPosixIo = $self->testResult(
|
||||
sub {new pgBackRest::Storage::Posix::FileWrite($oPosix, $strFile)}, '[object]', 'open');
|
||||
|
||||
$tContent = undef;
|
||||
$self->testException(
|
||||
sub {$oPosixIo->write(\$tContent)}, ERROR_FILE_WRITE, "unable to write to '${strFile}': Use of uninitialized value");
|
||||
|
||||
$tContent = substr($strFileContent, 0, $iFileLengthHalf);
|
||||
$self->testResult(
|
||||
sub {$oPosixIo->write(\$tContent)}, $iFileLengthHalf, 'write part 1');
|
||||
|
||||
Reference in New Issue
Block a user