mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-05-31 22:49:46 +02:00
Add stanza-delete command to cleanup unused stanzas.
Contributed by Cynthia Shang.
This commit is contained in:
parent
526acca5bd
commit
0e9ba98a50
@ -91,6 +91,8 @@ use constant CFGCMD_RESTORE => 'restore'
|
||||
push @EXPORT, qw(CFGCMD_RESTORE);
|
||||
use constant CFGCMD_STANZA_CREATE => 'stanza-create';
|
||||
push @EXPORT, qw(CFGCMD_STANZA_CREATE);
|
||||
use constant CFGCMD_STANZA_DELETE => 'stanza-delete';
|
||||
push @EXPORT, qw(CFGCMD_STANZA_DELETE);
|
||||
use constant CFGCMD_STANZA_UPGRADE => 'stanza-upgrade';
|
||||
push @EXPORT, qw(CFGCMD_STANZA_UPGRADE);
|
||||
use constant CFGCMD_START => 'start';
|
||||
@ -494,6 +496,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -537,6 +540,11 @@ my %hConfigDefine =
|
||||
&CFGDEF_DEFAULT => false,
|
||||
},
|
||||
|
||||
&CFGCMD_STANZA_DELETE =>
|
||||
{
|
||||
&CFGDEF_DEFAULT => false,
|
||||
},
|
||||
|
||||
&CFGCMD_STOP =>
|
||||
{
|
||||
&CFGDEF_DEFAULT => false
|
||||
@ -591,6 +599,7 @@ my %hConfigDefine =
|
||||
},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START =>
|
||||
{
|
||||
@ -886,6 +895,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -905,6 +915,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -940,6 +951,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -961,6 +973,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -981,6 +994,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1003,6 +1017,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1025,6 +1040,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1048,6 +1064,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1095,6 +1112,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -1143,6 +1161,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1225,6 +1244,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1289,6 +1309,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_INFO => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1437,6 +1458,10 @@ my %hConfigDefine =
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE =>
|
||||
{
|
||||
&CFGDEF_INTERNAL => true,
|
||||
},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1701,6 +1726,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_EXPIRE => {},
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1724,6 +1750,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_EXPIRE => {},
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1752,6 +1779,7 @@ my %hConfigDefine =
|
||||
&CFGDEF_INTERNAL => true,
|
||||
},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
&CFGCMD_START => {},
|
||||
&CFGCMD_STOP => {},
|
||||
@ -1786,6 +1814,7 @@ my %hConfigDefine =
|
||||
},
|
||||
&CFGCMD_RESTORE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
},
|
||||
},
|
||||
@ -1802,6 +1831,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_CHECK => {},
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -1832,6 +1862,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_REMOTE => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
}
|
||||
},
|
||||
@ -1848,6 +1879,7 @@ my %hConfigDefine =
|
||||
&CFGCMD_CHECK => {},
|
||||
&CFGCMD_LOCAL => {},
|
||||
&CFGCMD_STANZA_CREATE => {},
|
||||
&CFGCMD_STANZA_DELETE => {},
|
||||
&CFGCMD_STANZA_UPGRADE => {},
|
||||
},
|
||||
&CFGDEF_REQUIRED => false,
|
||||
|
@ -86,9 +86,9 @@ my $oRenderTag =
|
||||
'b' => ['\textbf{', '}'],
|
||||
'i' => ['\textit{', '}'],
|
||||
# 'bi' => ['', ''],
|
||||
# 'ul' => ["\n", "\n"],
|
||||
'ul' => ["\\begin{itemize}\n", "\\end{itemize}\n"],
|
||||
# 'ol' => ["\n", "\n"],
|
||||
# 'li' => ['* ', "\n"],
|
||||
'li' => ['\item ', "\n"],
|
||||
'id' => ['\textnormal{\texttt{', '}}'],
|
||||
'host' => ['\textnormal{\textbf{', '}}'],
|
||||
'file' => ['\textnormal{\texttt{', '}}'],
|
||||
|
@ -1201,6 +1201,41 @@
|
||||
</command-example>
|
||||
</command-example-list>
|
||||
</command>
|
||||
|
||||
<!-- OPERATION - STANZA-DELETE COMMAND -->
|
||||
<command id="stanza-delete" name="Stanza Delete">
|
||||
<summary>Delete a stanza.</summary>
|
||||
|
||||
<text>The <cmd>stanza-delete</cmd> command removes data in the repository associated with a stanza. Use this command with caution &mdash; it will permanently remove all backups and archives from the <backrest/> repository for the specified stanza.
|
||||
|
||||
To delete a stanza:
|
||||
<ul>
|
||||
<li>Shut down the <postgres/> cluster associated with the stanza (or use --force to override).</li>
|
||||
<li>Run the <cmd>stop</cmd> command on the backup host (the host where the repository is mounted).</li>
|
||||
<li>Run the <cmd>stanza-delete</cmd> command on the backup host.</li>
|
||||
</ul>Once the command successfully completes, it is the responsibility of the user to remove the stanza from all <backrest/> configuration files.</text>
|
||||
|
||||
<option-list>
|
||||
<!-- OPERATION - STANZA-CREATE COMMAND - FORCE OPTION -->
|
||||
<option id="force" name="Force">
|
||||
<summary>Force stanza delete.</summary>
|
||||
|
||||
<text>If <postgres/> is still running for the stanza, then this option can be used to force the stanza to be deleted from the repository.</text>
|
||||
|
||||
<example>n</example>
|
||||
</option>
|
||||
</option-list>
|
||||
|
||||
<command-example-list>
|
||||
<command-example title="Delete a stanza">
|
||||
<text><code-block title="">
|
||||
{[backrest-exe]} --stanza=db stanza-delete
|
||||
</code-block>
|
||||
|
||||
Delete the <id>db</id> stanza repository.</text>
|
||||
</command-example>
|
||||
</command-example-list>
|
||||
</command>
|
||||
</command-list>
|
||||
</operation>
|
||||
</doc>
|
||||
|
@ -13,6 +13,14 @@
|
||||
<release date="XXXX-XX-XX" version="2.00dev" title="UNDER DEVELOPMENT">
|
||||
<release-core-list>
|
||||
<release-feature-list>
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-contributor id="shang.cynthia"/>
|
||||
</release-item-contributor-list>
|
||||
|
||||
<p>Add <cmd>stanza-delete</cmd> command to cleanup unused stanzas.</p>
|
||||
</release-item>
|
||||
|
||||
<release-item>
|
||||
<p>Allow any non-boolean, non-command-line option to be negated. This allows specific options in <file>pgbackrest.conf</file> to be ignored (and set to default) which reduces the need to write new configuration files for specific needs. Note that boolean, non-command-line options are already negatable.</p>
|
||||
</release-item>
|
||||
|
@ -1557,6 +1557,43 @@
|
||||
</execute-list>
|
||||
</section>
|
||||
|
||||
<!-- SECTION => BACKUP HOST -->
|
||||
<section id="delete-stanza" depend="/quickstart/create-stanza">
|
||||
<title>Delete a Stanza</title>
|
||||
|
||||
<cmd-description key="stanza-delete"/>
|
||||
|
||||
<execute-list host="{[host-db-primary]}">
|
||||
<title>Stop <postgres/> cluster to be removed</title>
|
||||
|
||||
<execute user="root">
|
||||
<exe-cmd>{[db-cluster-stop]}</exe-cmd>
|
||||
</execute>
|
||||
</execute-list>
|
||||
|
||||
<execute-list host="{[host-db-primary]}">
|
||||
<title>Stop <backrest/> for the stanza</title>
|
||||
|
||||
<execute output="y">
|
||||
<exe-cmd>{[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stop</exe-cmd>
|
||||
<exe-highlight>completed successfully</exe-highlight>
|
||||
</execute>
|
||||
</execute-list>
|
||||
|
||||
<execute-list host="{[host-db-primary]}">
|
||||
<title>Delete the stanza</title>
|
||||
|
||||
<execute output="y">
|
||||
<exe-cmd>{[project-exe]} {[dash]}-stanza={[postgres-cluster-demo]} {[dash]}-log-level-console=info stanza-delete</exe-cmd>
|
||||
<exe-highlight>completed successfully</exe-highlight>
|
||||
</execute>
|
||||
|
||||
<execute user="root" show="n">
|
||||
<exe-cmd>{[db-cluster-start]}</exe-cmd>
|
||||
</execute>
|
||||
</execute-list>
|
||||
</section>
|
||||
|
||||
<!-- SECTION => BACKUP HOST -->
|
||||
<section id="backup-host" depend="/quickstart/configure-archiving">
|
||||
<title>Dedicated Backup Host</title>
|
||||
@ -1664,16 +1701,6 @@
|
||||
<backrest-config-option section="global" key="log-timestamp">n</backrest-config-option>
|
||||
</backrest-config>
|
||||
|
||||
<p>The repository directory will also be removed from the database host. It will not be used anymore so leaving it around may be confusing later on.</p>
|
||||
|
||||
<execute-list host="{[host-db-primary]}">
|
||||
<title>Remove repository now that it will be located on the backup host server</title>
|
||||
|
||||
<execute user="root">
|
||||
<exe-cmd>find {[backrest-repo-path]} -delete</exe-cmd>
|
||||
</execute>
|
||||
</execute-list>
|
||||
|
||||
<p>Commands are run the same as on a single host configuration except that some commands such as <cmd>backup</cmd> and <cmd>expire</cmd> are run from the <host>backup</host> host instead of the <host>database</host> host.</p>
|
||||
|
||||
<p>Create the stanza in the new repository.</p>
|
||||
|
@ -282,7 +282,18 @@ push @EXPORT, qw(lockStop);
|
||||
sub lockStopTest
|
||||
{
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my ($strOperation) = logDebugParam(__PACKAGE__ . '::lockStopTest');
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$bStanzaStopRequired,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '::lockStopTest', \@_,
|
||||
{name => 'bStanzaStopRequired', optional => true, default => false}
|
||||
);
|
||||
|
||||
my $bStopExists = false;
|
||||
|
||||
# Check the stanza first if it is specified
|
||||
if (cfgOptionTest(CFGOPT_STANZA))
|
||||
@ -292,20 +303,36 @@ sub lockStopTest
|
||||
|
||||
if (-e $strStopFile)
|
||||
{
|
||||
confess &log(ERROR, 'stop file exists for stanza ' . cfgOption(CFGOPT_STANZA), ERROR_STOP);
|
||||
# If the stop file exists and is required then set the flag to true
|
||||
if ($bStanzaStopRequired)
|
||||
{
|
||||
$bStopExists = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
confess &log(ERROR, 'stop file exists for stanza ' . cfgOption(CFGOPT_STANZA), ERROR_STOP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Now check all stanzas
|
||||
my $strStopFile = lockStopFileName();
|
||||
|
||||
if (-e $strStopFile)
|
||||
# If not looking for a specific stanza stop file, then check all stanzas
|
||||
if (!$bStanzaStopRequired)
|
||||
{
|
||||
confess &log(ERROR, 'stop file exists for all stanzas', ERROR_STOP);
|
||||
# Now check all stanzas
|
||||
my $strStopFile = lockStopFileName();
|
||||
|
||||
if (-e $strStopFile)
|
||||
{
|
||||
confess &log(ERROR, 'stop file exists for all stanzas', ERROR_STOP);
|
||||
}
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
logDebugReturn($strOperation);
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'bStopExists', value => $bStopExists}
|
||||
);
|
||||
}
|
||||
|
||||
push @EXPORT, qw(lockStopTest);
|
||||
|
@ -1608,6 +1608,78 @@ my $oConfigHelpData =
|
||||
}
|
||||
},
|
||||
|
||||
# STANZA-DELETE Command Help
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
'stanza-delete' =>
|
||||
{
|
||||
summary =>
|
||||
"Delete a stanza.",
|
||||
description =>
|
||||
"The stanza-delete command removes data in the repository associated with a stanza. Use this command with " .
|
||||
"caution — it will permanently remove all backups and archives from the pgBackRest repository for the " .
|
||||
"specified stanza.\n" .
|
||||
"\n" .
|
||||
"To delete a stanza:\n" .
|
||||
"\n" .
|
||||
"* Shut down the PostgreSQL cluster associated with the stanza (or use --force to override).\n" .
|
||||
"* Run the stop command on the backup host (the host where the repository is mounted).\n" .
|
||||
"* Run the stanza-delete command on the backup host.\n" .
|
||||
"\n" .
|
||||
"Once the command successfully completes, it is the responsibility of the user to remove the stanza from all " .
|
||||
"pgBackRest configuration files.",
|
||||
|
||||
option =>
|
||||
{
|
||||
'buffer-size' => 'section',
|
||||
'cmd-ssh' => 'section',
|
||||
'compress-level' => 'section',
|
||||
'compress-level-network' => 'section',
|
||||
'config' => 'default',
|
||||
'db-cmd' => 'section',
|
||||
'db-config' => 'section',
|
||||
'db-host' => 'section',
|
||||
'db-path' => 'section',
|
||||
'db-port' => 'section',
|
||||
'db-socket-path' => 'section',
|
||||
'db-ssh-port' => 'section',
|
||||
'db-timeout' => 'section',
|
||||
'db-user' => 'section',
|
||||
|
||||
# FORCE Option Help
|
||||
#-------------------------------------------------------------------------------------------------------------------
|
||||
'force' =>
|
||||
{
|
||||
summary =>
|
||||
"Force stanza delete.",
|
||||
description =>
|
||||
"If PostgreSQL is still running for the stanza, then this option can be used to force the stanza to be " .
|
||||
"deleted from the repository."
|
||||
},
|
||||
|
||||
'lock-path' => 'section',
|
||||
'log-level-console' => 'section',
|
||||
'log-level-file' => 'section',
|
||||
'log-path' => 'section',
|
||||
'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',
|
||||
'repo-s3-ca-path' => 'section',
|
||||
'repo-s3-endpoint' => 'section',
|
||||
'repo-s3-host' => 'section',
|
||||
'repo-s3-key' => 'section',
|
||||
'repo-s3-key-secret' => 'section',
|
||||
'repo-s3-region' => 'section',
|
||||
'repo-s3-verify-ssl' => 'section',
|
||||
'repo-type' => 'section',
|
||||
'stanza' => 'default'
|
||||
}
|
||||
},
|
||||
|
||||
# STANZA-UPGRADE Command Help
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
'stanza-upgrade' =>
|
||||
|
@ -192,6 +192,24 @@ sub main
|
||||
exitSafe(new pgBackRest::Info()->process());
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
# Process stanza-delete command
|
||||
############################################################################################################################
|
||||
if (cfgCommandTest(CFGCMD_STANZA_DELETE))
|
||||
{
|
||||
if (!isRepoLocal())
|
||||
{
|
||||
confess &log(ERROR,
|
||||
cfgCommandName(cfgCommandGet()) . ' command must be run on the backup host', ERROR_HOST_INVALID);
|
||||
}
|
||||
|
||||
# Load module dynamically
|
||||
require pgBackRest::Stanza;
|
||||
pgBackRest::Stanza->import();
|
||||
|
||||
exitSafe(new pgBackRest::Stanza()->process());
|
||||
}
|
||||
|
||||
############################################################################################################################
|
||||
# Acquire the command lock
|
||||
############################################################################################################################
|
||||
|
@ -13,8 +13,11 @@ use English '-no_match_vars';
|
||||
use Exporter qw(import);
|
||||
our @EXPORT = qw();
|
||||
|
||||
use pgBackRest::Backup::Common;
|
||||
use pgBackRest::Common::Cipher;
|
||||
use pgBackRest::Common::Exception;
|
||||
use pgBackRest::Common::Ini;
|
||||
use pgBackRest::Common::Lock;
|
||||
use pgBackRest::Common::Log;
|
||||
use pgBackRest::Config::Config;
|
||||
use pgBackRest::Archive::Info;
|
||||
@ -22,6 +25,7 @@ use pgBackRest::Backup::Info;
|
||||
use pgBackRest::Db;
|
||||
use pgBackRest::DbVersion;
|
||||
use pgBackRest::InfoCommon;
|
||||
use pgBackRest::Manifest;
|
||||
use pgBackRest::Protocol::Helper;
|
||||
use pgBackRest::Protocol::Storage::Helper;
|
||||
|
||||
@ -48,9 +52,12 @@ sub new
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my $strOperation = logDebugParam(__PACKAGE__ . '->new');
|
||||
|
||||
# Initialize the database object
|
||||
($self->{oDb}) = dbObjectGet();
|
||||
$self->dbInfoGet();
|
||||
# Initialize the database object if not performing a stanza-delete
|
||||
if (!cfgCommandTest(CFGCMD_STANZA_DELETE))
|
||||
{
|
||||
($self->{oDb}) = dbObjectGet();
|
||||
$self->dbInfoGet();
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
@ -82,6 +89,11 @@ sub process
|
||||
{
|
||||
$iResult = $self->stanzaUpgrade();
|
||||
}
|
||||
# Process stanza delete
|
||||
elsif (cfgCommandTest(CFGCMD_STANZA_DELETE))
|
||||
{
|
||||
$iResult = $self->stanzaDelete();
|
||||
}
|
||||
# Else error if any other command is found
|
||||
else
|
||||
{
|
||||
@ -251,6 +263,82 @@ sub stanzaUpgrade
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# stanzaDelete
|
||||
#
|
||||
# Delete a stanza. The stop file must exist and the db must be offline unless --force is used.
|
||||
####################################################################################################################################
|
||||
sub stanzaDelete
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my ($strOperation) = logDebugParam(__PACKAGE__ . '->stanzaDelete');
|
||||
|
||||
my $strStanza = cfgOption(CFGOPT_STANZA);
|
||||
my $oStorageRepo = storageRepo({strStanza => $strStanza});
|
||||
|
||||
# If at least an archive or backup directory exists for the stanza, then continue, else nothing to do
|
||||
if ($oStorageRepo->pathExists(STORAGE_REPO_ARCHIVE) || $oStorageRepo->pathExists(STORAGE_REPO_BACKUP))
|
||||
{
|
||||
# If the stop file does not exist, then error
|
||||
if (!lockStopTest({bStanzaStopRequired => true}))
|
||||
{
|
||||
confess &log(ERROR, "stop file does not exist for stanza '${strStanza}'" .
|
||||
"\nHINT: has the pgbackrest stop command been run on this server?", ERROR_FILE_MISSING);
|
||||
}
|
||||
|
||||
# Get the master database object and index
|
||||
my ($oDbMaster, $iMasterRemoteIdx) = dbObjectGet({bMasterOnly => true});
|
||||
|
||||
# Initialize the master file object and path
|
||||
my $oStorageDbMaster = storageDb({iRemoteIdx => $iMasterRemoteIdx});
|
||||
|
||||
# Check if Postgres is running and if so only continue when forced
|
||||
if ($oStorageDbMaster->exists(DB_FILE_POSTMASTERPID) && !cfgOption(CFGOPT_FORCE))
|
||||
{
|
||||
confess &log(ERROR, DB_FILE_POSTMASTERPID . " exists - looks like the postmaster is running. " .
|
||||
"To delete stanza '${strStanza}', shutdown the postmaster for stanza '${strStanza}' and try again, " .
|
||||
"or use --force.", ERROR_POSTMASTER_RUNNING);
|
||||
}
|
||||
|
||||
# Delete the archive info files
|
||||
$oStorageRepo->remove(STORAGE_REPO_ARCHIVE . '/' . ARCHIVE_INFO_FILE, {bIgnoreMissing => true});
|
||||
$oStorageRepo->remove(STORAGE_REPO_ARCHIVE . '/' . ARCHIVE_INFO_FILE . INI_COPY_EXT, {bIgnoreMissing => true});
|
||||
|
||||
# Delete the backup info files
|
||||
$oStorageRepo->remove(STORAGE_REPO_BACKUP . '/' . FILE_BACKUP_INFO, {bIgnoreMissing => true});
|
||||
$oStorageRepo->remove(STORAGE_REPO_BACKUP . '/' . FILE_BACKUP_INFO . INI_COPY_EXT, {bIgnoreMissing => true});
|
||||
|
||||
# Invalidate the backups by removing the manifest files
|
||||
foreach my $strBackup ($oStorageRepo->list(
|
||||
STORAGE_REPO_BACKUP, {strExpression => backupRegExpGet(true, true, true), strSortOrder => 'reverse',
|
||||
bIgnoreMissing => true}))
|
||||
{
|
||||
$oStorageRepo->remove(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST, {bIgnoreMissing => true});
|
||||
$oStorageRepo->remove(STORAGE_REPO_BACKUP . "/${strBackup}/" . FILE_MANIFEST_COPY, {bIgnoreMissing => true});
|
||||
}
|
||||
|
||||
# Recursively remove the stanza archive and backup directories
|
||||
$oStorageRepo->remove(STORAGE_REPO_ARCHIVE, {bRecurse => true, bIgnoreMissing => true});
|
||||
$oStorageRepo->remove(STORAGE_REPO_BACKUP, {bRecurse => true, bIgnoreMissing => true});
|
||||
|
||||
# Remove the stop file so processes can run.
|
||||
lockStart();
|
||||
}
|
||||
else
|
||||
{
|
||||
&log(INFO, "stanza ${strStanza} already deleted");
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn
|
||||
(
|
||||
$strOperation,
|
||||
{name => 'iResult', value => 0, trace => true}
|
||||
);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# parentPathGet
|
||||
#
|
||||
@ -338,7 +426,7 @@ sub existingFileName
|
||||
####################################################################################################################################
|
||||
# errorForce
|
||||
#
|
||||
# Creates the parent path if it doesn't exist and returns the path.
|
||||
# Determines based on encryption or not and errors when force is required but not set.
|
||||
####################################################################################################################################
|
||||
sub errorForce
|
||||
{
|
||||
|
@ -110,6 +110,7 @@ sub libcAutoExportTag
|
||||
'CFGCMD_REMOTE',
|
||||
'CFGCMD_RESTORE',
|
||||
'CFGCMD_STANZA_CREATE',
|
||||
'CFGCMD_STANZA_DELETE',
|
||||
'CFGCMD_STANZA_UPGRADE',
|
||||
'CFGCMD_START',
|
||||
'CFGCMD_STOP',
|
||||
|
@ -20,6 +20,7 @@ Command constants
|
||||
#define CFGCMD_REMOTE cfgCmdRemote
|
||||
#define CFGCMD_RESTORE cfgCmdRestore
|
||||
#define CFGCMD_STANZA_CREATE cfgCmdStanzaCreate
|
||||
#define CFGCMD_STANZA_DELETE cfgCmdStanzaDelete
|
||||
#define CFGCMD_STANZA_UPGRADE cfgCmdStanzaUpgrade
|
||||
#define CFGCMD_START cfgCmdStart
|
||||
#define CFGCMD_STOP cfgCmdStop
|
||||
|
@ -64,6 +64,11 @@ ConfigCommandData configCommandData[CFG_COMMAND_TOTAL] = CONFIG_COMMAND_LIST
|
||||
CONFIG_COMMAND_NAME("stanza-create")
|
||||
)
|
||||
|
||||
CONFIG_COMMAND
|
||||
(
|
||||
CONFIG_COMMAND_NAME("stanza-delete")
|
||||
)
|
||||
|
||||
CONFIG_COMMAND
|
||||
(
|
||||
CONFIG_COMMAND_NAME("stanza-upgrade")
|
||||
|
@ -9,7 +9,7 @@ Automatically generated by Build.pm -- do not modify directly.
|
||||
/***********************************************************************************************************************************
|
||||
Command constants
|
||||
***********************************************************************************************************************************/
|
||||
#define CFG_COMMAND_TOTAL 16
|
||||
#define CFG_COMMAND_TOTAL 17
|
||||
|
||||
/***********************************************************************************************************************************
|
||||
Option constants
|
||||
@ -32,6 +32,7 @@ typedef enum
|
||||
cfgCmdRemote,
|
||||
cfgCmdRestore,
|
||||
cfgCmdStanzaCreate,
|
||||
cfgCmdStanzaDelete,
|
||||
cfgCmdStanzaUpgrade,
|
||||
cfgCmdStart,
|
||||
cfgCmdStop,
|
||||
|
@ -64,6 +64,11 @@ ConfigDefineCommandData configDefineCommandData[] = CFGDEFDATA_COMMAND_LIST
|
||||
CFGDEFDATA_COMMAND_NAME("stanza-create")
|
||||
)
|
||||
|
||||
CFGDEFDATA_COMMAND
|
||||
(
|
||||
CFGDEFDATA_COMMAND_NAME("stanza-delete")
|
||||
)
|
||||
|
||||
CFGDEFDATA_COMMAND
|
||||
(
|
||||
CFGDEFDATA_COMMAND_NAME("stanza-upgrade")
|
||||
@ -243,6 +248,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -276,6 +282,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -310,6 +317,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -338,6 +346,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -397,6 +406,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -433,6 +443,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -498,6 +509,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -577,6 +589,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -610,6 +623,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -644,6 +658,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -674,6 +689,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -705,6 +721,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -739,6 +756,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -790,6 +808,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -845,6 +864,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -874,6 +894,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -904,6 +925,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -937,6 +959,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -965,6 +988,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -1021,6 +1045,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
)
|
||||
|
||||
@ -1053,6 +1078,13 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0")
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStanzaDelete)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_DEFAULT("0")
|
||||
)
|
||||
|
||||
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
|
||||
(
|
||||
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdStop)
|
||||
@ -1167,6 +1199,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1200,6 +1233,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1244,6 +1278,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1334,6 +1369,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1367,6 +1403,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1424,6 +1461,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1611,6 +1649,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
)
|
||||
|
||||
@ -1675,6 +1714,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1714,6 +1754,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1755,6 +1796,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1790,6 +1832,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1829,6 +1872,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1868,6 +1912,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1907,6 +1952,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1946,6 +1992,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -1985,6 +2032,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -2024,6 +2072,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -2063,6 +2112,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -2102,6 +2152,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -2143,6 +2194,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
@ -2368,6 +2420,7 @@ ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRemote)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaCreate)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaDelete)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStanzaUpgrade)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStart)
|
||||
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdStop)
|
||||
|
@ -22,6 +22,7 @@ typedef enum
|
||||
cfgDefCmdRemote,
|
||||
cfgDefCmdRestore,
|
||||
cfgDefCmdStanzaCreate,
|
||||
cfgDefCmdStanzaDelete,
|
||||
cfgDefCmdStanzaUpgrade,
|
||||
cfgDefCmdStart,
|
||||
cfgDefCmdStop,
|
||||
|
@ -22,6 +22,7 @@ Commands:
|
||||
info Retrieve information about backups.
|
||||
restore Restore a database cluster.
|
||||
stanza-create Create the required stanza data.
|
||||
stanza-delete Delete a stanza.
|
||||
stanza-upgrade Upgrade a stanza.
|
||||
start Allow pgBackRest processes to run.
|
||||
stop Stop pgBackRest processes from running.
|
||||
|
@ -78,6 +78,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -467,6 +469,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -546,6 +550,7 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 ERROR: [062]: stop file exists for all stanzas
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = [undef], oException = [object], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = false, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
@ -590,6 +595,7 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 ERROR: [062]: stop file exists for stanza db
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = [undef], oException = [object], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = false, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
@ -643,6 +649,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -999,6 +1007,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = restore
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -1633,6 +1643,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -1950,6 +1962,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
|
@ -78,6 +78,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -488,6 +490,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -592,6 +596,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -671,6 +677,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -772,6 +780,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -875,6 +885,7 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 ERROR: [062]: stop file exists for all stanzas
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = [undef], oException = [object], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = false, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
@ -905,6 +916,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -1280,6 +1293,8 @@ restore delta, backup '[BACKUP-FULL-2]' - add and delete files (db-master host)
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: restore command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --cmd-ssh=/usr/bin/ssh --no-compress --compress-level=3 --compress-level-network=1 --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 --set=[BACKUP-FULL-2] --stanza=db
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = restore
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/db-master/log
|
||||
@ -1704,6 +1719,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
@ -2051,6 +2068,8 @@ P00 DEBUG: Storage::Local->new(): bAllowTemp = <true>, hRule = [hash], lBuf
|
||||
P00 DEBUG: Storage::Local->pathExists(): strPathExp =
|
||||
P00 DEBUG: Storage::Local->pathExists=>: bExists = true
|
||||
P00 DEBUG: Common::Lock::lockAcquire(): bFailOnNoLock = <true>, bRemote = <false>, strLockType = backup
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Lock::lockAcquire=>: bResult = true
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 0770, strPathExp = [TEST_PATH]/backup/log
|
||||
|
@ -70,6 +70,8 @@ db-version="9.4"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
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: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
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], strCipherPassUser = <redacted>, strCipherType = aes-256-cbc, strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
@ -114,6 +116,8 @@ P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
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: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
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(): bCheck = false, strDbVersion = [undef], strFile = 000000010000000100000001, ullDbSysId = [undef]
|
||||
|
@ -62,6 +62,8 @@ db-version="9.4"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-1] --cmd-ssh=/usr/bin/ssh --no-compress --compress-level=3 --compress-level-network=1 --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 --stanza=db
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = false, iCompressLevel = 3, strWalFile = 000000010000000100000001, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-push>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
@ -100,6 +102,8 @@ P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-1] --no-compress --compress-level=3 --compress-level-network=1 --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 --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: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-get>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
P00 DEBUG: Protocol::Helper::protocolParam(): iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = archive-get, strRemoteType = backup
|
||||
|
@ -180,6 +180,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push 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=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 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
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], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
@ -465,6 +467,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push 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=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 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000002, 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], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = [TEST_PATH]/db-master/repo, strTempExtension = pgbackrest.tmp
|
||||
@ -555,6 +559,8 @@ db-version="9.4"
|
||||
P00 INFO: archive-get 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=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: get WAL segment 000000010000000100000002
|
||||
P00 DEBUG: Archive::Get::Get->get(): strDestinationFile = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG, strSourceArchive = 000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Storage::Posix::Driver->new(): bFileSync = <true>, bPathSync = <true>
|
||||
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::Base->getCheck(): bCheck = false, strDbVersion = [undef], strFile = 000000010000000100000002, ullDbSysId = [undef]
|
||||
@ -967,3 +973,47 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
stanza-delete db - fail on missing stop file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 ERROR: [055]: stop file does not exist for stanza 'db'
|
||||
HINT: has the pgbackrest stop command been run on this server?
|
||||
P00 INFO: stanza-delete command end: aborted with exception [055]
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/db-master/repo/backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
db
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/db-master/repo/archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
db
|
||||
|
||||
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=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: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 0, oException = [undef], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Common::Lock::lockRelease(): bFailOnNoLock = false
|
||||
P00 INFO: stop command end: completed successfully
|
||||
P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
stanza-delete db - successfully delete the stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --protocol-timeout=60 --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: stanza-delete command end: completed successfully
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/db-master/repo/backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/db-master/repo/archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -204,6 +204,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --compress-level=3 --compress-level-network=1 --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 --stanza=db
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000001, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-push>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
@ -322,6 +324,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --compress-level=3 --compress-level-network=1 --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 --stanza=db
|
||||
P00 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000002, strWalPath = [TEST_PATH]/db-master/db/base/pg_xlog
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-push>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
@ -412,6 +416,8 @@ db-version="9.4"
|
||||
P00 INFO: archive-get command begin [BACKREST-VERSION]: --backup-cmd=[BACKREST-BIN] --backup-config=[TEST_PATH]/backup/pgbackrest.conf --backup-host=backup --backup-user=[USER-2] --compress-level=3 --compress-level-network=1 --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 --stanza=db
|
||||
P00 INFO: get WAL segment 000000010000000100000002
|
||||
P00 DEBUG: Archive::Get::Get->get(): strDestinationFile = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG, strSourceArchive = 000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Protocol::Helper::protocolGet(): bCache = <true>, iProcessIdx = [undef], iRemoteIdx = <1>, strBackRestBin = [undef], strCommand = <archive-get>, strRemoteType = backup
|
||||
P00 DEBUG: Protocol::Helper::protocolGet: create (cached) remote protocol
|
||||
P00 DEBUG: Protocol::Helper::protocolParam(): iProcessIdx = [undef], iRemoteIdx = 1, strBackRestBin = [undef], strCommand = archive-get, strRemoteType = backup
|
||||
@ -792,3 +798,47 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
stanza-delete db - fail on missing stop file (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 ERROR: [055]: stop file does not exist for stanza 'db'
|
||||
HINT: has the pgbackrest stop command been run on this server?
|
||||
P00 INFO: stanza-delete command end: aborted with exception [055]
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/backup/repo/backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
db
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/backup/repo/archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
db
|
||||
|
||||
stop db stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db stop
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stop 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-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/backup/lock
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 0, oException = [undef], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Common::Lock::lockRelease(): bFailOnNoLock = false
|
||||
P00 INFO: stop command end: completed successfully
|
||||
P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
stanza-delete db - successfully delete the stanza (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --protocol-timeout=60 --repo-cipher-pass=<redacted> --repo-cipher-type=aes-256-cbc --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: stanza-delete command end: completed successfully
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/backup/repo/backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls [TEST_PATH]/backup/repo/archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -180,6 +180,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push 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=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --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 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000001
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
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], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = /, strTempExtension = pgbackrest.tmp
|
||||
@ -440,6 +442,8 @@ db-version="9.3"
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: archive-push 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=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --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 DEBUG: Archive::Push::Push->process(): strWalPathFile = [TEST_PATH]/db-master/db/base/pg_xlog/000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
P00 DEBUG: Archive::Push::File::archivePushFile(): bCompress = true, iCompressLevel = 3, strWalFile = 000000010000000100000002, 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], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = /, strTempExtension = pgbackrest.tmp
|
||||
@ -530,6 +534,8 @@ db-version="9.4"
|
||||
P00 INFO: archive-get 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=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/log --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: get WAL segment 000000010000000100000002
|
||||
P00 DEBUG: Archive::Get::Get->get(): strDestinationFile = [TEST_PATH]/db-master/db/base/pg_xlog/RECOVERYXLOG, strSourceArchive = 000000010000000100000002
|
||||
P00 DEBUG: Common::Lock::lockStopTest(): bStanzaStopRequired = <false>
|
||||
P00 DEBUG: Common::Lock::lockStopTest=>: bStopExists = false
|
||||
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], strCipherPassUser = [undef], strCipherType = [undef], strDefaultFileMode = <0640>, strDefaultPathMode = <0750>, strPathBase = /, strTempExtension = pgbackrest.tmp
|
||||
P00 DEBUG: Archive::Base->getCheck(): bCheck = false, strDbVersion = [undef], strFile = 000000010000000100000002, ullDbSysId = [undef]
|
||||
@ -956,3 +962,45 @@ info all stanzas - db upgraded - db-1 and db-2 listed (db-master host)
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
stanza-delete db - fail on missing stop file (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --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: [055]: stop file does not exist for stanza 'db'
|
||||
HINT: has the pgbackrest stop command been run on this server?
|
||||
P00 INFO: stanza-delete command end: aborted with exception [055]
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls //backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls //archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
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=debug --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/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 DEBUG: Storage::Local->pathCreate(): bCreateParent = true, bIgnoreExists = true, strMode = 770, strPathExp = [TEST_PATH]/db-master/lock
|
||||
P00 DEBUG: Common::Exit::exitSafe(): iExitCode = 0, oException = [undef], strSignal = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy(): bComplete = true, iRemoteIdx = [undef], strRemoteType = [undef]
|
||||
P00 DEBUG: Protocol::Helper::protocolDestroy=>: iExitStatus = 0
|
||||
P00 DEBUG: Common::Lock::lockRelease(): bFailOnNoLock = false
|
||||
P00 INFO: stop command end: completed successfully
|
||||
P00 DEBUG: Common::Exit::exitSafe=>: iExitCode = 0
|
||||
|
||||
stanza-delete db - successfully delete the stanza (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --stanza=db --log-level-console=detail stanza-delete
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: stanza-delete 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 --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-delete command end: completed successfully
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls //backup/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
db must not exist for successful delete
|
||||
> ls //archive/
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
@ -700,7 +700,7 @@ my $oTestDef =
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'all',
|
||||
&TESTDEF_TOTAL => 8,
|
||||
&TESTDEF_TOTAL => 9,
|
||||
&TESTDEF_CONTAINER => true,
|
||||
|
||||
&TESTDEF_COVERAGE =>
|
||||
|
@ -867,6 +867,55 @@ sub stanzaUpgrade
|
||||
return logDebugReturn($strOperation);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# stanzaDelete
|
||||
####################################################################################################################################
|
||||
sub stanzaDelete
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
# Assign function parameters, defaults, and log debug info
|
||||
my
|
||||
(
|
||||
$strOperation,
|
||||
$strComment,
|
||||
$oParam,
|
||||
) =
|
||||
logDebugParam
|
||||
(
|
||||
__PACKAGE__ . '->stanzaDelete', \@_,
|
||||
{name => 'strComment'},
|
||||
{name => 'oParam', required => false},
|
||||
);
|
||||
|
||||
$strComment =
|
||||
'stanza-delete ' . $self->stanza() . ' - ' . $strComment .
|
||||
' (' . $self->nameGet() . ' host)';
|
||||
&log(INFO, " $strComment");
|
||||
|
||||
$self->executeSimple(
|
||||
$self->backrestExe() .
|
||||
' --config=' . $self->backrestConfig() .
|
||||
' --stanza=' . $self->stanza() .
|
||||
' --log-level-console=detail' .
|
||||
(defined($$oParam{strOptionalParam}) ? " $$oParam{strOptionalParam}" : '') .
|
||||
' stanza-delete',
|
||||
{strComment => $strComment, iExpectedExitStatus => $$oParam{iExpectedExitStatus}, oLogTest => $self->{oLogTest},
|
||||
bLogOutput => $self->synthetic()});
|
||||
|
||||
if (defined($self->{oLogTest}) && $self->synthetic())
|
||||
{
|
||||
$self->{oLogTest}->logAdd(
|
||||
'ls ' . $self->repoPath() . '/backup/', $self->stanza() . ' must not exist for successful delete',
|
||||
join("\n", storageRepo()->list('backup/')));
|
||||
$self->{oLogTest}->logAdd(
|
||||
'ls ' . $self->repoPath() . '/archive/', $self->stanza() . ' must not exist for successful delete',
|
||||
join("\n", storageRepo()->list('archive/')));
|
||||
}
|
||||
|
||||
# Return from function and log return values if any
|
||||
return logDebugReturn($strOperation);
|
||||
}
|
||||
|
||||
####################################################################################################################################
|
||||
# start
|
||||
|
@ -364,6 +364,13 @@ sub run
|
||||
|
||||
# Confirm info command displays the JSON correctly
|
||||
$oHostDbMaster->info('db upgraded - db-1 and db-2 listed', {strOutput => CFGOPTVAL_INFO_OUTPUT_JSON});
|
||||
|
||||
# Delete the stanza
|
||||
#--------------------------------------------------------------------------------------------------------------------------
|
||||
$oHostBackup->stanzaDelete('fail on missing stop file', {iExpectedExitStatus => ERROR_FILE_MISSING});
|
||||
|
||||
$oHostBackup->stop({strStanza => $self->stanza()});
|
||||
$oHostBackup->stanzaDelete('successfully delete the stanza');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ use Storable qw(dclone);
|
||||
|
||||
use pgBackRest::Archive::Common;
|
||||
use pgBackRest::Archive::Info;
|
||||
use pgBackRest::Backup::Common;
|
||||
use pgBackRest::Backup::Info;
|
||||
use pgBackRest::Common::Cipher;
|
||||
use pgBackRest::Common::Exception;
|
||||
@ -667,6 +668,140 @@ sub run
|
||||
$self->testException(sub {$oStanza->errorForce($strMessage, ERROR_FILE_MISSING, $strFile, true,
|
||||
$self->{strArchivePath}, $self->{strBackupPath})}, ERROR_FILE_MISSING, $strMessage);
|
||||
}
|
||||
|
||||
################################################################################################################################
|
||||
if ($self->begin("Stanza::stanzaDelete()"))
|
||||
{
|
||||
# Create the stanza
|
||||
$self->configTestLoad(CFGCMD_STANZA_CREATE);
|
||||
my $oStanza = new pgBackRest::Stanza();
|
||||
$oStanza->stanzaCreate();
|
||||
|
||||
# Attempt to delete without running stop
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestClear(CFGOPT_ONLINE);
|
||||
$self->configTestLoad(CFGCMD_STANZA_DELETE);
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaDelete()}, ERROR_FILE_MISSING,
|
||||
"stop file does not exist for stanza '" . $self->stanza() . "'" .
|
||||
"\nHINT: has the pgbackrest stop command been run on this server?");
|
||||
|
||||
# Create a stop file and attempt to delete with postgres running
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
lockStop();
|
||||
|
||||
# Simulate postgres still running
|
||||
executeTest('touch ' . $self->{strDbPath} . qw(/) . DB_FILE_POSTMASTERPID);
|
||||
|
||||
$self->testException(sub {$oStanza->stanzaDelete()}, ERROR_POSTMASTER_RUNNING,
|
||||
DB_FILE_POSTMASTERPID . " exists - looks like the postmaster is running. " .
|
||||
"To delete stanza '" . $self->stanza() . "', shutdown the postmaster for stanza '" . $self->stanza() .
|
||||
"' and try again, or use --force.");
|
||||
|
||||
# Force deletion
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->optionTestSetBool(CFGOPT_FORCE, true);
|
||||
$self->configTestLoad(CFGCMD_STANZA_DELETE);
|
||||
|
||||
$self->testResult(sub {$oStanza->stanzaDelete()}, 0, 'successfully delete stanza with force');
|
||||
$self->testResult(sub {storageRepo()->pathExists($self->{strArchivePath}) ||
|
||||
storageRepo()->pathExists($self->{strBackupPath})},
|
||||
false, ' neither archive nor backup repo paths for the stanza exist');
|
||||
|
||||
# Remove postmaster.pid and clear force
|
||||
storageTest()->remove($self->{strDbPath} . qw(/) . DB_FILE_POSTMASTERPID);
|
||||
$self->optionTestClear(CFGOPT_FORCE);
|
||||
|
||||
# Rerun stanza-delete without force and with missing stanza directories
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$self->testResult(sub {$oStanza->stanzaDelete()}, 0, 'successful - stanza already deleted');
|
||||
|
||||
# Recursive dir delete with archive directory and stanza directory but missing info files
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
storageTest()->pathCreate($self->{strArchivePath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1", {bCreateParent => true});
|
||||
storageRepo()->pathCreate(STORAGE_REPO_ARCHIVE . "/" . PG_VERSION_94 . "-1/0000000100000001");
|
||||
executeTest('touch ' . $self->{strArchivePath} . "/" . PG_VERSION_94 . "-1/0000000100000001/" . BOGUS);
|
||||
|
||||
storageTest()->pathCreate($self->{strBackupPath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
my $strFullLabel = backupLabelFormat(CFGOPTVAL_BACKUP_TYPE_FULL, undef, 1482000000);
|
||||
storageRepo()->pathCreate(STORAGE_REPO_BACKUP . "/${strFullLabel}", {bCreateParent => true});
|
||||
executeTest('touch ' . $self->{strBackupPath} . "/${strFullLabel}/" . BOGUS);
|
||||
|
||||
# Create an inaccessible file
|
||||
executeTest("sudo chgrp 777 " . $self->{strBackupPath} . "/${strFullLabel}/" . BOGUS);
|
||||
executeTest("sudo chown 777 " . $self->{strBackupPath} . "/${strFullLabel}/" . BOGUS);
|
||||
|
||||
lockStop();
|
||||
$self->testResult(sub {$oStanza->stanzaDelete()}, 0,
|
||||
'successful - recursive delete with missing info files and inaccessible file');
|
||||
$self->testResult(sub {storageRepo()->pathExists($self->{strArchivePath}) ||
|
||||
storageRepo()->pathExists($self->{strBackupPath})},
|
||||
false, ' neither archive nor backup repo paths for the stanza exist');
|
||||
|
||||
# Make the archive directory inaccessible
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
storageTest()->pathCreate($self->{strArchivePath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
|
||||
executeTest("sudo chgrp 7777 " . $self->{strArchivePath});
|
||||
executeTest("sudo chown 7777 " . $self->{strArchivePath});
|
||||
|
||||
lockStop();
|
||||
$self->testException(sub {$oStanza->stanzaDelete()}, ERROR_FILE_OPEN,
|
||||
"unable to remove file '" . $self->{strArchivePath} . "/" . ARCHIVE_INFO_FILE . "': Permission denied");
|
||||
|
||||
# Remove the repo
|
||||
executeTest("sudo rm -rf " . $self->{strArchivePath});
|
||||
|
||||
# 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->testResult(sub {$oStanza->stanzaCreate()}, 0, 'successfully created encrypted stanza');
|
||||
|
||||
# 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-" . $self->walGenerateContentChecksum(PG_VERSION_93));
|
||||
my $oArchiveInfo = new pgBackRest::Archive::Info($self->{strArchivePath});
|
||||
storageRepo()->put(
|
||||
$strArchivedFile, $self->walGenerateContent(PG_VERSION_93), {strCipherPass => $oArchiveInfo->cipherPassSub()});
|
||||
$self->testResult(sub {storageRepo()->encrypted($strArchivedFile)}, true, ' created encrypted archive WAL');
|
||||
|
||||
my $strBackupPath = storageRepo->pathGet(STORAGE_REPO_BACKUP . "/${strFullLabel}");
|
||||
my $strBackupManifestFile = "$strBackupPath/" . FILE_MANIFEST;
|
||||
my $iDbCatalogVersion = 201409291;
|
||||
|
||||
storageRepo()->pathCreate(STORAGE_REPO_BACKUP . "/${strFullLabel}", {bCreateParent => true});
|
||||
my $oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath});
|
||||
|
||||
$self->testResult(sub {(new pgBackRest::Manifest($strBackupManifestFile, {bLoad => false, strDbVersion => PG_VERSION_94,
|
||||
strCipherPass => $oBackupInfo->cipherPassSub(), strCipherPassSub => 'x'}))->save()},
|
||||
"[undef]", ' manifest saved');
|
||||
|
||||
lockStop();
|
||||
$self->testResult(sub {$oStanza->stanzaDelete()}, 0,
|
||||
' successful - recursive delete on encrypted repo');
|
||||
$self->testResult(sub {storageRepo()->pathExists($self->{strArchivePath}) ||
|
||||
storageRepo()->pathExists($self->{strBackupPath})},
|
||||
false, ' neither archive nor backup repo paths for the stanza exist');
|
||||
|
||||
# For test coverage: create new stanza with delete command, call process and remove only backup path
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
lockStop();
|
||||
$self->configTestLoad(CFGCMD_STANZA_DELETE);
|
||||
$oStanza = new pgBackRest::Stanza();
|
||||
storageTest()->pathCreate($self->{strBackupPath}, {bIgnoreExists => true, bCreateParent => true});
|
||||
$self->testResult(sub {$oStanza->process()}, 0,
|
||||
'successfully remove backup path');
|
||||
$self->testResult(sub {storageRepo()->pathExists($self->{strArchivePath}) ||
|
||||
storageRepo()->pathExists($self->{strBackupPath})},
|
||||
false, ' neither archive nor backup repo paths for the stanza exist');
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user