David Steele
c638490451
Documentation updates for exclude feature based on review.
...
Reviewed by Cynthia Shang.
2018-08-28 16:49:29 -04:00
David Steele
14cde54b37
Limit manifest build recursion (i.e. links followed) to sixteen levels to detect link loops.
2018-08-28 16:27:10 -04:00
David Steele
a6cecf7d5e
Prevent manifest from being built more than once.
2018-08-28 16:22:30 -04:00
David Steele
bef58a7974
Allow arbitrary directories and/or files to be excluded from a backup.
...
Misuse of this feature can lead to inconsistent backups so read the --exclude documentation carefully before using.
2018-08-27 15:51:05 -04:00
Cynthia Shang
eb30d88b6a
Allow zero-size files in backup manifest to reference a prior manifest regardless of timestamp delta.
...
Contributed by Cynthia Shang.
2018-08-24 16:50:33 -04:00
David Steele
0ed37ab9e7
Update Archive::Info->archiveIdList() to return a valid error code instead of unknown.
2018-08-24 12:13:10 -04:00
David Steele
2276567027
Add log-subprocess option to allow file logging for local and remote subprocesses.
2018-08-22 20:05:49 -04:00
David Steele
3434240097
Remove incompletely implemented online option from the check command.
...
Offline operation runs counter to the purpose of this command, which is to check if archiving and backups are working correctly.
Reported by Jason O'Donnell.
2018-08-12 19:24:21 -04:00
Cynthia Shang
bec4c176dc
Exclude temporary and unlogged relation (table/index) files from backup.
...
Implemented using the same logic as the patches adding this feature to PostgreSQL, 8694cc96 and 920a5e50. Temporary relation exclusion is enabled in PostgreSQL ≥ 9.0. Unlogged relation exclusion is enabled in PostgreSQL ≥ 9.1, where the feature was introduced.
Contributed by Cynthia Shang.
2018-07-30 18:53:34 -04:00
Cynthia Shang
0acf705416
Require PostgreSQL catalog version when instantiating a Manifest object (and not loading it from disk).
...
Contributed by Cynthia Shang.
2018-07-16 17:25:15 -04:00
David Steele
22adb395db
Add zero-length file to mock/all test.
2018-07-05 15:40:50 -04:00
David Steele
db17973cd0
Fix critical bug in resume that resulted in inconsistent backups.
...
A regression in v0.82 removed the timestamp comparison when deciding which files from the aborted backup to keep on resume. All resumed backups should be considered inconsistent. A resumed backup can be identified by checking the log for the message "aborted backup of same type exists, will be cleaned to remove invalid files and resumed".
Reported by David Youatt, Yogesh Sharma, Stephen Frost.
2018-07-03 14:01:57 -04:00
David Steele
3d07e01fe9
Make ls ordering deterministic in mock/all test.
2018-07-01 20:02:37 -04:00
Andrew Schwartz
1bd98b61df
Fix non-compliant ISO-8601 timestamp format in S3 authorization headers.
...
AWS and some gateways were tolerant of space rather than zero-padded hours while others were not.
Fixed by Andrew Schwartz.
2018-07-01 08:17:27 -04:00
David Steele
7b0e65d488
Improve the HTTP client to set content-length to 0 when not specified by the server.
...
S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either.
Suggested by Adam K. Sumner.
2018-06-26 17:27:22 -04:00
David Steele
350b30fa49
Move cryptographic hash functions to C using OpenSSL.
2018-06-11 14:52:26 -04:00
David Steele
ada5c5c0d9
Fix archive write lock being taken for the synchronous archive-get command.
...
Reported by Uspen.
2018-05-21 10:46:45 -04:00
David Steele
a1be8e16cd
Update SSL error message test on CentOS 7.
2018-05-11 10:39:36 -04:00
David Steele
c3a8fbe706
Add _FMT variants for all THROW macros so format types are checked by the compiler.
2018-05-03 11:24:29 -04:00
Yogesh Sharma
6a40c916d4
Add repo-s3-token option to allow temporary credentials tokens to be configured.
...
pgBackRest currently has no way to request new credentials so the entire command (e.g. backup, restore) must complete before the credentials expire.
Contributed by Yogesh Sharma.
2018-05-02 14:06:40 -04:00
David Steele
5e090ba305
Fix failure in manifest build when two or more files in PGDATA are linked to the same directory.
...
Reported by Vitaliy Kukharik.
2018-05-02 12:19:54 -04:00
David Steele
8dbbf2de92
Fix archive-copy throwing "path not found" error for incr/diff backups.
...
Reported by yummyliu, Vitaliy Kukharik.
2018-05-01 12:37:06 -04:00
David Steele
71ba08f579
Use path list in the backup manifest to do restore path syncs.
...
Remove recursive path sync functionality since it is no longer used.
2018-05-01 11:05:37 -04:00
David Steele
54dd6f3ed4
Add asynchronous, parallel archive-get.
...
This feature maintains a queue of WAL segments to help reduce latency when PostgreSQL requests a WAL segment with restore_command.
2018-04-30 17:27:39 -04:00
David Steele
89d3476e32
Refactor archive common functions in preparation for parallel async archive-get.
2018-04-29 10:16:59 -04:00
David Steele
88a633da17
Divide tests into three types (unit, integration, performance).
...
Many options that were set per test can instead be inferred from the types, i.e. container, c, expect, and individual.
Also finish renaming Perl unit tests with the -perl suffix.
2018-04-24 09:12:25 -04:00
Cynthia Shang
27aa5f756e
Add support for additional pgBackRest configuration files.
...
Configuration files are loaded from the directory specified by the --config-include-path option.
Add --config-path option for overriding the default base path of the --config and --config-include-path option.
Contributed by Cynthia Shang.
2018-04-19 11:09:39 -04:00
David Steele
79b7552940
Rename archive-queue-max option to archive-push-queue-max.
...
This avoids confusion with the archive-get-queue-max option. The old option name will continue to be accepted.
2018-04-18 19:37:35 -04:00
David Steele
cf0ec44ede
Rename Perl tests so they don't conflict with their C counterparts.
2018-04-17 12:03:03 -04:00
David Steele
f0250dab4b
Move async forking and more error handling to C.
...
The Perl process was exiting directly when called but that interfered with proper locking for the forked async process. Now Perl returns results to the C process which handles all errors, including signals.
2018-04-12 20:42:26 -04:00
David Steele
3bcf637aee
Move archive-stop and expire tests to the mock module.
...
These are mock integration tests so they should be grouped with the other mock integration tests.
2018-04-08 12:57:02 -04:00
David Steele
3b661f4ad5
Move help/version integration tests to mock/all.
...
Help and version are covered by unit tests, so we really just to need to make sure there is output when called from the command line.
2018-04-08 12:16:32 -04:00
David Steele
c1ab7b3c98
Start work on C handle io object and use it to output help.
2018-03-25 11:39:24 -04:00
Cynthia Shang
f0a4264f77
Fix manifest test in the check command when tablespaces are present.
...
Fixed by Cynthia Shang.
Reported by Thomas Flatley.
2018-03-19 19:54:03 -04:00
David Steele
e331564c90
Add new test for Common::Io::Process.
...
Show that output on stderr will raise an exception on close() even if the exit code is 0.
2018-03-08 12:36:55 -05:00
David Steele
64a7196cb6
Rename retention-* options to repo-retention-*.
2018-02-19 15:07:24 -05:00
David Steele
7d13087c4b
Rename -no to -reset for non-boolean options.
2018-02-06 11:26:06 -05:00
David Steele
be90028100
Rename db-* options to pg-* and backup-* options to repo-* to improve consistency.
...
* repo-* options are now indexed although only one is allowed.
* List deprecated option names in documentation and command-line help.
2018-02-03 18:27:38 -05:00
Cynthia Shang
dc73abdb6e
Improve stanza-create command so that it does not error when the stanza already exists.
...
Contributed by Cynthia Shang.
2018-02-01 14:12:03 -05:00
Cynthia Shang
bacc08792d
Ensure latest db-id is selected on when matching archive.info to backup.info.
...
This provides correct matching in the event there are system-id and db-version duplicates (e.g. after reverting a pg_upgrade).
Fixed by Cynthia Shang.
Reported by Adam K. Sumner.
2018-01-30 16:49:47 -05:00
Cynthia Shang
00f58ec8c0
Fixed inability to restore a single database contained in a tablespace using --db-include.
...
Fixed by Cynthia Shang.
2018-01-30 16:13:54 -05:00
David Steele
a91a648019
Config parsing no longer implemented in Perl.
...
Options are passed to Perl as JSON from the C process.
2018-01-28 21:37:09 -05:00
David Steele
404ec30d03
Move Perl help test to real module.
2018-01-23 12:58:35 -05:00
David Steele
2cc9b2287b
The archive-push command is now partially coded in C.
...
This allows the PostgreSQL archive_command to run significantly faster when processing status messages from the asynchronous archive process.
2018-01-17 15:52:00 -05:00
David Steele
d992851456
Rename Perl tests so they don't conflict with their C counterparts.
2018-01-16 12:36:22 -05:00
Cynthia Shang
0e9ba98a50
Add stanza-delete command to cleanup unused stanzas.
...
Contributed by Cynthia Shang.
2018-01-03 12:23:33 -05:00
David Steele
d8c575801d
Add Ini object.
2017-12-22 22:55:17 -05:00
Cynthia Shang
c34a76690f
Fixed info command to eliminate "db (prior)" output if no backups or archives exist for a prior version of the cluster.
...
Fixed by Cynthia Shang.
Reported by Stephen Frost.
2017-12-19 15:39:39 -05:00
David Steele
ef3ef85c33
Fixed an issue where WAL was not expired on PostgreSQL 10.
...
This was caused by a faulty regex that expected all PostgreSQL major versions to be X.X.
Reported by Adam Brusselback.
2017-12-18 18:51:19 -05:00
Cynthia Shang
e5511d0f82
Improve check command to verify that the backup manifest can be built.
...
Contributed by Cynthia Shang.
2017-12-13 11:16:27 -05:00