1
0
mirror of https://github.com/postgrespro/pg_probackup.git synced 2024-11-28 09:33:54 +02:00
Backup and recovery manager for PostgreSQL https://postgrespro.github.io/pg_probackup/
Go to file
2019-10-18 19:43:13 +03:00
src remove spooky warning about first segment been greater than oldest to_keep segments 2019-10-18 19:43:13 +03:00
tests Version 2.2.3 2019-10-15 21:51:15 +03:00
travis [Issue #101] Multiple spelling fixes. Reported by Alexander Lakhin 2019-07-23 20:11:11 +03:00
.gitignore PGPRO-2096: Use CRC-32 instead of CRC-32C 2018-10-26 17:49:39 +03:00
.travis.yml Travis tests 2016-09-16 00:26:18 +03:00
Documentation.md Documentation: update 2019-10-13 00:27:13 +03:00
gen_probackup_project.pl Windows: minor fix 2019-08-13 19:41:02 +03:00
LICENSE Update copyrights 2019-04-25 15:47:24 +03:00
Makefile [Issue #134] PostgreSQL 12 support 2019-10-18 12:36:42 +03:00
README.md Readme: update 2019-10-17 17:13:28 +03:00

pg_probackup

pg_probackup is a utility to manage backup and recovery of PostgreSQL database clusters. It is designed to perform periodic backups of the PostgreSQL instance that enable you to restore the server in case of a failure.

The utility is compatible with:

  • PostgreSQL 9.5, 9.6, 10, 11;

As compared to other backup solutions, pg_probackup offers the following benefits that can help you implement different backup strategies and deal with large amounts of data:

  • Incremental backup: page-level incremental backup allows you to save disk space, speed up backup and restore. With three different incremental modes you can plan the backup strategy in accordance with your data flow
  • Validation: automatic data consistency checks and on-demand backup validation without actual data recovery
  • Verification: on-demand verification of PostgreSQL instance via dedicated command checkdb
  • Retention: managing WAL archive and backups in accordance with retention policies - Time and/or Redundancy based, with two retention methods: delete expired and merge expired. Additionally you can design you own retention policy by setting 'time to live' for backups
  • Parallelization: running backup, restore, merge, delete, verificaton and validation processes on multiple parallel threads
  • Compression: storing backup data in a compressed state to save disk space
  • Deduplication: saving disk space by not copying the not changed non-data files ('_vm', '_fsm', etc)
  • Remote operations: backup PostgreSQL instance located on remote machine or restore backup on it
  • Backup from replica: avoid extra load on the master server by taking backups from a standby
  • External directories: add to backup content of directories located outside of the PostgreSQL data directory (PGDATA), such as scripts, configs, logs and pg_dump files
  • Backup Catalog: get list of backups and corresponding meta information in plain or json formats
  • Archive Catalog: get list of all WAL timelines and corresponding meta information in plain or json formats
  • Partial Restore: restore only the specified databases or exclude the specified databases from restore.

To manage backup data, pg_probackup creates a backup catalog. This directory stores all backup files with additional meta information, as well as WAL archives required for point-in-time recovery. You can store backups for different instances in separate subdirectories of a single backup catalog.

Using pg_probackup, you can take full or incremental backups:

  • Full backups contain all the data files required to restore the database cluster from scratch.
  • Incremental backups only store the data that has changed since the previous backup. It allows to decrease the backup size and speed up backup operations. pg_probackup supports the following modes of incremental backups:
    • PAGE backup. In this mode, pg_probackup scans all WAL files in the archive from the moment the previous full or incremental backup was taken. Newly created backups contain only the pages that were mentioned in WAL records. This requires all the WAL files since the previous backup to be present in the WAL archive. If the size of these files is comparable to the total size of the database cluster files, speedup is smaller, but the backup still takes less space.
    • DELTA backup. In this mode, pg_probackup read all data files in PGDATA directory and only those pages, that where changed since previous backup, are copied. Continuous archiving is not necessary for it to operate. Also this mode could impose read-only I/O pressure equal to Full backup.
    • PTRACK backup. In this mode, PostgreSQL tracks page changes on the fly. Continuous archiving is not necessary for it to operate. Each time a relation page is updated, this page is marked in a special PTRACK bitmap for this relation. As one page requires just one bit in the PTRACK fork, such bitmaps are quite small. Tracking implies some minor overhead on the database server operation, but speeds up incremental backups significantly.

Regardless of the chosen backup type, all backups taken with pg_probackup support the following strategies of WAL delivery:

  • Autonomous backups streams via replication protocol all the WAL files required to restore the cluster to a consistent state at the time the backup was taken. Even if continuous archiving is not set up, the required WAL segments are included into the backup.
  • Archive backups rely on continuous archiving.

ptrack support

PTRACK backup support provided via following options:

  • vanilla PostgreSQL compiled with ptrack patch. Currently there are patches for PostgreSQL 9.6 and PostgreSQL 10
  • Postgres Pro Standard 9.5, 9.6, 10, 11
  • Postgres Pro Enterprise 9.5, 9.6, 10

Limitations

pg_probackup currently has the following limitations:

  • The server from which the backup was taken and the restored server must be compatible by the block_size and wal_block_size parameters and have the same major release number.
  • Incremental chain can span only within one timeline. So if you have backup incremental chain taken from replica and it gets promoted, you would be forced to take another FULL backup.

Current release

2.2.3

Installation and Setup

Windows Installation

Installers are available in release assets. Latests.

Linux Installation

#DEB Ubuntu|Debian Packages
sudo echo "deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)" > /etc/apt/sources.list.d/pg_probackup.list
sudo wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | sudo apt-key add - && sudo apt-get update
sudo apt-get install pg-probackup-{11,10,9.6,9.5}
sudo apt-get install pg-probackup-{11,10,9.6,9.5}-dbg

#DEB-SRC Packages
sudo echo "deb-src [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)" >>\
  /etc/apt/sources.list.d/pg_probackup.list
sudo apt-get source pg-probackup-{11,10,9.6,9.5}

#RPM Centos Packages
rpm -ivh http://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-centos.noarch.rpm
yum install pg_probackup-{11,10,9.6,9.5}
yum install pg_probackup-{11,10,9.6,9.5}-debuginfo

#RPM RHEL Packages
rpm -ivh http://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-rhel.noarch.rpm
yum install pg_probackup-{11,10,9.6,9.5}
yum install pg_probackup-{11,10,9.6,9.5}-debuginfo

#RPM Oracle Linux Packages
rpm -ivh http://repo.postgrespro.ru/pg_probackup/keys/pg_probackup-repo-oraclelinux.noarch.rpm
yum install pg_probackup-{11,10,9.6,9.5}
yum install pg_probackup-{11,10,9.6,9.5}-debuginfo

#SRPM Packages
yumdownloader --source pg_probackup-{11,10,9.6,9.5}

Once you have pg_probackup installed, complete the setup.

Building from source

Linux

To compile pg_probackup, you must have a PostgreSQL installation and raw source tree. To install pg_probackup, execute this in the module's directory:

make USE_PGXS=1 PG_CONFIG=<path_to_pg_config> top_srcdir=<path_to_PostgreSQL_source_tree>

Windows

Currently pg_probackup can be build using only MSVC 2013. Build PostgreSQL using pgwininstall or PostgreSQL instruction with MSVC 2013. If zlib support is needed, src/tools/msvc/config.pl must contain path to directory with compiled zlib. Example

CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall" amd64
SET PATH=%PATH%;C:\Perl64\bin
SET PATH=%PATH%;C:\msys64\usr\bin
gen_probackup_project.pl C:\path_to_postgresql_source_tree

Documentation

Documentation for the latest version can be found at github. Documentation for the current devel version can also be found at github.

License

This module available under the license similar to PostgreSQL.

Feedback

Do not hesitate to post your issues, questions and new ideas at the issues page.

Authors

Postgres Professional, Moscow, Russia.

Credits

pg_probackup utility is based on pg_arman, that was originally written by NTT and then developed and maintained by Michael Paquier.