You've already forked pgbackrest
							
							
				mirror of
				https://github.com/pgbackrest/pgbackrest.git
				synced 2025-10-30 23:37:45 +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
						David Steele
					
				
			
			
				
	
			
			
			
						parent
						
							74053ed842
						
					
				
				
					commit
					7e982f05f5
				
			| @@ -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