pg_rman is an online backup and restore tool for PostgreSQL.
The goal of the pg_rman project is to provide a method for online backup and PITR that is as easy as pg_dump. Also, it maintains a backup catalog per database cluster. Users can maintain old backups including archive logs with one command.
There are several branches within pg_rman repository in order to work with different PostgreSQL server versions without introducing server version check code blocks. Please choose a branch to match the PostgreSQL version you will be building pg_rman against.
- master : branch for latest PostgreSQL development version
- REL_13_STABLE : branch for PostgreSQL 13.0
- REL_12_STABLE : branch for PostgreSQL 12.0
- REL_11_STABLE : branch for PostgreSQL 11.0
- REL_10_STABLE : branch for PostgreSQL 10.0
- REL9_6_STABLE : branch for PostgreSQL 9.6
- REL9_5_STABLE : branch for PostgreSQL 9.5
How to use
To take an online backup, use the
$ pg_rman backup --backup-mode=full --with-serverlog INFO: copying database files INFO: copying archived WAL files INFO: copying server log files INFO: backup complete INFO: Please execute 'pg_rman validate' to verify the files are correctly copied.
To list all the backups taken so far, use the
$ pg_rman show ===================================================================== StartTime EndTime Mode Size TLI Status ===================================================================== 2015-03-27 14:59:47 2015-03-27 14:59:49 FULL 3404kB 3 OK 2015-03-27 14:59:19 2015-03-27 14:59:20 ARCH 26kB 3 OK 2015-03-27 14:59:00 2015-03-27 14:59:01 ARCH 26kB 3 OK 2015-03-27 14:58:46 2015-03-27 14:58:48 FULL 3516kB 3 OK 2015-03-27 11:43:31 2015-03-27 11:43:32 INCR 54kB 1 OK 2015-03-27 11:43:19 2015-03-27 11:43:20 INCR 69kB 1 OK 2015-03-27 11:43:04 2015-03-27 11:43:05 INCR 151kB 1 OK 2015-03-27 11:42:56 2015-03-27 11:42:56 INCR 96kB 1 OK 2015-03-27 11:34:55 2015-03-27 11:34:58 FULL 5312kB 1 OK
To restore from a backup, use the
restore command. Up to PostgreSQL11, note that pg_rman itself generates the
recovery.conf file required to perform PostgreSQL PITR.
$ pg_ctl stop -m immediate $ pg_rman restore $ cat $PGDATA/recovery.conf # recovery.conf generated by pg_rman 1.3.11 restore_command = 'cp /home/postgres/arclog/%f %p' recovery_target_timeline = '1' $ pg_ctl start
After to PostgreSQL12, note that pg_rman itself added PostgreSQL PITR related options to
postgresql.conf file and generates the
recovery.signal file in sub directory of PGBASE
To see more options to use with each command, run
Also, see the documentation for detailed usage:
How to build and install from source code
Go to the top directory of pg_rman source tree and run the following commands:
$ make # make install
The following packages need to be installed as a prerequisite.
How to run regression tests
Start PostgreSQL server and run the below command.
$ make installcheck