Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 40 million developers.Sign up
- Fix missing files corrupting the manifest. If a file was removed by PostgreSQL during the backup (or was missing from the standby) then the next file might not be copied and updated in the manifest. If this happened then the backup would error when restored. (Reviewed by Cynthia Shang. Reported by Vitaliy Kukharik.)
- Use pkg-config instead of xml2-config for libxml2 build options. (Contributed by David Steele, Adrian Vondendriesch.)
- Validate checksums are set in the manifest on backup/restore. (Reviewed by Cynthia Shang.)
- Fix error in timeline conversion. The timeline is required to verify WAL segments in the archive after a backup. The conversion was performed base 10 instead of 16, which led to errors when the timeline was ≥ 0xA. (Reported by Lukas Ertl, Eric Veldhuyzen.)
- Fix options being ignored by asynchronous commands. The asynchronous archive-get/archive-push processes were not loading options configured in command configuration sections, e.g. [global:archive-get]. (Reviewed by Cynthia Shang. Reported by Urs Kramer.)
- Fix handling of \ in filenames. \ was not being properly escaped when calculating the manifest checksum which prevented the manifest from loading. Since instances of \ in cluster filenames should be rare to nonexistent this does not seem likely to be a serious problem in the field.
- pgBackRest is now pure C.
- Add pg-user option. Specifies the database user name when connecting to PostgreSQL. If not specified pgBackRest will connect with the local OS user or PGUSER, which was the previous behavior. (Contributed by Mike Palmiotto.)
- Allow path-style URIs in S3 driver.
- The backup command is implemented entirely in C. (Reviewed by Cynthia Shang.)
- Fix archive-push/archive-get when PGDATA is symlinked. These commands tried to use cwd() as PGDATA but this would disagree with the path configured in pgBackRest if PGDATA was symlinked. If cwd() does not match the pgBackRest path then chdir() to the path and make sure the next cwd() matches the result from the first call. (Reported by Stephen Frost, Milosz Suchy.)
- Fix reference list when backup.info is reconstructed in expire command. Since the backup command is still using the Perl version of reconstruct this issue will not express unless 1) there is a backup missing from backup.info and 2) the expire command is run directly instead of running after backup as usual. This unlikely combination of events means this is probably not a problem in the field.
- Fix segfault on unexpected EOF in gzip decompression. (Reported by Stephen Frost.)
- Fix remote timeout in delta restore. When performing a delta restore on a largely unchanged cluster the remote could timeout if no files were fetched from the repository within protocol-timeout. Add keep-alives to prevent remote timeout. (Reported by James Sewell, Jens Wilke.)
- Fix handling of repeated HTTP headers. When HTTP headers are repeated they should be considered equivalent to a single comma-separated header rather than generating an error, which was the prior behavior. (Reported by donicrosby.)
- JSON output from the info command is no longer pretty-printed. Monitoring systems can more easily ingest the JSON without linefeeds. External tools such as jq can be used to pretty-print if desired. (Contributed by Cynthia Shang.)
- The check command is implemented entirely in C. (Contributed by Cynthia Shang.)
- Document how to contribute to pgBackRest. (Contributed by Cynthia Shang.)
- Document maximum version for auto-stop option. (Contributed by Brad Nicholson.)
Test Suite Improvements:
- Fix container test path being used when --vm=none. (Suggested by Stephen Frost.)
- Fix mismatched timezone in expect test. (Suggested by Stephen Frost.)
- Don't autogenerate embedded libc code by default. (Suggested by Stephen Frost.)
- PostgreSQL 12 support.
- Add info command set option for detailed text output. The additional details include databases that can be used for selective restore and a list of tablespaces and symlinks with their default destinations. (Contributed by Cynthia Shang. Suggested by Stephen Frost, ejberdecia.)
- Add standby restore type. This restore type automatically adds standby_mode=on to recovery.conf for PostgreSQL < 12 and creates standby.signal for PostgreSQL ≥ 12, creating a common interface between PostgreSQL versions. (Reviewed by Cynthia Shang.)
- The restore command is implemented entirely in C. (Reviewed by Cynthia Shang.)
- Document the relationship between db-timeout and protocol-timeout. (Contributed by Cynthia Shang. Suggested by James Chanco Jr.)
- Add documentation clarifications regarding standby repositories. (Contributed by Cynthia Shang.)
- Add FAQ for time-based Point-in-Time Recovery. (Contributed by Cynthia Shang.)
- Improve slow manifest build for very large quantities of tables/segments. (Reported by Jens Wilke.)
- Fix exclusions for special files. (Reported by CluelessTechnologist, Janis Puris, Rachid Broum.)
- The stanza-create/update/delete commands are implemented entirely in C. (Contributed by Cynthia Shang.)
- The start/stop commands are implemented entirely in C. (Contributed by Cynthia Shang.)
- Create log directories/files with 0750/0640 mode. (Suggested by Damiano Albani.)
Documentation Bug Fixes:
- Fix yum.p.o package being installed when custom package specified. (Reported by Joe Ayers, John Harvey.)
- Build pgBackRest as an unprivileged user. (Suggested by Laurenz Albe.)
- Retry S3 RequestTimeTooSkewed errors instead of immediately terminating. (Reported by sean0101n, Tim Garton, Jesper St John, Aleš Zelený.)
- Fix incorrect handling of transfer-encoding response to HEAD request. (Reported by Pavel Suderevsky.)
- Fix scoping violations exposed by optimizations in gcc 9. (Reported by Christian Lange, Ned T. Crigler.)
- Add repo-s3-port option for setting a non-standard S3 service port.
- The local command for backup is implemented entirely in C. (Contributed by David Steele, Cynthia Shang.)
- The check command is implemented partly in C. (Reviewed by Cynthia Shang.)
- Fix archive retention expiring too aggressively. (Fixed by Cynthia Shang. Reported by Mohamad El-Rifai.)
- The expire command is implemented entirely in C. (Contributed by Cynthia Shang.)
- The local command for restore is implemented entirely in C.
- Remove hard-coded PostgreSQL user so $PGUSER works. (Suggested by Julian Zhang, Janis Puris.)
- Honor configure --prefix option. (Suggested by Daniel Westermann.)
- Rename repo-s3-verify-ssl option to repo-s3-verify-tls. The new name is preferred because pgBackRest does not support any SSL protocol versions (they are all considered to be insecure). The old name will continue to be accepted.
- Add FAQ to the documentation. (Contributed by Cynthia Shang.)
- Use wal_level=replica in the documentation for PostgreSQL ≥ 9.6. (Suggested by Patrick McLaughlin.)