You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-08-10 22:21:39 +02:00
Fixed config warnings raised from a remote process causing errors in the master process.
Fixed by Cynthia Shang.
This commit is contained in:
committed by
David Steele
parent
74053ed842
commit
7e982f05f5
@@ -176,6 +176,14 @@
|
||||
|
||||
<p>Fixed the <cmd>backup</cmd> command so the <br-setting>backup-standby</br-setting> option is reset (and the backup proceeds on the master) if the standby is not configured and/or reachable.</p>
|
||||
</release-item>
|
||||
|
||||
<release-item>
|
||||
<release-item-contributor-list>
|
||||
<release-item-contributor id="shang.cynthia"/>
|
||||
</release-item-contributor-list>
|
||||
|
||||
<p>Fixed config warnings raised from a remote process causing errors in the master process.</p>
|
||||
</release-item>
|
||||
</release-bug-list>
|
||||
|
||||
<release-refactor-list>
|
||||
|
@@ -2734,7 +2734,7 @@ sub optionValidate
|
||||
####################################################################################################################################
|
||||
# configFileValidate
|
||||
#
|
||||
# Determine if the configuration file contains any invalid options or placements.
|
||||
# Determine if the configuration file contains any invalid options or placements. Not valid on remote.
|
||||
####################################################################################################################################
|
||||
sub configFileValidate
|
||||
{
|
||||
@@ -2742,50 +2742,53 @@ sub configFileValidate
|
||||
|
||||
my $bFileValid = true;
|
||||
|
||||
foreach my $strSectionKey (keys(%$oConfig))
|
||||
if (!commandTest(CMD_REMOTE))
|
||||
{
|
||||
my ($strSection, $strCommand) = ($strSectionKey =~ m/([^:]*):*(\w*-*\w*)/);
|
||||
|
||||
foreach my $strOption (keys(%{$$oConfig{$strSectionKey}}))
|
||||
foreach my $strSectionKey (keys(%$oConfig))
|
||||
{
|
||||
my $strValue = $$oConfig{$strSectionKey}{$strOption};
|
||||
my ($strSection, $strCommand) = ($strSectionKey =~ m/([^:]*):*(\w*-*\w*)/);
|
||||
|
||||
# Is the option listed as an alternate name for another option? If so, replace it with the recognized option.
|
||||
my $strOptionAltName = optionAltName($strOption);
|
||||
foreach my $strOption (keys(%{$$oConfig{$strSectionKey}}))
|
||||
{
|
||||
my $strValue = $$oConfig{$strSectionKey}{$strOption};
|
||||
|
||||
if (defined($strOptionAltName))
|
||||
{
|
||||
$strOption = $strOptionAltName;
|
||||
}
|
||||
# Is the option listed as an alternate name for another option? If so, replace it with the recognized option.
|
||||
my $strOptionAltName = optionAltName($strOption);
|
||||
|
||||
# Is the option a valid pgbackrest option?
|
||||
if (!(exists($oOptionRule{$strOption}) || defined($strOptionAltName)))
|
||||
{
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " file contains invalid option '${strOption}'");
|
||||
$bFileValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
# Is the option valid for the command section in which it is located?
|
||||
if (defined($strCommand) && $strCommand ne '')
|
||||
if (defined($strOptionAltName))
|
||||
{
|
||||
if (!defined($oOptionRule{$strOption}{&OPTION_RULE_COMMAND}{$strCommand}))
|
||||
{
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " valid option '${strOption}' is not valid for command " .
|
||||
"'${strCommand}'");
|
||||
$bFileValid = false;
|
||||
}
|
||||
$strOption = $strOptionAltName;
|
||||
}
|
||||
|
||||
# Is the valid option a stanza-only option and not located in a global section?
|
||||
if ($oOptionRule{$strOption}{&OPTION_RULE_SECTION} eq CONFIG_SECTION_STANZA &&
|
||||
$strSection eq CONFIG_SECTION_GLOBAL)
|
||||
# Is the option a valid pgbackrest option?
|
||||
if (!(exists($oOptionRule{$strOption}) || defined($strOptionAltName)))
|
||||
{
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " valid option '${strOption}' is a stanza section option and is not " .
|
||||
"valid in section ${strSection}\n" .
|
||||
"HINT: global options can be specified in global or stanza sections but not visa-versa");
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " file contains invalid option '${strOption}'");
|
||||
$bFileValid = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
# Is the option valid for the command section in which it is located?
|
||||
if (defined($strCommand) && $strCommand ne '')
|
||||
{
|
||||
if (!defined($oOptionRule{$strOption}{&OPTION_RULE_COMMAND}{$strCommand}))
|
||||
{
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " valid option '${strOption}' is not valid for command " .
|
||||
"'${strCommand}'");
|
||||
$bFileValid = false;
|
||||
}
|
||||
}
|
||||
|
||||
# Is the valid option a stanza-only option and not located in a global section?
|
||||
if ($oOptionRule{$strOption}{&OPTION_RULE_SECTION} eq CONFIG_SECTION_STANZA &&
|
||||
$strSection eq CONFIG_SECTION_GLOBAL)
|
||||
{
|
||||
&log(WARN, optionGet(OPTION_CONFIG) . " valid option '${strOption}' is a stanza section option and is not " .
|
||||
"valid in section ${strSection}\n" .
|
||||
"HINT: global options can be specified in global or stanza sections but not visa-versa");
|
||||
$bFileValid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -4195,13 +4195,13 @@ info bogus stanza - bogus stanza (db-master host)
|
||||
[BACKUP-DIFF-5].manifest.gz
|
||||
[BACKUP-FULL-3].manifest.gz
|
||||
|
||||
diff backup - option backup-standby reset - backup performed from master (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --log-level-console=detail --backup-standby --type=diff --stanza=db backup
|
||||
diff backup - config file warning on local (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --log-level-console=detail 2>&1 --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --no-compress --config=[TEST_PATH]/db-master/pgbackrest.conf --db-path=[TEST_PATH]/db-master/db/base-2/base --lock-path=[TEST_PATH]/db-master/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/repo/log --no-online --repo-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
WARN: [TEST_PATH]/db-master/pgbackrest.conf file contains invalid option 'bogus'
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --config=[TEST_PATH]/db-master/pgbackrest.conf --db-path=[TEST_PATH]/db-master/db/base-2/base --lock-path=[TEST_PATH]/db-master/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/repo/log --no-online --repo-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but standby is not properly configured - backups will be performed from the master
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0
|
||||
P00 INFO: diff backup size = 9B
|
||||
@@ -4230,6 +4230,7 @@ repo-path=[TEST_PATH]/db-master/repo
|
||||
[global:backup]
|
||||
archive-copy=y
|
||||
start-fast=y
|
||||
bogus=bogus
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-6]/backup.manifest
|
||||
-----------------------------------------------------------------------------------------
|
||||
@@ -4346,3 +4347,156 @@ db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
diff backup - option backup-standby reset - backup performed from master (db-master host)
|
||||
> [CONTAINER-EXEC] db-master [BACKREST-BIN] --config=[TEST_PATH]/db-master/pgbackrest.conf --no-online --log-level-console=detail --backup-standby --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --no-compress --config=[TEST_PATH]/db-master/pgbackrest.conf --db-path=[TEST_PATH]/db-master/db/base-2/base --lock-path=[TEST_PATH]/db-master/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/repo/log --no-online --repo-path=[TEST_PATH]/db-master/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but standby is not properly configured - backups will be performed from the master
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
P01 INFO: backup file [TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0
|
||||
P00 INFO: diff backup size = 9B
|
||||
P00 INFO: new backup label = [BACKUP-DIFF-7]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --no-compress --config=[TEST_PATH]/db-master/pgbackrest.conf --lock-path=[TEST_PATH]/db-master/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/db-master/repo/log --repo-path=[TEST_PATH]/db-master/repo --stanza=db
|
||||
P00 INFO: option 'retention-archive' is not set - archive logs will not be expired
|
||||
P00 INFO: expire command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/pgbackrest.conf
|
||||
----------------------------------------------------------
|
||||
[db]
|
||||
db-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
|
||||
[db:restore]
|
||||
|
||||
[global]
|
||||
compress=n
|
||||
lock-path=[TEST_PATH]/db-master/repo/lock
|
||||
log-level-console=debug
|
||||
log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/db-master/repo/log
|
||||
repo-path=[TEST_PATH]/db-master/repo
|
||||
|
||||
[global:backup]
|
||||
archive-copy=y
|
||||
start-fast=y
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/[BACKUP-DIFF-7]/backup.manifest
|
||||
-----------------------------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup]
|
||||
backup-label="[BACKUP-DIFF-7]"
|
||||
backup-prior="[BACKUP-FULL-3]"
|
||||
backup-timestamp-copy-start=[TIMESTAMP]
|
||||
backup-timestamp-start=[TIMESTAMP]
|
||||
backup-timestamp-stop=[TIMESTAMP]
|
||||
backup-type="diff"
|
||||
|
||||
[backup:db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[backup:option]
|
||||
option-archive-check=true
|
||||
option-archive-copy=true
|
||||
option-backup-standby=false
|
||||
option-checksum-page=false
|
||||
option-compress=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
|
||||
[backup:target]
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"}
|
||||
pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/pg_internal.init={"checksum":"bc46a4e0420d357db7bfbcb7b5fcbc613dc48c1b","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
master=false
|
||||
mode="0600"
|
||||
user="[USER-1]"
|
||||
|
||||
[target:link]
|
||||
pg_data/pg_tblspc/2={"destination":"../../tablespace/ts2"}
|
||||
|
||||
[target:link:default]
|
||||
group="[GROUP-1]"
|
||||
user="[USER-1]"
|
||||
|
||||
[target:path]
|
||||
pg_data={}
|
||||
pg_data/base={}
|
||||
pg_data/base/1={}
|
||||
pg_data/base/16384={}
|
||||
pg_data/base/32768={}
|
||||
pg_data/global={}
|
||||
pg_data/pg_clog={}
|
||||
pg_data/pg_dynshmem={}
|
||||
pg_data/pg_notify={}
|
||||
pg_data/pg_replslot={}
|
||||
pg_data/pg_serial={}
|
||||
pg_data/pg_snapshots={}
|
||||
pg_data/pg_stat={}
|
||||
pg_data/pg_stat_tmp={}
|
||||
pg_data/pg_subtrans={}
|
||||
pg_data/pg_tblspc={}
|
||||
pg_tblspc={}
|
||||
pg_tblspc/2={}
|
||||
pg_tblspc/2/[TS_PATH-1]={}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768={}
|
||||
|
||||
[target:path:default]
|
||||
group="[GROUP-1]"
|
||||
mode="0700"
|
||||
user="[USER-1]"
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/repo/backup/db/backup.info
|
||||
---------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup:current]
|
||||
[BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
@@ -4362,13 +4362,12 @@ info bogus stanza - bogus stanza (db-master host)
|
||||
}
|
||||
]
|
||||
|
||||
diff backup - option backup-standby reset - backup performed from master (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=detail --backup-standby --type=diff --stanza=db backup
|
||||
diff backup - config file not validated on remote (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=detail --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --no-compress --config=[TEST_PATH]/backup/pgbackrest.conf --db-cmd=[BACKREST-BIN] --db-config=[TEST_PATH]/db-master/pgbackrest.conf --db-host=db-master --db-path=[TEST_PATH]/db-master/db/base-2/base --db-user=[USER-1] --lock-path=[TEST_PATH]/backup/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/repo/log --no-online --repo-path=[TEST_PATH]/backup/repo --stanza=db --start-fast --type=diff
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --no-compress --config=[TEST_PATH]/backup/pgbackrest.conf --db-cmd=[BACKREST-BIN] --db-config=[TEST_PATH]/db-master/pgbackrest.conf --db-host=db-master --db-path=[TEST_PATH]/db-master/db/base-2/base --db-user=[USER-1] --lock-path=[TEST_PATH]/backup/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/repo/log --no-online --repo-path=[TEST_PATH]/backup/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but standby is not properly configured - backups will be performed from the master
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0
|
||||
P00 INFO: diff backup size = 9B
|
||||
@@ -4397,6 +4396,7 @@ log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/db-master/spool/log
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
bogus=bogus
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/pgbackrest.conf
|
||||
-------------------------------------------------------
|
||||
@@ -4528,3 +4528,171 @@ db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
||||
diff backup - option backup-standby reset - backup performed from master (backup host)
|
||||
> [CONTAINER-EXEC] backup [BACKREST-BIN] --config=[TEST_PATH]/backup/pgbackrest.conf --no-online --log-level-console=detail --backup-standby --type=diff --stanza=db backup
|
||||
------------------------------------------------------------------------------------------------------------------------------------
|
||||
P00 INFO: backup command begin [BACKREST-VERSION]: --backup-standby --no-compress --config=[TEST_PATH]/backup/pgbackrest.conf --db-cmd=[BACKREST-BIN] --db-config=[TEST_PATH]/db-master/pgbackrest.conf --db-host=db-master --db-path=[TEST_PATH]/db-master/db/base-2/base --db-user=[USER-1] --lock-path=[TEST_PATH]/backup/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/repo/log --no-online --repo-path=[TEST_PATH]/backup/repo --stanza=db --start-fast --type=diff
|
||||
P00 WARN: option retention-full is not set, the repository may run out of space
|
||||
HINT: to retain full backups indefinitely (without warning), set option 'retention-full' to the maximum.
|
||||
P00 WARN: option backup-standby is enabled but standby is not properly configured - backups will be performed from the master
|
||||
P00 INFO: last backup label = [BACKUP-FULL-3], version = [VERSION-1]
|
||||
P01 INFO: backup file db-master:[TEST_PATH]/db-master/db/base-2/base/base/base2.txt (9B, 100%) checksum cafac3c59553f2cfde41ce2e62e7662295f108c0
|
||||
P00 INFO: diff backup size = 9B
|
||||
P00 INFO: new backup label = [BACKUP-DIFF-7]
|
||||
P00 INFO: backup command end: completed successfully
|
||||
P00 INFO: expire command begin [BACKREST-VERSION]: --no-compress --config=[TEST_PATH]/backup/pgbackrest.conf --db-cmd=[BACKREST-BIN] --db-config=[TEST_PATH]/db-master/pgbackrest.conf --db-host=db-master --lock-path=[TEST_PATH]/backup/repo/lock --log-level-console=detail --log-level-file=trace --log-level-stderr=off --log-path=[TEST_PATH]/backup/repo/log --repo-path=[TEST_PATH]/backup/repo --stanza=db
|
||||
P00 INFO: option 'retention-archive' is not set - archive logs will not be expired
|
||||
P00 INFO: expire command end: completed successfully
|
||||
|
||||
+ supplemental file: [TEST_PATH]/db-master/pgbackrest.conf
|
||||
----------------------------------------------------------
|
||||
[db]
|
||||
db-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
|
||||
[db:restore]
|
||||
|
||||
[global]
|
||||
backup-cmd=[BACKREST-BIN]
|
||||
backup-config=[TEST_PATH]/backup/pgbackrest.conf
|
||||
backup-host=backup
|
||||
backup-user=[USER-2]
|
||||
compress=n
|
||||
lock-path=[TEST_PATH]/db-master/spool/lock
|
||||
log-level-console=debug
|
||||
log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/db-master/spool/log
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/pgbackrest.conf
|
||||
-------------------------------------------------------
|
||||
[db]
|
||||
db-cmd=[BACKREST-BIN]
|
||||
db-config=[TEST_PATH]/db-master/pgbackrest.conf
|
||||
db-host=db-master
|
||||
db-path=[TEST_PATH]/db-master/db/base-2/base
|
||||
db-user=[USER-1]
|
||||
|
||||
[global]
|
||||
compress=n
|
||||
lock-path=[TEST_PATH]/backup/repo/lock
|
||||
log-level-console=debug
|
||||
log-level-file=trace
|
||||
log-level-stderr=off
|
||||
log-path=[TEST_PATH]/backup/repo/log
|
||||
repo-path=[TEST_PATH]/backup/repo
|
||||
|
||||
[global:backup]
|
||||
archive-copy=y
|
||||
start-fast=y
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/[BACKUP-DIFF-7]/backup.manifest
|
||||
--------------------------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup]
|
||||
backup-label="[BACKUP-DIFF-7]"
|
||||
backup-prior="[BACKUP-FULL-3]"
|
||||
backup-timestamp-copy-start=[TIMESTAMP]
|
||||
backup-timestamp-start=[TIMESTAMP]
|
||||
backup-timestamp-stop=[TIMESTAMP]
|
||||
backup-type="diff"
|
||||
|
||||
[backup:db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[backup:option]
|
||||
option-archive-check=true
|
||||
option-archive-copy=true
|
||||
option-backup-standby=false
|
||||
option-checksum-page=false
|
||||
option-compress=false
|
||||
option-hardlink=false
|
||||
option-online=false
|
||||
|
||||
[backup:target]
|
||||
pg_data={"path":"[TEST_PATH]/db-master/db/base-2/base","type":"path"}
|
||||
pg_tblspc/2={"path":"../../tablespace/ts2","tablespace-id":"2","tablespace-name":"ts2","type":"link"}
|
||||
|
||||
[target:file]
|
||||
pg_data/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/badchecksum.txt={"checksum":"f927212cd08d11a42a666b2f04235398e9ceeb51","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/12000={"checksum":"22c98d248ff548311eda88559e4a8405ed77c003","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/1/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","mode":"0660","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/17000={"checksum":"7579ada0808d7f98087a0a586d0df9de009cdc33","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/16384/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000={"checksum":"4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33000.32767={"checksum":"21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/33001={"checksum":"6bf316f11d28c28914ea9be92c00de9bea6d9a6b","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/32768/PG_VERSION={"checksum":"184473f470864e067ee3a22e64b47b0a1c356f29","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/base/base2.txt={"checksum":"cafac3c59553f2cfde41ce2e62e7662295f108c0","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_data/global/pg_control={"checksum":"89373d9f2973502940de06bc5212489df3f8a912","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/pg_stat/global.stat={"checksum":"e350d5ce0153f3e22d5db21cf2a4eff00f3ee877","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_data/postgresql.conf={"checksum":"6721d92c9fcdf4248acff1f9a1377127d9064807","master":true,"reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-2]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/pg_internal.init={"checksum":"bc46a4e0420d357db7bfbcb7b5fcbc613dc48c1b","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2.txt={"checksum":"dc7f76e43c46101b47acc55ae4d593a9e6983578","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768/tablespace2c.txt={"checksum":"dfcb8679956b734706cf87259d50c88f83e80e66","reference":"[BACKUP-FULL-3]","size":[SIZE],"timestamp":[TIMESTAMP-1]}
|
||||
|
||||
[target:file:default]
|
||||
group="[GROUP-1]"
|
||||
master=false
|
||||
mode="0600"
|
||||
user="[USER-1]"
|
||||
|
||||
[target:link]
|
||||
pg_data/pg_tblspc/2={"destination":"../../tablespace/ts2"}
|
||||
|
||||
[target:link:default]
|
||||
group="[GROUP-1]"
|
||||
user="[USER-1]"
|
||||
|
||||
[target:path]
|
||||
pg_data={}
|
||||
pg_data/base={}
|
||||
pg_data/base/1={}
|
||||
pg_data/base/16384={}
|
||||
pg_data/base/32768={}
|
||||
pg_data/global={}
|
||||
pg_data/pg_clog={}
|
||||
pg_data/pg_stat={}
|
||||
pg_data/pg_tblspc={}
|
||||
pg_tblspc={}
|
||||
pg_tblspc/2={}
|
||||
pg_tblspc/2/[TS_PATH-1]={}
|
||||
pg_tblspc/2/[TS_PATH-1]/32768={}
|
||||
|
||||
[target:path:default]
|
||||
group="[GROUP-1]"
|
||||
mode="0700"
|
||||
user="[USER-1]"
|
||||
|
||||
+ supplemental file: [TEST_PATH]/backup/repo/backup/db/backup.info
|
||||
------------------------------------------------------------------
|
||||
[backrest]
|
||||
backrest-checksum="[CHECKSUM]"
|
||||
backrest-format=5
|
||||
backrest-version="[VERSION-1]"
|
||||
|
||||
[backup:current]
|
||||
[BACKUP-FULL-3]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"full","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-5]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-6]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
[BACKUP-DIFF-7]={"backrest-format":5,"backrest-version":"[VERSION-1]","backup-archive-start":null,"backup-archive-stop":null,"backup-info-repo-size":[SIZE],"backup-info-repo-size-delta":[DELTA],"backup-info-size":[SIZE],"backup-info-size-delta":[DELTA],"backup-prior":"[BACKUP-FULL-3]","backup-reference":["[BACKUP-FULL-3]"],"backup-timestamp-start":[TIMESTAMP],"backup-timestamp-stop":[TIMESTAMP],"backup-type":"diff","db-id":1,"option-archive-check":true,"option-archive-copy":true,"option-backup-standby":false,"option-checksum-page":false,"option-compress":false,"option-hardlink":false,"option-online":false}
|
||||
|
||||
[db]
|
||||
db-catalog-version=201409291
|
||||
db-control-version=942
|
||||
db-id=1
|
||||
db-system-id=6353949018581704918
|
||||
db-version="9.4"
|
||||
|
||||
[db:history]
|
||||
1={"db-catalog-version":201409291,"db-control-version":942,"db-system-id":6353949018581704918,"db-version":"9.4"}
|
||||
|
@@ -136,7 +136,7 @@ my $oTestDef =
|
||||
[
|
||||
{
|
||||
&TESTDEF_NAME => 'unit',
|
||||
&TESTDEF_TOTAL => 7,
|
||||
&TESTDEF_TOTAL => 1,
|
||||
},
|
||||
{
|
||||
&TESTDEF_NAME => 'option',
|
||||
|
@@ -28,10 +28,11 @@ sub run
|
||||
my $oConfig = {};
|
||||
my $strConfigFile = $self->testPath() . '/pgbackrest.conf';
|
||||
optionSet(OPTION_CONFIG, $strConfigFile, true);
|
||||
commandSet(CMD_LOCAL);
|
||||
|
||||
if ($self->begin('valid option ' . OPTION_DB_PORT . ' under invalid section'))
|
||||
if ($self->begin('Config::configFileValidate()'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_DB_PORT} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
@@ -40,11 +41,9 @@ sub run
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is a stanza section option and is not valid in" .
|
||||
" section " . CONFIG_SECTION_GLOBAL . "\nHINT: global options can be specified in global or stanza sections but" .
|
||||
" not visa-versa"});
|
||||
}
|
||||
|
||||
if ($self->begin('valid option ' . OPTION_DB_PORT . ' for command ' . CMD_BACKUP . ' under invalid global section'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_BACKUP}{&OPTION_DB_PORT} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
@@ -53,54 +52,53 @@ sub run
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is a stanza section option and is not valid in" .
|
||||
" section " . CONFIG_SECTION_GLOBAL ."\nHINT: global options can be specified in global or stanza sections but" .
|
||||
" not visa-versa"});
|
||||
}
|
||||
|
||||
if ($self->begin('valid option ' . OPTION_DB_PORT . ' under invalid stanza section command'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{$self->stanza() . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_DB_PORT} = 1234;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false,
|
||||
'valid option ' . OPTION_DB_PORT . ' under invalid stanza section command',
|
||||
{strLogExpect =>
|
||||
"WARN: $strConfigFile valid option '" . OPTION_DB_PORT . "' is not valid for command '" . CMD_ARCHIVE_PUSH ."'"});
|
||||
}
|
||||
|
||||
if ($self->begin('invalid option'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, false, 'invalid option ' . $$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS},
|
||||
{strLogExpect => "WARN: $strConfigFile file contains invalid option '" . BOGUS . "'"});
|
||||
}
|
||||
|
||||
if ($self->begin('valid alt name'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{'thread-max'} = 3;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid alt name found');
|
||||
}
|
||||
|
||||
if ($self->begin('valid config file'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_LOG_LEVEL_STDERR} = OPTION_DEFAULT_LOG_LEVEL_STDERR;
|
||||
$$oConfig{$self->stanza()}{&OPTION_DB_PATH} = '/db';
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_PROCESS_MAX} = 2;
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid config file');
|
||||
}
|
||||
|
||||
if ($self->begin('valid unusual section name'))
|
||||
{
|
||||
my $oConfig = {};
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&OPTION_LOG_LEVEL_STDERR} = OPTION_DEFAULT_LOG_LEVEL_STDERR;
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL . ':' . &CMD_ARCHIVE_PUSH}{&OPTION_PROCESS_MAX} = 2;
|
||||
$$oConfig{'unusual-section^name!:' . &CMD_CHECK}{&OPTION_DB_PATH} = '/db';
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'valid unusual section name');
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------------------------
|
||||
$oConfig = {};
|
||||
$$oConfig{&CONFIG_SECTION_GLOBAL}{&BOGUS} = BOGUS;
|
||||
|
||||
# Change command to indicate remote
|
||||
commandSet(CMD_REMOTE);
|
||||
|
||||
$self->testResult(sub {configFileValidate($oConfig)}, true, 'invalid option but config file not validated on remote');
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1135,6 +1135,39 @@ sub run
|
||||
{oLogTest => $self->expect(), bRemote => $bRemote});
|
||||
}
|
||||
|
||||
# Test config file validation
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
if ($bNeutralTest)
|
||||
{
|
||||
if ($bRemote)
|
||||
{
|
||||
# Save off config file and add an invalid option to the remote (DB master) and confirm no warning thrown
|
||||
executeTest("cp " . $oHostDbMaster->backrestConfig() . " " . $oHostDbMaster->backrestConfig() . ".save");
|
||||
$oHostDbMaster->executeSimple("echo " . BOGUS . "=" . BOGUS . " >> " . $oHostDbMaster->backrestConfig(), undef,
|
||||
'root');
|
||||
|
||||
$strBackup = $oHostBackup->backup(
|
||||
$strType, 'config file not validated on remote', {oExpectedManifest => \%oManifest,
|
||||
strOptionalParam => '--log-level-console=detail'});
|
||||
|
||||
executeTest('sudo rm '. $oHostDbMaster->backrestConfig());
|
||||
executeTest("mv " . $oHostDbMaster->backrestConfig() . ".save" . " " . $oHostDbMaster->backrestConfig());
|
||||
}
|
||||
else
|
||||
{
|
||||
# Save off config file and add an invalid option to the local backup host and confirm a warning is thrown
|
||||
executeTest("cp " . $oHostBackup->backrestConfig() . " " . $oHostBackup->backrestConfig() . ".save");
|
||||
$oHostBackup->executeSimple("echo " . BOGUS . "=" . BOGUS . " >> " . $oHostBackup->backrestConfig(), undef, 'root');
|
||||
|
||||
$strBackup = $oHostBackup->backup(
|
||||
$strType, 'config file warning on local', {oExpectedManifest => \%oManifest,
|
||||
strOptionalParam => '--log-level-console=detail 2>&1'});
|
||||
|
||||
executeTest('sudo rm '. $oHostBackup->backrestConfig());
|
||||
executeTest("mv " . $oHostBackup->backrestConfig() . ".save" . " " . $oHostBackup->backrestConfig());
|
||||
}
|
||||
}
|
||||
|
||||
# Test backup from standby warning that standby not configured so option reset
|
||||
#-----------------------------------------------------------------------------------------------------------------------
|
||||
if (!defined($oHostDbStandby) && $bNeutralTest)
|
||||
|
Reference in New Issue
Block a user