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
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
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
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
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
6fd0c3dcaa
Improved lock implementation written in C.
...
Now only two types of locks can be taken: archive and backup. Most commands use one or the other but the stanza-* commands acquire both locks. This provides better protection than the old command-based locking scheme.
2018-04-11 09:36:12 -04: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
David Steele
74d6398ad2
The pgbackrest executable is now a C binary instead of Perl.
...
This allows certain time-critical commands (like async archive-push) to run more quickly.
2017-11-26 18:43:51 -05:00
David Steele
ac54aac448
Fixed an issue passing parameters to remotes.
...
When more than one db was specified the path, port, and socket path would for db1 were passed no matter which db was actually being addressed.
Reported by Uspen.
2017-11-21 13:17:44 -05:00
David Steele
c77fc1fa61
Refactor protocol param generation into a new function.
...
This allows the code to be tested more precisely and doesn't require executing a remote process.
2017-11-21 12:57:00 -05:00
David Steele
062e714307
Disable gzip filter when --compress-level-network=0.
...
The filter was used with compress level set to 0 which added overhead without any benefit.
2017-11-21 09:31:15 -05:00
David Steele
04e55fe71b
Fixed an issue that could cause copying large manifests to fail during restore.
...
Reported by Craig A. James.
2017-11-14 14:48:44 -05:00
Cynthia Shang
b03c26968a
Repository encryption support.
...
Contributed by Cynthia Shang.
2017-11-06 12:51:12 -05:00
David Steele
ac542788da
Convert configuration definitions from auto-generated functions to auto-generated data structures.
2017-11-02 08:14:13 -04:00
David Steele
d989cf8ac2
Replace dynamically built class hierarchies in I/O layer with fixed parent() calls.
2017-10-22 19:07:17 -04:00
David Steele
e1cb9ae86a
Improve labeling for errors in helper processes.
2017-10-21 14:40:14 -04:00
David Steele
44c7c0475a
Improve protocol error handling.
...
In particular, "stop" errors are no longer reported as "unexpected".
2017-10-21 14:11:33 -04:00
David Steele
904b83747c
Perl error handler recognizes errors thrown from the C library.
2017-10-16 10:47:31 -04:00
David Steele
266c9ddcc1
Fixed an issue where some db-* options (e.g. db-port) were not being passed to remotes.
2017-09-19 10:14:18 -04:00
David Steele
81ffd09445
Fixed an issue with keep-alives not being sent to the remote from the local process.
...
Reported by William Cox.
2017-08-30 08:41:46 -04:00
David Steele
1e0ed07455
Configuration rules are now pulled from the C library when present.
2017-08-25 16:47:47 -04:00
Cynthia Shang
ce2b18c5b8
Added --backup-ssh-port and --db-ssh-port options to support non-default SSH ports.
...
Contributed by Cynthia Shang.
2017-08-01 10:34:53 -04:00
David Steele
156fd4d54d
Add bIgnoreMissing parameter to Local->manifest().
2017-07-25 12:44:38 -04:00
David Steele
918c1c6f49
Add s3-repo-ca-path and s3-repo-ca-file options.
...
The options accommodate systems where CAs are not automatically found by IO::Socket::SSL, i.e. RHEL7, or to load custom CAs.
Suggested by Scott Frazer.
2017-06-22 18:22:49 -04:00
David Steele
11ee528e0e
Rename Archive modules to remove redundancy.
2017-06-21 08:02:21 -04:00
David Steele
6e29f616b3
Harden protocol handshake to handle race conditions.
2017-06-15 15:12:28 -04:00
David Steele
051c961151
S3 repository support.
2017-06-12 10:52:32 -04:00
David Steele
de7fc37f88
Storage and IO layer refactor:
...
Refactor storage layer to allow for new repository filesystems using drivers. (Reviewed by Cynthia Shang.)
Refactor IO layer to allow for new compression formats, checksum types, and other capabilities using filters. (Reviewed by Cynthia Shang.)
2017-06-09 17:51:41 -04:00
David Steele
5296747271
Move backup modules into Backup directory.
2017-05-15 16:01:00 -04:00
David Steele
2a23157bf2
Move modules in Protocol directory in subdirectories.
2017-05-15 11:12:14 -04:00
David Steele
f207dc7123
Renumber return codes between 25 and 125 to avoid PostgreSQL interpreting some as fatal signal exceptions.
...
Suggested by Yogesh Sharma.
2017-04-12 12:41:34 -04:00
David Steele
eb4918d018
Fixed locking bug and refactoring.
...
* Fixed an issue where read-only operations that used local worker processes (i.e. restore) were creating write locks that could interfere with parallel archive-push. (Reported by Jens Wilke.)
* Simplify locking scheme. Now, only the master process will hold write locks (archive-push, backup) and not all the local and remote worker processes as before.
2017-04-07 10:31:49 -04:00
David Steele
6b99d770b5
Reduced the likelihood of torn pages causing a false positive in page checksums by filtering on start backup LSN.
2017-01-30 13:59:00 -05:00
David Steele
43ada9fb33
Improved, multi-process implementation of asynchronous archiving.
2017-01-27 11:02:27 -05:00
David Steele
2a9ba877e1
Refactor process IO and process master/minion code out from the common protocol code.
2017-01-27 10:06:16 -05:00
David Steele
e876a222fc
Fixed an issue where protocol mismatch errors did not output the expected value.
2017-01-24 14:58:55 -05:00
David Steele
7d1347cdec
Split the archive-get and archive-push commands into separate modules.
2017-01-10 19:59:32 -05:00
David Steele
155c808163
Split the check command out of the Archive.pm module.
2017-01-10 19:54:51 -05:00
David Steele
b58045f575
Moved the Archive modules to the Archive directory.
2017-01-10 19:51:20 -05:00
David Steele
0e4f51c271
Added integration for testing coverage with Devel::Cover.
2017-01-09 20:49:04 -05:00
David Steele
36a5349b1c
Added the --checksum-page option.
...
This option allows pgBackRest to validate page checksums in data files when checksums are enabled on PostgreSQL >= 9.3. Note that this functionality requires a C library which may not initially be available in OS packages. The option will automatically be enabled when the library is present and checksums are enabled on the cluster.
2016-12-12 18:54:07 -05:00
David Steele
6dd0829033
File copy protocol now accepts a function that can do additional processing on the copy buffers and return a result to the calling process.
2016-12-12 18:47:17 -05:00
David Steele
b4884e5a0b
Fixed an issue where the db-port option specified on the backup server would not be properly passed to the remote unless it was from the first configured database.
...
Reported by Michael Vitale.
2016-12-10 14:05:28 -05:00
David Steele
b45e0d8189
Fixed issues in the protocol layer when additional message fields were added.
2016-12-10 09:09:16 -05:00
David Steele
896984848b
Improved errors returned from child processes by removing redundant error level and code.
2016-12-04 17:51:00 -05:00
David Steele
2e01e6b9e1
Improved consistency and flexibility of the protocol layer by using JSON for all messages.
2016-12-03 17:34:51 -05:00
David Steele
a850335015
Simplified the result hash of File->manifest(), Db->tablespaceMapGet(), and Db->databaseMapGet().
2016-11-30 14:36:39 -05:00
David Steele
4e9f8da9a6
Improved IO->bufferRead to always return requested number of bytes until EOF.
2016-11-30 14:18:12 -05:00
David Steele
21ca412702
Fixed an issue where a backup could error if no changes were made to a database between backups and only pg_control changed.
2016-11-05 19:22:30 +02:00